import type {
AnswerCallInput,
GetCallStatusInput,
GetCallStatusResult,
HangupCallInput,
InitiateCallInput,
InitiateCallResult,
PlayTtsInput,
ProviderName,
SendDtmfInput,
WebhookParseOptions,
ProviderWebhookParseResult,
StartListeningInput,
StopListeningInput,
WebhookContext,
WebhookVerificationResult,
} from "../types.js" ;
/**
* Abstract base interface for voice call providers .
*
* Each provider ( Telnyx , Twilio , etc . ) implements this interface to provide
* a consistent API for the call manager .
*
* Responsibilities :
* - Webhook verification and event parsing
* - Outbound call initiation and hangup
* - Media control ( TTS playback , STT listening )
*/
export interface VoiceCallProvider {
/** Provider identifier */
readonly name: ProviderName;
/**
* Verify webhook signature / HMAC before processing .
* Must be called before parseWebhookEvent .
*/
verifyWebhook(ctx: WebhookContext): WebhookVerificationResult;
/**
* Parse provider - specific webhook payload into normalized events .
* Returns events and optional response to send back to provider .
*/
parseWebhookEvent(ctx: WebhookContext, options?: WebhookParseOptions): ProviderWebhookParseResult;
/**
* Initiate an outbound call .
* @ returns Provider call ID and status
*/
initiateCall(input: InitiateCallInput): Promise<InitiateCallResult>;
/**
* Answer an accepted inbound call when the provider requires an explicit
* answer command after the initial webhook .
*/
answerCall?: (input: AnswerCallInput) => Promise<void >;
/**
* Hang up an active call .
*/
hangupCall(input: HangupCallInput): Promise<void >;
/**
* Play TTS audio to the caller .
* The provider should handle streaming if supported .
*/
playTts(input: PlayTtsInput): Promise<void >;
/**
* Send DTMF digits to an active call .
*/
sendDtmf?: (input: SendDtmfInput) => Promise<void >;
/**
* Start listening for user speech ( activate STT ) .
*/
startListening(input: StartListeningInput): Promise<void >;
/**
* Stop listening for user speech ( deactivate STT ) .
*/
stopListening(input: StopListeningInput): Promise<void >;
/**
* Query provider for current call status .
* Used to verify persisted calls are still active on restart .
* Must return ` isUnknown : true ` for transient errors ( network , 5 xx )
* so the caller can keep the call and rely on timer - based fallback .
*/
getCallStatus(input: GetCallStatusInput): Promise<GetCallStatusResult>;
}
Messung V0.5 in Prozent C=87 H=96 G=91
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland