1.58.1 • Published 2 days ago

@voiceflow/react-chat v1.58.1

Weekly downloads
-
License
MIT
Repository
-
Last release
2 days ago

react-chat

Installation

yarn add @voiceflow/react-chat

Usage

For a more complete example see our demo-react-chat repository.

import {
  Chat,
  ChatWindow,
  Launcher,
  SessionStatus,
  SystemResponse,
  TurnType,
  UserResponse,
  useRuntime,
} from '@voiceflow/react-chat';
import { useState } from 'react';
import { match } from 'ts-pattern';

const IMAGE = 'https://picsum.photos/seed/1/200/300';
const AVATAR = 'https://picsum.photos/seed/1/80/80';

const MyChat: React.FC = () => {
  const [open, setOpen] = useState(false);

  const runtime = useRuntime({
    verify: { authorization: '< DIALOG API KEY >' },
    session: { userID: '< UNIQUE USER ID >' },
  });

  const handleLaunch = async () => {
    setOpen(true);
    await runtime.launch();
  };

  const handleEnd = () => {
    runtime.setStatus(SessionStatus.ENDED);
    setOpen(false);
  };

  if (!open) {
    return (
      <span
        style={{
          position: 'absolute',
          right: '2rem',
          bottom: '2rem',
        }}
      >
        <Launcher onClick={handleLaunch} />
      </span>
    );
  }

  return (
    <div
      style={{
        position: 'absolute',
        right: '1rem',
        top: '3rem',
        bottom: '3rem',
        width: '400px',
        border: '1px solid #ddd',
        borderRadius: '8px',
        overflowX: 'hidden',
        overflowY: 'scroll',
      }}
    >
      <ChatWindow.Container>
        <Chat
          title="My Assistant"
          description="welcome to my assistant"
          image={IMAGE}
          avatar={AVATAR}
          withWatermark
          startTime={runtime.session.startTime}
          hasEnded={runtime.isStatus(SessionStatus.ENDED)}
          isLoading={!runtime.session.turns.length}
          onStart={runtime.launch}
          onEnd={handleEnd}
          onSend={runtime.reply}
          onMinimize={handleEnd}
        >
          {runtime.session.turns.map((turn, turnIndex) =>
            match(turn)
              .with({ type: TurnType.USER }, ({ id, type: _, ...props }) => <UserResponse {...props} key={id} />)
              .with({ type: TurnType.SYSTEM }, ({ id, type: _, ...props }) => (
                <SystemResponse
                  key={id}
                  {...props}
                  avatar={AVATAR}
                  isLast={turnIndex === runtime.session.turns.length - 1}
                />
              ))
              .exhaustive()
          )}
          {runtime.indicator && <SystemResponse.Indicator avatar={AVATAR} />}
        </Chat>
      </ChatWindow.Container>
    </div>
  );
};
1.58.1

2 days ago

1.58.0

24 days ago

1.57.0

1 month ago

1.56.5

2 months ago

1.56.4

2 months ago

1.56.3

2 months ago

1.56.2

2 months ago

1.56.1

2 months ago

1.56.0

2 months ago

1.55.4

3 months ago

1.55.0

3 months ago

1.55.2

3 months ago

1.55.1

3 months ago

1.55.3

3 months ago

1.53.0

3 months ago

1.53.1

3 months ago

1.54.0

3 months ago

1.52.1

3 months ago

1.52.0

3 months ago

1.51.3

4 months ago

1.51.2

5 months ago

1.51.1

5 months ago

1.51.0

5 months ago

1.50.4

5 months ago

1.40.0

11 months ago

1.40.2

10 months ago

1.40.1

10 months ago

1.44.0

9 months ago

1.44.1

9 months ago

1.48.0

6 months ago

1.48.1

6 months ago

1.41.0

10 months ago

1.45.1

9 months ago

1.45.0

9 months ago

1.45.3

9 months ago

1.45.2

9 months ago

1.49.1

6 months ago

1.49.0

6 months ago

1.45.4

9 months ago

1.49.3

6 months ago

1.49.2

6 months ago

1.49.5

6 months ago

1.49.4

6 months ago

1.49.6

6 months ago

1.42.0

10 months ago

1.46.0

9 months ago

1.46.2

8 months ago

1.46.1

9 months ago

1.46.4

8 months ago

1.46.3

8 months ago

1.46.6

7 months ago

1.46.5

7 months ago

1.46.7

7 months ago

1.43.0

10 months ago

1.47.1

7 months ago

1.47.0

7 months ago

1.47.3

6 months ago

1.47.2

6 months ago

1.47.5

6 months ago

1.47.4

6 months ago

1.47.7

6 months ago

1.47.6

6 months ago

1.47.8

6 months ago

1.50.1

6 months ago

1.50.0

6 months ago

1.50.3

6 months ago

1.50.2

6 months ago

1.37.0

11 months ago

1.37.1

11 months ago

1.38.0

11 months ago

1.38.1

11 months ago

1.39.0

11 months ago

1.36.0

12 months ago

1.35.0

1 year ago

1.34.0

1 year ago

1.23.23

2 years ago

1.23.22

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.23.21

2 years ago

1.23.20

2 years ago

1.25.0

2 years ago

1.25.1

2 years ago

1.29.0

2 years ago

1.27.2

2 years ago

1.25.4

2 years ago

1.27.3

2 years ago

1.25.2

2 years ago

1.27.1

2 years ago

1.25.3

2 years ago

1.27.6

2 years ago

1.27.4

2 years ago

1.27.5

2 years ago

1.32.0

1 year ago

1.30.0

2 years ago

1.30.1

2 years ago

1.24.14

2 years ago

1.24.15

2 years ago

1.24.12

2 years ago

1.24.13

2 years ago

1.24.10

2 years ago

1.24.11

2 years ago

1.24.1

2 years ago

1.23.18

2 years ago

1.26.0

2 years ago

1.24.2

2 years ago

1.23.17

2 years ago

1.23.16

2 years ago

1.24.0

2 years ago

1.23.15

2 years ago

1.28.1

2 years ago

1.24.5

2 years ago

1.23.14

2 years ago

1.28.2

2 years ago

1.24.6

2 years ago

1.23.13

2 years ago

1.24.3

2 years ago

1.23.12

2 years ago

1.28.0

2 years ago

1.24.4

2 years ago

1.23.11

2 years ago

1.24.9

2 years ago

1.24.7

2 years ago

1.24.8

2 years ago

1.23.19

2 years ago

1.23.10

2 years ago

1.31.1

2 years ago

1.33.0

1 year ago

1.31.2

2 years ago

1.31.0

2 years ago

1.23.6

2 years ago

1.23.7

2 years ago

1.23.5

2 years ago

1.23.8

2 years ago

1.23.9

2 years ago

1.23.4

2 years ago

1.23.3

2 years ago

1.23.2

2 years ago

1.23.1

2 years ago

1.23.0

2 years ago

1.22.0

2 years ago

1.21.1

2 years ago

1.21.0

2 years ago

1.20.0

2 years ago

1.19.0

2 years ago

1.18.0

2 years ago

1.17.2

2 years ago

1.17.1

2 years ago

1.17.0

2 years ago

1.16.0

2 years ago

1.15.0

2 years ago

1.14.0

2 years ago

1.13.0

2 years ago

1.12.0

2 years ago

1.11.0

2 years ago

1.10.0

2 years ago

1.9.0

2 years ago

1.8.0

2 years ago

1.7.0

2 years ago

1.6.0

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago