From ea5c245e4c1cf558d3e1d514b4cdd5c7d7764391 Mon Sep 17 00:00:00 2001 From: Yini Shi Date: Fri, 6 Sep 2024 09:42:30 -0400 Subject: [PATCH] clear player queue when assistant is paused (#262) --- .../next-app/components/ExampleComponent.tsx | 10 +++---- packages/embed-react/package.json | 2 +- packages/embed/package.json | 2 +- packages/react/README.md | 4 +-- packages/react/package.json | 2 +- packages/react/src/lib/VoiceProvider.tsx | 27 ++++++++++++------- 6 files changed, 28 insertions(+), 19 deletions(-) diff --git a/examples/next-app/components/ExampleComponent.tsx b/examples/next-app/components/ExampleComponent.tsx index 1cd115f..441564d 100644 --- a/examples/next-app/components/ExampleComponent.tsx +++ b/examples/next-app/components/ExampleComponent.tsx @@ -43,8 +43,8 @@ export const ExampleComponent = () => { callDurationTimestamp, sendUserInput, sendAssistantInput, - sendResumeAssistantMessage, - sendPauseAssistantMessage, + pauseAssistant, + resumeAssistant, chatMetadata, playerQueueLength, } = useVoice(); @@ -57,13 +57,13 @@ export const ExampleComponent = () => { const togglePaused = useCallback(() => { if (paused) { - sendResumeAssistantMessage({}); + resumeAssistant(); setPaused(false); } else { - sendPauseAssistantMessage({}); + pauseAssistant(); setPaused(true); } - }, [paused, sendPauseAssistantMessage, sendResumeAssistantMessage]); + }, [paused, resumeAssistant, pauseAssistant]); const pausedText = paused ? 'Resume' : 'Pause'; const assistantMessages = useMemo(() => { diff --git a/packages/embed-react/package.json b/packages/embed-react/package.json index 240f8b1..ece609d 100644 --- a/packages/embed-react/package.json +++ b/packages/embed-react/package.json @@ -1,6 +1,6 @@ { "name": "@humeai/voice-embed-react", - "version": "0.1.12", + "version": "0.1.13", "description": "", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/embed/package.json b/packages/embed/package.json index 16c8195..f6ceb2c 100644 --- a/packages/embed/package.json +++ b/packages/embed/package.json @@ -1,6 +1,6 @@ { "name": "@humeai/voice-embed", - "version": "0.1.12", + "version": "0.1.13", "description": "", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/react/README.md b/packages/react/README.md index a1b0e36..26857c7 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -113,8 +113,8 @@ export const ExampleComponent = () => { | `sendUserInput: (text: string) => void` | Send a user input message. | | `sendAssistantInput: (text: string) => void` | Send a text string for the assistant to read out loud. | | `sendToolMessage: (toolMessage: ToolResponse \| ToolError) => void` | Send a tool response or tool error message to the EVI backend. | -| `sendPauseAssistantMessage: () => void` | Send pause assistant message to the websocket. This pauses responses from EVI. Chat history is still saved and sent after resuming. | -| `sendResumeAssistantMessage: () => void` | Send resume assistant message to the websocket. This resumes responses from EVI. Chat history sent while paused will now be sent. | +| `pauseAssistant: () => void` | Pauses responses from EVI. Chat history is still saved and sent after resuming. | +| `resumeAssistant: () => void` | Resumes responses from EVI. Chat history sent while paused will now be sent. | ### Properties diff --git a/packages/react/package.json b/packages/react/package.json index 74e95e0..a4acb7f 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@humeai/voice-react", - "version": "0.1.12", + "version": "0.1.13", "description": "", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/packages/react/src/lib/VoiceProvider.tsx b/packages/react/src/lib/VoiceProvider.tsx index 8c4cdc7..e821915 100644 --- a/packages/react/src/lib/VoiceProvider.tsx +++ b/packages/react/src/lib/VoiceProvider.tsx @@ -68,8 +68,8 @@ export type VoiceContextType = { | Hume.empathicVoice.ToolResponseMessage | Hume.empathicVoice.ToolErrorMessage, ) => void; - sendPauseAssistantMessage: Hume.empathicVoice.chat.ChatSocket['pauseAssistant']; - sendResumeAssistantMessage: Hume.empathicVoice.chat.ChatSocket['resumeAssistant']; + pauseAssistant: () => void; + resumeAssistant: () => void; status: VoiceStatus; micFft: number[]; error: VoiceError | null; @@ -247,6 +247,15 @@ export const VoiceProvider: FC = ({ ), }); + const pauseAssistant = useCallback(() => { + client.sendPauseAssistantMessage(); + player.clearQueue(); + }, [client, player]); + + const resumeAssistant = useCallback(() => { + client.sendResumeAssistantMessage(); + }, [client]); + const connect = useCallback(async () => { updateError(null); setStatus({ value: 'connecting' }); @@ -383,8 +392,8 @@ export const VoiceProvider: FC = ({ sendUserInput: client.sendUserInput, sendAssistantInput: client.sendAssistantInput, sendSessionSettings: client.sendSessionSettings, - sendPauseAssistantMessage: client.sendPauseAssistantMessage, - sendResumeAssistantMessage: client.sendResumeAssistantMessage, + pauseAssistant, + resumeAssistant, sendToolMessage: client.sendToolMessage, status, unmute: mic.unmute, @@ -403,8 +412,8 @@ export const VoiceProvider: FC = ({ connect, disconnect, player.fft, - player.isPlaying, player.isAudioMuted, + player.isPlaying, player.muteAudio, player.unmuteAudio, player.queueLength, @@ -416,13 +425,14 @@ export const VoiceProvider: FC = ({ messageStore.lastVoiceMessage, messageStore.lastUserMessage, messageStore.clearMessages, + messageStore.chatMetadata, client.readyState, client.sendUserInput, client.sendAssistantInput, client.sendSessionSettings, client.sendToolMessage, - client.sendPauseAssistantMessage, - client.sendResumeAssistantMessage, + pauseAssistant, + resumeAssistant, status, error, isAudioError, @@ -430,8 +440,7 @@ export const VoiceProvider: FC = ({ isMicrophoneError, isSocketError, callDurationTimestamp, - toolStatus, - messageStore.chatMetadata, + toolStatus.store, ], );