Skip to content

cxC5Server

Auto-generated documentation from JSDoc comments

Classes

Constants

Functions

cxC5Server ⇐ EventEmitter

Class 5 Server for handling real-time call control, media operations, and telephony events. Extends EventEmitter to provide event-driven call handling capabilities.

Events

  • dtmf - Emitted when DTMF digits are received
  • playback_start - Emitted when media playback starts
  • playback_stop - Emitted when media playback stops
  • hangup - Emitted when the channel hangs up
  • close - Emitted when connection closes
  • end_of_utterance - Emitted at end of speech utterance
  • no_audio_detected - Emitted when no audio is detected
  • transcription - Emitted when transcription data is received

Listeners are attached with on()/once(), which subscribe to the host event on first use.

Handlers receive the FreeSWITCH event fields directly (the ESL { headers, body } envelope is unwrapped), so a DTMF digit is e['DTMF-Digit']. All values are strings. transcription is the exception: it yields the transcript text itself.

Example

import cxC5Server from '@connexcs/cxC5Server';
async function main(data) {
  const server = new cxC5Server(data.socketId);
  await server.answer();
  await server.tts('Hello, welcome to our service');
  server.on('dtmf', (e) => console.log('Pressed:', e['DTMF-Digit']));
}

Kind: global class
Extends: EventEmitter

new cxC5Server()

Class 5 Server Control

HOST_EVENTS

Events the host can subscribe to, as named in cxC5Server.on() on the host side. Attaching a listener for any other name is a plain in-process emitter listener.

Kind: global constant

POLL_INTERVAL_MS

How often buffered host events are drained, in milliseconds.

Kind: global constant

on(eventName, listener) ⇒ this

Attach a listener, subscribing to the underlying host event on first use.

Kind: global function

Param Type Description
eventName string Event name (see the Events list above)
listener function Handler invoked with the event payload

once(eventName, listener) ⇒ this

Attach a one-shot listener, subscribing to the underlying host event on first use.

Kind: global function

Param Type Description
eventName string Event name (see the Events list above)
listener function Handler invoked with the event payload

close() ⇒ void

Stop polling for host events and release the host-side buffers.

Called automatically when the call ends; scripts only need it to detach early.

Kind: global function

get(key) ⇒ Promise.<*>

Get a session variable value

Kind: global function
Returns: Promise.<*> - The value of the variable

Param Type Description
key string The variable name to retrieve

Example

const value = await server.get('caller_id');

set(key, value) ⇒ Promise.<void>

Set a session variable value

Kind: global function

Param Type Description
key string The variable name to set
value * The value to assign

Example

await server.set('custom_var', 'myValue');

header(key, value) ⇒ Promise.<void>

Set a SIP header value

Kind: global function

Param Type Description
key string The header name
value string The header value

Example

await server.header('X-Custom-Header', 'value');

answer() ⇒ Promise.<void>

Answer the incoming call

Kind: global function
Example

await server.answer();

tts(text, [opts]) ⇒ Promise.<void>

Play text-to-speech audio to the caller

Kind: global function

Param Type Default Description
text string The text to convert to speech
[opts] object {} TTS options
[opts.voice] string Voice to use for TTS
[opts.language] string Language code for TTS

Example

await server.tts('Hello, how can I help you?', { voice: 'en-US-Wavenet-D' });

stopMedia() ⇒ Promise.<void>

Stop any currently playing media

Kind: global function
Example

await server.stopMedia();

echo([delay]) ⇒ Promise.<void>

Enable echo mode for the call (plays back caller's audio)

Kind: global function

Param Type Default Description
[delay] number 0 Delay in milliseconds before echoing

Example

await server.echo(500); // Echo with 500ms delay

ivr(file, timeout, min, max, [terminators], [opts]) ⇒ Promise.<string>

Play an IVR menu and collect DTMF input

Kind: global function
Returns: Promise.<string> - The collected DTMF digits

Param Type Default Description
file string Audio file to play
timeout number Timeout in seconds to wait for input
min number Minimum number of digits to collect
max number Maximum number of digits to collect
[terminators] string "'#'" Characters that terminate input collection
[opts] object {} Additional IVR options

Example

const digits = await server.ivr('menu.wav', 10, 1, 4, '#');

hangup() ⇒ Promise.<void>

Hang up the call

Kind: global function
Example

await server.hangup();

play(file) ⇒ Promise.<void>

Play an audio file to the caller

Kind: global function

Param Type Description
file string Path or URL to the audio file

Example

await server.play('welcome.wav');

bridge(destination, [server], [continue_on], [originate_timeout]) ⇒ Promise.<void>

Bridge the call to another destination

Kind: global function

Param Type Default Description
destination string The destination to bridge to
[server] string | boolean false Server to use for bridging
[continue_on] boolean false Continue script execution after bridge ends
[originate_timeout] number 30 Timeout in seconds for the outbound leg

Example

await server.bridge('sip:user@domain.com', false, true, 60);

blockDtmf([digits]) ⇒ Promise.<void>

Block specific DTMF digits from being processed

Kind: global function

Param Type Default Description
[digits] string "'0123456789'" DTMF digits to block

Example

await server.blockDtmf('*#'); // Block only * and #

unblockDtmf([digits]) ⇒ Promise.<void>

Unblock specific DTMF digits

Kind: global function

Param Type Default Description
[digits] string "'0123456789'" DTMF digits to unblock

Example

await server.unblockDtmf('*#');

record(file, [maxSeconds], [silenceThreshold], [silenceSeconds], [beep], [opts]) ⇒ Promise.<void>

Record audio from the call

Kind: global function

Param Type Default Description
file string Filename to save the recording
[maxSeconds] number 3600 Maximum recording duration in seconds
[silenceThreshold] number 30 Silence threshold level
[silenceSeconds] number 5 Seconds of silence before stopping
[beep] boolean true Play a beep before recording starts
[opts] object {} Additional recording options

Example

await server.record('message.wav', 60, 30, 3, true);

deltaLogPayload(payload) ⇒ Promise.<void>

Add additional payload data to the call log

Kind: global function

Param Type Description
payload object Data to append to the call log

Example

await server.deltaLogPayload({ customField: 'value' });

transcribeStart([opts]) ⇒ Promise.<void>

Start real-time speech transcription

Kind: global function

Param Type Default Description
[opts] object {} Transcription options
[opts.language] string Language code for transcription
[opts.model] string Transcription model to use

Example

await server.transcribeStart({ language: 'en-US' });
server.on('transcription', (data) => console.log(data.text));

transcribeStop() ⇒ Promise.<void>

Stop real-time speech transcription

Kind: global function
Example

await server.transcribeStop();

waitFor(match, quit, [timeout], [debounce]) ⇒ Promise.<*>

Wait for a specific event or condition

Kind: global function
Returns: Promise.<*> - The matched event data

Param Type Default Description
match string | RegExp Pattern to match against incoming events
quit string | RegExp Pattern that triggers exit from waiting
[timeout] number 60 Timeout in seconds
[debounce] number 0 Debounce time in milliseconds

Example

const result = await server.waitFor(/^[0-9]$/, '#', 30);

waitForHangup([ignore]) ⇒ Promise.<void>

Wait for the call to hang up

Kind: global function
Returns: Promise.<void> - Resolves when the call hangs up

Param Type Default Description
[ignore] string "'outbound'" Direction to ignore ('outbound' or 'inbound')

Example

await server.waitForHangup();
console.log('Call ended');