40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import {RTVIClientHelper, RTVIClientHelperOptions, RTVIMessage} from "@pipecat-ai/client-js";
|
|
import {DailyRTVIMessageType} from '@pipecat-ai/daily-transport';
|
|
|
|
export type InstantVoiceHelperCallbacks = Partial<{
|
|
onAudioBufferingStarted: () => void;
|
|
onAudioBufferingStopped: () => void;
|
|
}>;
|
|
|
|
// --- Interface and class
|
|
export interface InstantVoiceHelperOptions extends RTVIClientHelperOptions {
|
|
callbacks?: InstantVoiceHelperCallbacks;
|
|
}
|
|
export class InstantVoiceHelper extends RTVIClientHelper {
|
|
|
|
protected declare _options: InstantVoiceHelperOptions;
|
|
|
|
constructor(options: InstantVoiceHelperOptions) {
|
|
super(options);
|
|
}
|
|
|
|
handleMessage(rtviMessage: RTVIMessage): void {
|
|
switch (rtviMessage.type) {
|
|
case DailyRTVIMessageType.AUDIO_BUFFERING_STARTED:
|
|
if (this._options.callbacks?.onAudioBufferingStarted) {
|
|
this._options.callbacks?.onAudioBufferingStarted()
|
|
}
|
|
break;
|
|
case DailyRTVIMessageType.AUDIO_BUFFERING_STOPPED:
|
|
if (this._options.callbacks?.onAudioBufferingStopped) {
|
|
this._options.callbacks?.onAudioBufferingStopped()
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
getMessageTypes(): string[] {
|
|
return [DailyRTVIMessageType.AUDIO_BUFFERING_STARTED, DailyRTVIMessageType.AUDIO_BUFFERING_STOPPED];
|
|
}
|
|
}
|