Parse a raw WebSocket message received from the telephony provider.
Implementations must handle both Buffer (binary frames) and string
(text frames) inputs, since different providers and WebSocket libraries
deliver data in different forms.
Raw message bytes or string as delivered by the WS frame.
A normalised MediaStreamIncoming event, or null if the
message should be silently ignored (e.g. unknown event type, outbound
audio track, heartbeat frames, etc.).
Encode mu-law audio for transmission back to the telephony provider.
The returned type varies by provider. In the legacy profile:
string wrapping base64-encoded audio in a
{ event: 'media', streamSid, media: { payload } } envelope.Buffer unchanged (binary WS frame).string with a { event: 'playAudio', media: { payload } } envelope.In the carrier profile every built-in parser returns a JSON string in its
carrier's documented media message.
Raw mu-law PCM bytes to send to the caller.
Provider stream identifier required by some formats.
A Buffer (for providers that accept raw binary) or a JSON
string (for providers that wrap audio in an envelope).
Optional formatGenerate the initial connection acknowledgment message, if the provider requires one immediately after the WebSocket handshake.
{ event: 'connected', protocol: 'Call', version: '1.0.0' }
in the legacy profile and null in the carrier profile.null (no handshake needed).The stream identifier established during the handshake.
A JSON string to send as the first WS message, or null if the
provider does not need an explicit acknowledgment.
Optional formatOptional formatOptional Readonly protocolExplicit wire profile; omission denotes the released compatibility protocol.
Contract for parsing and formatting provider-specific WebSocket media stream messages.
The interface has three responsibilities:
The built-in parsers take
{ protocol: 'carrier' }to select each carrier's documented PCMU 8 kHz media messages and playback controls; without it they keep the legacy profile summarised below.See
connectedack.playAudiooutbound, no ack.