@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); })
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago