Skip to main content

Class: TelnyxMediaStreamParser

Defined in: packages/agentos/src/io/channels/telephony/parsers/TelnyxMediaStreamParser.ts:56

Parses the Telnyx media stream WebSocket protocol.

Telnyx sends JSON-encoded messages for stream lifecycle events (start, stop) and audio chunks (media). Unlike Twilio, Telnyx does NOT deliver DTMF events over the media stream WebSocket -- those arrive as HTTP webhooks to a separate endpoint and must be handled outside this parser.

Outgoing audio is sent as a raw binary Buffer (mu-law PCM bytes without any JSON envelope) because Telnyx accepts unframed binary WebSocket frames directly. No explicit connection acknowledgment is needed after the handshake.

See​

https://developers.telnyx.com/docs/voice/media-streaming

Implements​

Constructors​

Constructor​

new TelnyxMediaStreamParser(): TelnyxMediaStreamParser

Returns​

TelnyxMediaStreamParser

Methods​

formatConnected()​

formatConnected(_streamSid): null

Defined in: packages/agentos/src/io/channels/telephony/parsers/TelnyxMediaStreamParser.ts:161

No explicit connection acknowledgment is required by Telnyx.

Unlike Twilio, Telnyx does not need a connected handshake message before it starts sending media events.

Parameters​

_streamSid​

string

Unused (accepted for interface parity).

Returns​

null

Always null.

Implementation of​

MediaStreamParser.formatConnected


formatOutgoing()​

formatOutgoing(audio, _streamSid): Buffer

Defined in: packages/agentos/src/io/channels/telephony/parsers/TelnyxMediaStreamParser.ts:148

Encode mu-law audio for transmission back to Telnyx.

Telnyx accepts raw binary WebSocket frames -- no JSON wrapping is needed. This is the key asymmetry in Telnyx's protocol: inbound is JSON, outbound is raw binary.

Parameters​

audio​

Buffer

Raw mu-law PCM bytes to send to the caller.

_streamSid​

string

Unused by Telnyx binary framing (accepted for interface parity with other parsers).

Returns​

Buffer

The audio Buffer unchanged, ready to send as a binary WS frame.

Implementation of​

MediaStreamParser.formatOutgoing


parseIncoming()​

parseIncoming(data): MediaStreamIncoming | null

Defined in: packages/agentos/src/io/channels/telephony/parsers/TelnyxMediaStreamParser.ts:75

Parse a raw WebSocket frame from Telnyx's media stream.

Supported Telnyx event types:

  • start -- stream established; stream_id maps to streamSid, call_control_id maps to callSid.
  • media -- audio chunk; media.chunk field contains base64-encoded mu-law bytes; only inbound track frames are returned (outbound echoes are discarded to prevent feedback loops).
  • stop -- stream ended (call terminated or stream explicitly closed).

Any other event type (e.g., future Telnyx additions, DTMF attempts) is silently dropped by returning null.

Parameters​

data​

Raw WebSocket frame payload (JSON string or Buffer from Telnyx).

string | Buffer

Returns​

MediaStreamIncoming | null

Normalised MediaStreamIncoming event, or null for outbound audio tracks, unknown event types, or malformed messages.

Implementation of​

MediaStreamParser.parseIncoming