UNPKG

@signalwire/realtime-api

Version:
387 lines (338 loc) 11.1 kB
import type { CallReceived, CallState, PlaybackStarted, PlaybackUpdated, PlaybackEnded, PlaybackFailed, RecordingStarted, RecordingUpdated, RecordingEnded, RecordingFailed, CallPromptStarted, CallPromptUpdated, CallPromptEnded, CallPromptFailed, CallTapStarted, CallTapEnded, CallCollectStarted, CallCollectStartOfInput, CallCollectUpdated, CallCollectEnded, CallCollectFailed, VoiceCallPlayAudioMethodParams, VoiceCallPlaySilenceMethodParams, VoiceCallPlayRingtoneMethodParams, VoiceCallPlayTTSMethodParams, VoicePlaylist, VoiceCallRecordMethodParams, VoiceCallPromptTTSMethodParams, VoiceCallPromptRingtoneMethodParams, VoiceCallPromptAudioMethodParams, VoiceCallPromptMethodParams, VoiceCallCollectMethodParams, VoiceCallTapMethodParams, VoiceCallTapAudioMethodParams, CallDetectStarted, CallDetectEnded, CallDetectUpdated, VoiceCallDetectMethodParams, VoiceCallDetectMachineParams, VoiceCallDetectFaxParams, VoiceCallDetectDigitParams, VoiceDialerParams, VoiceCallDialPhoneMethodParams, VoiceCallDialSipMethodParams, } from '@signalwire/core' import type { Call } from '../voice/Call' import type { CallPlayback } from '../voice/CallPlayback' import type { CallRecording } from '../voice/CallRecording' import type { CallPrompt } from '../voice/CallPrompt' import type { CallTap } from '../voice/CallTap' import type { CallCollect } from '../voice/CallCollect' import type { CallDetect } from '../voice/CallDetect' /** * Voice API */ export interface VoiceListeners { onCallReceived?: (call: Call) => unknown } export type VoiceEvents = Record<CallReceived, (call: Call) => void> export type VoiceListenersEventsMapping = Record<'onCallReceived', CallReceived> export interface VoiceMethodsListeners { listen?: RealTimeCallListeners } export type VoiceDialMethodParams = VoiceDialerParams & VoiceMethodsListeners export type VoiceDialPhonelMethodParams = VoiceCallDialPhoneMethodParams & VoiceMethodsListeners export type VoiceDialSipMethodParams = VoiceCallDialSipMethodParams & VoiceMethodsListeners /** * Call API */ export interface RealTimeCallListeners { onStateChanged?: (call: Call) => unknown onPlaybackStarted?: (playback: CallPlayback) => unknown onPlaybackUpdated?: (playback: CallPlayback) => unknown onPlaybackFailed?: (playback: CallPlayback) => unknown onPlaybackEnded?: (playback: CallPlayback) => unknown onRecordingStarted?: (recording: CallRecording) => unknown onRecordingFailed?: (recording: CallRecording) => unknown onRecordingEnded?: (recording: CallRecording) => unknown onPromptStarted?: (prompt: CallPrompt) => unknown onPromptUpdated?: (prompt: CallPrompt) => unknown onPromptFailed?: (prompt: CallPrompt) => unknown onPromptEnded?: (prompt: CallPrompt) => unknown onCollectStarted?: (collect: CallCollect) => unknown onCollectInputStarted?: (collect: CallCollect) => unknown onCollectUpdated?: (collect: CallCollect) => unknown onCollectFailed?: (collect: CallCollect) => unknown onCollectEnded?: (collect: CallCollect) => unknown onTapStarted?: (collect: CallTap) => unknown onTapEnded?: (collect: CallTap) => unknown onDetectStarted?: (collect: CallDetect) => unknown onDetectUpdated?: (collect: CallDetect) => unknown onDetectEnded?: (collect: CallDetect) => unknown } export type RealTimeCallListenersKeys = keyof RealTimeCallListeners export type RealTimeCallEventsHandlerMapping = Record< CallState, (call: Call) => void > & Record< PlaybackStarted | PlaybackUpdated | PlaybackEnded | PlaybackFailed, (playback: CallPlayback) => void > & Record< RecordingStarted | RecordingUpdated | RecordingEnded | RecordingFailed, (recording: CallRecording) => void > & Record< CallPromptStarted | CallPromptUpdated | CallPromptEnded | CallPromptFailed, (prompt: CallPrompt) => void > & Record< | CallCollectStarted | CallCollectStartOfInput | CallCollectUpdated | CallCollectEnded | CallCollectFailed, (callCollect: CallCollect) => void > & Record<CallTapStarted | CallTapEnded, (tap: CallTap) => void> & Record< CallDetectStarted | CallDetectUpdated | CallDetectEnded, (detect: CallDetect) => void > export type RealTimeCallEvents = { [k in keyof RealTimeCallEventsHandlerMapping]: RealTimeCallEventsHandlerMapping[k] } export type RealtimeCallListenersEventsMapping = Record< 'onStateChanged', CallState > & Record<'onPlaybackStarted', PlaybackStarted> & Record<'onPlaybackUpdated', PlaybackUpdated> & Record<'onPlaybackFailed', PlaybackFailed> & Record<'onPlaybackEnded', PlaybackEnded> & Record<'onRecordingStarted', RecordingStarted> & Record<'onRecordingUpdated', RecordingUpdated> & Record<'onRecordingFailed', RecordingFailed> & Record<'onRecordingEnded', RecordingEnded> & Record<'onPromptStarted', CallPromptStarted> & Record<'onPromptUpdated', CallPromptUpdated> & Record<'onPromptFailed', CallPromptFailed> & Record<'onPromptEnded', CallPromptEnded> & Record<'onCollectStarted', CallCollectStarted> & Record<'onCollectInputStarted', CallCollectStartOfInput> & Record<'onCollectUpdated', CallCollectUpdated> & Record<'onCollectFailed', CallCollectFailed> & Record<'onCollectEnded', CallCollectEnded> & Record<'onTapStarted', CallTapStarted> & Record<'onTapEnded', CallTapEnded> & Record<'onDetectStarted', CallDetectStarted> & Record<'onDetectUpdated', CallDetectUpdated> & Record<'onDetectEnded', CallDetectEnded> /** * Call Playback */ export type CallPlaybackEvents = Record< PlaybackStarted | PlaybackUpdated | PlaybackEnded | PlaybackFailed, (playback: CallPlayback) => void > export interface CallPlaybackListeners { onStarted?: (playback: CallPlayback) => unknown onUpdated?: (playback: CallPlayback) => unknown onFailed?: (playback: CallPlayback) => unknown onEnded?: (playback: CallPlayback) => unknown } export type CallPlaybackListenersEventsMapping = Record< 'onStarted', PlaybackStarted > & Record<'onUpdated', PlaybackUpdated> & Record<'onFailed', PlaybackFailed> & Record<'onEnded', PlaybackEnded> export interface CallPlayMethodParams { playlist: VoicePlaylist listen?: CallPlaybackListeners } export interface CallPlayAudioMethodarams extends VoiceCallPlayAudioMethodParams { listen?: CallPlaybackListeners } export interface CallPlaySilenceMethodParams extends VoiceCallPlaySilenceMethodParams { listen?: CallPlaybackListeners } export interface CallPlayRingtoneMethodParams extends VoiceCallPlayRingtoneMethodParams { listen?: CallPlaybackListeners } export interface CallPlayTTSMethodParams extends VoiceCallPlayTTSMethodParams { listen?: CallPlaybackListeners } /** * Call Recording */ export type CallRecordingEvents = Record< RecordingStarted | RecordingUpdated | RecordingEnded | RecordingFailed, (recording: CallRecording) => void > export interface CallRecordingListeners { onStarted?: (recording: CallRecording) => unknown onUpdated?: (recording: CallRecording) => unknown onFailed?: (recording: CallRecording) => unknown onEnded?: (recording: CallRecording) => unknown } export type CallRecordingListenersEventsMapping = Record< 'onStarted', RecordingStarted > & Record<'onUpdated', RecordingUpdated> & Record<'onFailed', RecordingFailed> & Record<'onEnded', RecordingEnded> export interface CallRecordMethodParams extends VoiceCallRecordMethodParams { listen?: CallRecordingListeners } export type CallRecordAudioMethodParams = VoiceCallRecordMethodParams['audio'] & { listen?: CallRecordingListeners } /** * Call Prompt */ export type CallPromptEvents = Record< CallPromptStarted | CallPromptUpdated | CallPromptEnded | CallPromptFailed, (prompt: CallPrompt) => void > export interface CallPromptListeners { onStarted?: (prompt: CallPrompt) => unknown onUpdated?: (prompt: CallPrompt) => unknown onFailed?: (prompt: CallPrompt) => unknown onEnded?: (prompt: CallPrompt) => unknown } export type CallPromptListenersEventsMapping = Record< 'onStarted', CallPromptStarted > & Record<'onUpdated', CallPromptUpdated> & Record<'onFailed', CallPromptFailed> & Record<'onEnded', CallPromptEnded> export type CallPromptMethodParams = VoiceCallPromptMethodParams & { listen?: CallPromptListeners } export type CallPromptAudioMethodParams = VoiceCallPromptAudioMethodParams & { listen?: CallPromptListeners } export type CallPromptRingtoneMethodParams = VoiceCallPromptRingtoneMethodParams & { listen?: CallPromptListeners } export type CallPromptTTSMethodParams = VoiceCallPromptTTSMethodParams & { listen?: CallPromptListeners } /** * Call Collect */ export type CallCollectEvents = Record< | CallCollectStarted | CallCollectStartOfInput | CallCollectUpdated | CallCollectEnded | CallCollectFailed, (collect: CallCollect) => void > export interface CallCollectListeners { onStarted?: (collect: CallCollect) => unknown onInputStarted?: (collect: CallCollect) => unknown onUpdated?: (collect: CallCollect) => unknown onFailed?: (collect: CallCollect) => unknown onEnded?: (collect: CallCollect) => unknown } export type CallCollectListenersEventsMapping = Record< 'onStarted', CallCollectStarted > & Record<'onInputStarted', CallCollectStartOfInput> & Record<'onUpdated', CallCollectUpdated> & Record<'onFailed', CallCollectFailed> & Record<'onEnded', CallCollectEnded> export type CallCollectMethodParams = VoiceCallCollectMethodParams & { listen?: CallCollectListeners } /** * Call Tap */ export type CallTapEvents = Record< CallTapStarted | CallTapEnded, (tap: CallTap) => void > export interface CallTapListeners { onStarted?: (tap: CallTap) => unknown onEnded?: (tap: CallTap) => unknown } export type CallTapListenersEventsMapping = Record< 'onStarted', CallTapStarted > & Record<'onEnded', CallTapEnded> export type CallTapMethodParams = VoiceCallTapMethodParams & { listen?: CallTapListeners } export type CallTapAudioMethodParams = VoiceCallTapAudioMethodParams & { listen?: CallTapListeners } /** * Call Detect */ export type CallDetectEvents = Record< CallDetectStarted | CallDetectUpdated | CallDetectEnded, (tap: CallDetect) => void > export interface CallDetectListeners { onStarted?: (detect: CallDetect) => unknown onUpdated?: (detect: CallDetect) => unknown onEnded?: (detect: CallDetect) => unknown } export type CallDetectListenersEventsMapping = Record< 'onStarted', CallDetectStarted > & Record<'onUpdated', CallDetectUpdated> & Record<'onEnded', CallDetectEnded> export type CallDetectMethodParams = VoiceCallDetectMethodParams & { listen?: CallDetectListeners } export interface CallDetectMachineParams extends Omit<VoiceCallDetectMachineParams, 'type'> { listen?: CallDetectListeners } export interface CallDetectFaxParams extends Omit<VoiceCallDetectFaxParams, 'type'> { listen?: CallDetectListeners } export interface CallDetectDigitParams extends Omit<VoiceCallDetectDigitParams, 'type'> { listen?: CallDetectListeners }