UNPKG

@gguf/claw

Version:

WhatsApp gateway CLI (Baileys web) with Pi RPC agent

68 lines (59 loc) 1.75 kB
import type { HangupCallInput, InitiateCallInput, InitiateCallResult, PlayTtsInput, ProviderName, 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): ProviderWebhookParseResult; /** * Initiate an outbound call. * @returns Provider call ID and status */ initiateCall(input: InitiateCallInput): Promise<InitiateCallResult>; /** * 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>; /** * Start listening for user speech (activate STT). */ startListening(input: StartListeningInput): Promise<void>; /** * Stop listening for user speech (deactivate STT). */ stopListening(input: StopListeningInput): Promise<void>; }