@speechmatics/flow-client-react v0.2.1
Speechmatics Flow client (React) 🤖 ⚛
React hooks for interacting with the Speechmatics Flow API.
This package wraps the @speechmatics/flow-client package for use in React projects.
Installlation
npm i @speechmatics/flow-client-react!WARNING
For React Native, make sure to install theevent-target-polyfillpackage, or any other polyfill for theEventTargetclass
Usage
Use the
FlowProviderat a high level of your component tree:import { FlowProvider } from "@speechmatics/flow-client-react"; function RootLayout({children}) { <FlowProvider appId="your-app-id"> {children} </FlowProvider> }Note that
FlowProvideris a client component, like any other context provider. In NextJS, it's best to put this either in a root layout, or inside another client component. For frameworks like Remix which don't use React Server Components, it should work anywhere.Note for React Native: Pass
websocketBinaryType="arraybuffer"to theFlowProvideras it is more reliable than the Blob implementation.Inside a component below the
FlowProvider:function MyComponent() { const { startConversation, endConversation, sendAudio } = useFlow() }
Connect and start conversation
startConversationis a function which requires a JWT to open a websocket and begin a session.See our documentation about generating JWTs (temporary keys): https://docs.speechmatics.com/introduction/authentication#temporary-keys
An example credentials fetching flow can be found in the NextJS example. This uses a server action which calls the
@speechmatics/authpackage to get a temporary key to access the API from the browser.await startConversation(jwt, { config: { template_id: personaId, template_variables: {}, }, // `audioFormat` is optional. The value below is the default: audioFormat: { type: 'raw', encoding: 'pcm_s16le', // this can also be set to 'pcm_f32le' for 32-bit Float sample_rate: 16000, }, });
Sending audio
The
sendAudiofunction above accepts anyArrayBufferLike. You should send a buffer with the audio encoded as you requested when callingstartConversation(either 32-bit float or 16-bit signed integer PCM).
Listen for audio and messages
Incoming data from the Flow service can be subscribed to using the
useFlowEventListenerhook:// Handling Messages useFlowEventListener("message", ({ data }) => { if (data.message === "AddTranscript") { // handle transcript message } }); // Handling audio useFlowEventListener("agentAudio", (audio) => { // Incoming audio data is always 16-bit signed int PCM. // How you handle this depends on your environment. myPlayAudioFunction(audio.data); })
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
8 months ago
11 months ago
10 months ago
12 months ago
11 months ago
11 months ago
11 months ago
11 months ago
10 months ago
11 months ago
12 months ago
12 months ago