Interface: MediaStreamParser
Defined in: packages/agentos/src/channels/telephony/MediaStreamParser.ts:63
Contract for parsing and formatting provider-specific WebSocket media stream messages.
The interface has three responsibilities:
- Inbound normalisation (parseIncoming) -- Convert the provider's proprietary wire format into MediaStreamIncoming events.
- Outbound formatting (formatOutgoing) -- Wrap mu-law audio bytes in whatever envelope the provider expects.
- Connection handshake (formatConnected) -- Optionally generate a first-message acknowledgment required by some providers (e.g., Twilio).
See
- TwilioMediaStreamParser -- JSON envelope, base64 audio,
connectedack. - TelnyxMediaStreamParser -- JSON inbound, raw binary outbound, no ack.
- PlivoMediaStreamParser -- JSON envelope,
playAudiooutbound, no ack.
Methods
formatConnected()?
optionalformatConnected(streamSid):string|null
Defined in: packages/agentos/src/channels/telephony/MediaStreamParser.ts:106
Generate the initial connection acknowledgment message, if the provider requires one immediately after the WebSocket handshake.
- Twilio: Returns
{ event: 'connected', protocol: 'Call', version: '1.0.0' }. - Telnyx: Returns
null(no handshake needed). - Plivo: Not defined (no handshake needed).
Parameters
streamSid
string
The stream identifier established during the handshake.
Returns
string | null
A JSON string to send as the first WS message, or null if the
provider does not need an explicit acknowledgment.
formatOutgoing()
formatOutgoing(
audio,streamSid):string|Buffer
Defined in: packages/agentos/src/channels/telephony/MediaStreamParser.ts:92
Encode mu-law audio for transmission back to the telephony provider.
The returned type varies by provider:
- Twilio: Returns a JSON
stringwrapping base64-encoded audio in a{ event: 'media', streamSid, media: { payload } }envelope. - Telnyx: Returns the raw
Bufferunchanged (binary WS frame). - Plivo: Returns a JSON
stringwith a{ event: 'playAudio', media: { payload } }envelope.
Parameters
audio
Buffer
Raw mu-law PCM bytes to send to the caller.
streamSid
string
Provider stream identifier required by some formats.
Returns
string | Buffer
A Buffer (for providers that accept raw binary) or a JSON
string (for providers that wrap audio in an envelope).
parseIncoming()
parseIncoming(
data):MediaStreamIncoming|null
Defined in: packages/agentos/src/channels/telephony/MediaStreamParser.ts:76
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.
Parameters
data
Raw message bytes or string as delivered by the WS frame.
string | Buffer
Returns
MediaStreamIncoming | null
A normalised MediaStreamIncoming event, or null if the
message should be silently ignored (e.g. unknown event type, outbound
audio track, heartbeat frames, etc.).