@signalwire/realtime-api
Version:
SignalWire RealTime SDK for Node.js
387 lines (338 loc) • 11.1 kB
text/typescript
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
}