Skip to main content

IVR JS Example (Simple setup)

This example demonstrates a basic IVR script using Vodia's Javascript IVR capabilities, incorporating TTS, DTMF collection, and communication with an external application.

Scenario:

  • Play a welcome message using Vodia's TTS.
  • Collect a 4-digit input from the user via DTMF.
  • Send the collected digits to an external application in JSON format.
  • Play a dynamically generated message from the external application's response and potentially route the call to a destination number, also provided by the external application.
'use strict';

call.say('Welcome to company ABC. Please enter your 4 digit customer number.');

var digits = '';

call.dtmf(ondtmf);

function ondtmf(digit) {
digits += digit;
if (digits.length == 4) {
send(digits);
digits = '';
}
}

function send(digits) {
var body = JSON.stringify({
customerCode: digits
});

var args = {
method: 'POST',
url: 'https://extenal_server/webhook',
header: [ { name: 'Content-Type', value: 'application/json' } ],
callback: callback
};

if (body) {
args.body = body;
}

system.http(args);


function callback(code, response, headers) {
console.log('IVR response:' + response.toString())
console.log('IVR response:' + code.toString())
var res = JSON.parse(response);
if (res.message) call.say(res.message)
if (res.transfer) setTimeout(function(){
call.transfer(res.destination)
}, 5000)
}

}

The external application, in response to the JSON data sent by the Vodia PBX, should return a JSON object with specific fields.

{ "destination": "901","message": "Thank you for providing your customer number. I will now transfer you to Customer Service.","transfer": "true" }
tip

Use 'Connection': 'keep-alive' header in your response.

For more information on Vodia's JavaScript capabilities, refer to: Vodia Backend JavaScript Documentation