cloudonix-js
Version:
A JavaScript library for building and serving Cloudonix Voice Application XML (CXML) documents with support for AI voice agents, media streaming, and advanced telephony features
115 lines (94 loc) • 2.89 kB
JavaScript
/**
* @file Examples demonstrating the Play verb functionality
* @copyright 2025 Nir Simionovich, nirs@cloudonix.io
* @license MIT
*/
;
const CXMLBuilder = require('../src/builder');
// Example 1: Basic Play - Playing an audio file
console.log("Example 1: Basic Play - Playing an audio file");
const example1 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/greeting.mp3')
.build();
console.log(example1);
console.log("\n");
// Example 2: Play with early media (no answer)
console.log("Example 2: Play with early media (no answer)");
const example2 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/ringback.mp3', {
answer: false
})
.build();
console.log(example2);
console.log("\n");
// Example 3: Play DTMF tones
console.log("Example 3: Play DTMF tones");
const example3 = new CXMLBuilder()
.createResponse()
.addPlay('', {
digits: '1w2w3' // Play 1, wait 0.5s, play 2, wait 0.5s, play 3
})
.build();
console.log(example3);
console.log("\n");
// Example 4: Play with looping
console.log("Example 4: Play with looping");
const example4 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/hold-music.mp3', {
loop: 5 // Play the file 5 times
})
.build();
console.log(example4);
console.log("\n");
// Example 5: Play with continuous looping
console.log("Example 5: Play with continuous looping");
const example5 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/hold-music.mp3', {
loop: 0 // Play continuously until the call ends
})
.build();
console.log(example5);
console.log("\n");
// Example 6: Play with status callback
console.log("Example 6: Play with status callback");
const example6 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/announcement.mp3', {
statusCallback: 'https://example.com/play-status',
statusCallbackMethod: 'POST'
})
.build();
console.log(example6);
console.log("\n");
// Example 7: Play with multiple options
console.log("Example 7: Play with multiple options");
const example7 = new CXMLBuilder()
.createResponse()
.addPlay('https://example.com/audio/welcome.mp3', {
answer: true,
loop: 2,
statusCallback: 'https://example.com/play-complete',
statusCallbackMethod: 'GET'
})
.build();
console.log(example7);
console.log("\n");
// Example 8: Play in a sequence
console.log("Example 8: Play in a sequence");
const builder8 = new CXMLBuilder();
builder8.createResponse();
// Add first element
builder8.document.Response.Say = { '#text': 'Welcome to our system' };
// Add Play element
builder8.document.Response.Play = {
'@_answer': true,
'#text': 'https://example.com/audio/instructions.mp3'
};
// Add Hangup element
builder8.document.Response.Hangup = {};
console.log(builder8.build());
console.log("\n");