@vonage/voice
Version:
The Voice API lets you create outbound calls, control in-progress calls and get information about historical calls.
98 lines • 2.86 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Input = void 0;
const enums_1 = require("../../enums");
/**
* Represents an Input action in the Nexmo Call Control Object (NCCO) for gathering user input.
*/
class Input {
/**
* The action type, which is always 'input'.
*/
action = enums_1.NCCOActions.INPUT;
/**
* An array of input types ('dtmf' and/or 'speech').
*/
type = [];
/**
* DTMF input settings.
*/
dtmf;
/**
* Speech input settings.
*/
speech;
/**
* An array of URLs to send events to asynchronously.
*/
eventUrl = [];
/**
* The HTTP method used to send events (e.g., 'POST' or 'GET').
*/
eventMethod;
/**
* Input processing mode, currently only applicable to DTMF. Valid values are
* synchronous (the default) and asynchronous. If set to asynchronous, all
* DTMF settings must be left blank. In asynchronous mode, digits are sent one
* at a time to the event webhook in real time. In the default synchronous
* mode, this is controlled by the DTMF settings instead and the inputs are
* sent in batch.
*/
mode;
/**
* Create a new Input instance.
*
* @param {DTMFSettings} dtmf - DTMF input settings.
* @param {SpeechSettings} speech - Speech input settings.
* @param {string} eventUrl - URL to send events to asynchronously.
* @param {string} eventMethod - The HTTP method used to send events.
*/
constructor(dtmf, speech, eventUrl, eventMethod, mode) {
if (dtmf) {
this.type.push('dtmf');
this.dtmf = dtmf;
}
if (speech) {
this.type.push('speech');
this.speech = speech;
}
if (eventUrl) {
this.eventUrl = [eventUrl];
}
if (eventMethod) {
this.eventMethod = eventMethod;
}
if (mode) {
this.mode = mode;
}
if (this.type.length === 0) {
throw new TypeError('Input action must have at least either DTMF or Speech settings');
}
}
/**
* Serialize the Input action to a Nexmo Call Control Object (NCCO) format.
*
* @return {InputAction} - The serialized Input action.
*/
serializeToNCCO() {
const data = {
action: enums_1.NCCOActions.INPUT,
type: this.type,
};
if (this.dtmf) {
data.dtmf = this.dtmf;
}
if (this.speech) {
data.speech = this.speech;
}
if (this.eventUrl) {
data.eventUrl = this.eventUrl;
}
if (this.eventMethod) {
data.eventMethod = this.eventMethod;
}
return data;
}
}
exports.Input = Input;
//# sourceMappingURL=Input.js.map