twilio
Version:
A Twilio helper library
529 lines (528 loc) • 20.9 kB
JavaScript
"use strict";
/*
* This code was generated by
* ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __
* | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/
* | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \
*
* Twilio Conversational Intelligence API
* The Conversational Intelligence API includes resources to create and manage intelligence configurations, define and run language operators, and retrieve processed conversations and operator results. * Use the Configurations resource to create and manage intelligence configurations and define rules that control how and when language operators analyze and transform conversations. * Use the Operators resource to create custom language operators or retrieve Twilio-author and custom operators. * Use the Conversations resource to retrieve conversations processed with an intelligence configuration, and the OperatorResults resource to retrieve language operator results for those conversations.
*
* NOTE: This class is auto generated by OpenAPI Generator.
* https://openapi-generator.tech
* Do not edit the class manually.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigurationPage = exports.ConfigurationInstance = exports.ConfigurationContextImpl = exports.UpdateConfigurationRequest = exports.TriggerParameters = exports.Trigger = exports.RuleUpdateRequestPayload = exports.RuleCreationRequestPayload = exports.Rule = exports.Operator = exports.CreateConfigurationRequest = exports.ContextMemory = exports.ContextKnowledge = exports.Context = exports.Action = void 0;
exports.ConfigurationListInstance = ConfigurationListInstance;
const util_1 = require("util");
const TokenPage_1 = __importDefault(require("../../../base/TokenPage"));
const deserialize = require("../../../base/deserialize");
const serialize = require("../../../base/serialize");
const utility_1 = require("../../../base/utility");
class Action {
constructor(payload) {
this.type = payload["type"];
this.method = payload["method"];
this.url = payload["url"];
}
}
exports.Action = Action;
/**
* Controls what additional customer and enterprise context is made available to Language Operators when this Rule executes.
*/
class Context {
constructor(payload) {
this.memory = payload["memory"];
this.knowledge = payload["knowledge"];
}
}
exports.Context = Context;
/**
* Configuration for passing Enterprise Knowledge as context to Operators in this Rule (available only for Enterprise Knowledge–enabled accounts).
*/
class ContextKnowledge {
constructor(payload) {
this.bases = payload["bases"];
}
}
exports.ContextKnowledge = ContextKnowledge;
/**
* Configuration for passing Memory as context to Operators in this Rule (available only for Memory–enabled accounts).
*/
class ContextMemory {
constructor(payload) {
this.enabled = payload["enabled"];
}
}
exports.ContextMemory = ContextMemory;
/**
* Request body for creating a new Intelligence Configuration.
*/
class CreateConfigurationRequest {
constructor(payload) {
this.displayName = payload["displayName"];
this.description = payload["description"];
this.rules = payload["rules"];
}
}
exports.CreateConfigurationRequest = CreateConfigurationRequest;
class Operator {
constructor(payload) {
this.id = payload["id"];
this.version = payload["version"];
this.parameters = payload["parameters"];
}
}
exports.Operator = Operator;
class Rule {
constructor(payload) {
this.id = payload["id"];
this.operators = payload["operators"];
this.triggers = payload["triggers"];
this.actions = payload["actions"];
this.context = payload["context"];
}
}
exports.Rule = Rule;
class RuleCreationRequestPayload {
constructor(payload) {
this.operators = payload["operators"];
this.triggers = payload["triggers"];
this.actions = payload["actions"];
this.context = payload["context"];
}
}
exports.RuleCreationRequestPayload = RuleCreationRequestPayload;
class RuleUpdateRequestPayload {
constructor(payload) {
this.id = payload["id"];
this.operators = payload["operators"];
this.triggers = payload["triggers"];
this.actions = payload["actions"];
this.context = payload["context"];
}
}
exports.RuleUpdateRequestPayload = RuleUpdateRequestPayload;
class Trigger {
constructor(payload) {
this.on = payload["on"];
this.parameters = payload["parameters"];
}
}
exports.Trigger = Trigger;
/**
* Additional configuration to modify Trigger behavior. Only applies to certain Trigger types.
*/
class TriggerParameters {
constructor(payload) {
this.count = payload["count"];
}
}
exports.TriggerParameters = TriggerParameters;
class UpdateConfigurationRequest {
constructor(payload) {
this.displayName = payload["displayName"];
this.description = payload["description"];
this.rules = payload["rules"];
}
}
exports.UpdateConfigurationRequest = UpdateConfigurationRequest;
class ConfigurationContextImpl {
constructor(_version, id) {
this._version = _version;
if (!(0, utility_1.isValidPathParam)(id)) {
throw new Error("Parameter 'id' is not valid.");
}
this._solution = { id };
this._uri = `/ControlPlane/Configurations/${id}`;
}
remove(callback) {
const headers = {};
const instance = this;
let operationVersion = instance._version, operationPromise = operationVersion.remove({
uri: instance._uri,
method: "delete",
headers,
});
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
removeWithHttpInfo(callback) {
const headers = {};
const instance = this;
let operationVersion = instance._version;
// DELETE operation - returns boolean based on status code
let operationPromise = operationVersion
.removeWithResponseInfo({ uri: instance._uri, method: "delete", headers })
.then((response) => ({
...response,
body: response.statusCode === 204,
}));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
fetch(callback) {
const headers = {};
headers["Accept"] = "application/json";
const instance = this;
let operationVersion = instance._version, operationPromise = operationVersion.fetch({
uri: instance._uri,
method: "get",
headers,
});
operationPromise = operationPromise.then((payload) => new ConfigurationInstance(operationVersion, payload, instance._solution.id));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
fetchWithHttpInfo(callback) {
const headers = {};
headers["Accept"] = "application/json";
const instance = this;
let operationVersion = instance._version;
// CREATE, FETCH, UPDATE operations
let operationPromise = operationVersion
.fetchWithResponseInfo({
uri: instance._uri,
method: "get",
headers,
})
.then((response) => ({
...response,
body: new ConfigurationInstance(operationVersion, response.body, instance._solution.id),
}));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
update(params, headers, callback) {
if (params === null || params === undefined) {
throw new Error('Required parameter "params" missing.');
}
let data = {};
data = params;
if (headers === null || headers === undefined) {
headers = {};
}
headers["Content-Type"] = "application/json";
headers["Accept"] = "application/json";
const instance = this;
let operationVersion = instance._version, operationPromise = operationVersion.update({
uri: instance._uri,
method: "put",
data,
headers,
});
operationPromise = operationPromise.then((payload) => new ConfigurationInstance(operationVersion, payload, instance._solution.id));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
updateWithHttpInfo(params, headers, callback) {
if (params === null || params === undefined) {
throw new Error('Required parameter "params" missing.');
}
let data = {};
data = params;
if (headers === null || headers === undefined) {
headers = {};
}
headers["Content-Type"] = "application/json";
headers["Accept"] = "application/json";
const instance = this;
let operationVersion = instance._version;
// CREATE, FETCH, UPDATE operations
let operationPromise = operationVersion
.updateWithResponseInfo({
uri: instance._uri,
method: "put",
data,
headers,
})
.then((response) => ({
...response,
body: new ConfigurationInstance(operationVersion, response.body, instance._solution.id),
}));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
}
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON() {
return this._solution;
}
[util_1.inspect.custom](_depth, options) {
return (0, util_1.inspect)(this.toJSON(), options);
}
}
exports.ConfigurationContextImpl = ConfigurationContextImpl;
/**
* An Intelligence Configuration defines how and when Language Operators execute for a given conversation. To activate an Intelligence Configuration and trigger Operator execution, two conditions must be met: 1. The Intelligence Configuration must include at least one Rule. 2. The Intelligence Configuration must be attached to a Conversations Configuration via the Conversations API. Conversation traffic received by that Conversations Configuration determines when Rules are evaluated and executed. An Intelligence Configuration that has no Rules or is not attached to a Conversations Configuration will not execute.
*/
class ConfigurationInstance {
constructor(_version, _payload, id) {
this._version = _version;
const payload = _payload;
this.accountId = payload.accountId;
this.id = payload.id;
this.displayName = payload.displayName;
this.description = payload.description;
this.version = deserialize.integer(payload.version);
this.rules =
payload.rules !== null && payload.rules !== undefined
? payload.rules.map((payload) => new Rule(payload))
: null;
this.dateCreated = deserialize.iso8601DateTime(payload.dateCreated);
this.dateUpdated = deserialize.iso8601DateTime(payload.dateUpdated);
this._solution = { id: id };
}
get _proxy() {
this._context =
this._context ||
new ConfigurationContextImpl(this._version, this._solution.id);
return this._context;
}
/**
* Remove a ConfigurationInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed boolean
*/
remove(callback) {
return this._proxy.remove(callback);
}
/**
* Remove a ConfigurationInstance and return HTTP info
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed boolean with HTTP metadata
*/
removeWithHttpInfo(callback) {
return this._proxy.removeWithHttpInfo(callback);
}
/**
* Fetch a ConfigurationInstance
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ConfigurationInstance
*/
fetch(callback) {
return this._proxy.fetch(callback);
}
/**
* Fetch a ConfigurationInstance and return HTTP info
*
* @param callback - Callback to handle processed record
*
* @returns Resolves to processed ConfigurationInstance with HTTP metadata
*/
fetchWithHttpInfo(callback) {
return this._proxy.fetchWithHttpInfo(callback);
}
update(params, callback) {
return this._proxy.update(params, callback);
}
updateWithHttpInfo(params, callback) {
return this._proxy.updateWithHttpInfo(params, callback);
}
/**
* Provide a user-friendly representation
*
* @returns Object
*/
toJSON() {
return {
accountId: this.accountId,
id: this.id,
displayName: this.displayName,
description: this.description,
version: this.version,
rules: this.rules,
dateCreated: this.dateCreated,
dateUpdated: this.dateUpdated,
};
}
[util_1.inspect.custom](_depth, options) {
return (0, util_1.inspect)(this.toJSON(), options);
}
}
exports.ConfigurationInstance = ConfigurationInstance;
function ConfigurationListInstance(version) {
const instance = ((id) => instance.get(id));
instance.get = function get(id) {
return new ConfigurationContextImpl(version, id);
};
instance._version = version;
instance._solution = {};
instance._uri = `/ControlPlane/Configurations`;
instance.create = function create(params, headers, callback) {
if (params === null || params === undefined) {
throw new Error('Required parameter "params" missing.');
}
let data = {};
data = params;
if (headers === null || headers === undefined) {
headers = {};
}
headers["Content-Type"] = "application/json";
headers["Accept"] = "application/json";
let operationVersion = version, operationPromise = operationVersion.create({
uri: instance._uri,
method: "post",
data,
headers,
});
operationPromise = operationPromise.then((payload) => new ConfigurationInstance(operationVersion, payload));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
};
instance.createWithHttpInfo = function createWithHttpInfo(params, headers, callback) {
if (params === null || params === undefined) {
throw new Error('Required parameter "params" missing.');
}
let data = {};
data = params;
if (headers === null || headers === undefined) {
headers = {};
}
headers["Content-Type"] = "application/json";
headers["Accept"] = "application/json";
let operationVersion = version;
// CREATE, FETCH, UPDATE operations
let operationPromise = operationVersion
.createWithResponseInfo({
uri: instance._uri,
method: "post",
data,
headers,
})
.then((response) => ({
...response,
body: new ConfigurationInstance(operationVersion, response.body),
}));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
};
instance.page = function page(params, callback) {
if (params instanceof Function) {
callback = params;
params = {};
}
else {
params = params || {};
}
let data = {};
if (params["pageSize"] !== undefined)
data["pageSize"] = params["pageSize"];
if (params["pageToken"] !== undefined)
data["pageToken"] = params["pageToken"];
const headers = {};
headers["Accept"] = "application/json";
let operationVersion = version, operationPromise = operationVersion.page({
uri: instance._uri,
method: "get",
params: data,
headers,
});
operationPromise = operationPromise.then((payload) => new ConfigurationPage(operationVersion, payload, instance._uri, data, instance._solution));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
};
instance.each = instance._version.each;
instance.list = instance._version.list;
instance.getPage = function getPage(targetUrl, callback) {
const operationPromise = instance._version._domain.twilio.request({
method: "get",
uri: targetUrl,
});
let pagePromise = operationPromise.then((payload) => new ConfigurationPage(instance._version, payload, instance._uri, {}, instance._solution));
pagePromise = instance._version.setPromiseCallback(pagePromise, callback);
return pagePromise;
};
instance.pageWithHttpInfo = function pageWithHttpInfo(params, callback) {
if (params instanceof Function) {
callback = params;
params = {};
}
else {
params = params || {};
}
let data = {};
if (params["pageSize"] !== undefined)
data["pageSize"] = params["pageSize"];
if (params["pageToken"] !== undefined)
data["pageToken"] = params["pageToken"];
const headers = {};
headers["Accept"] = "application/json";
let operationVersion = version;
// For page operations, use page() directly as it already returns { statusCode, body, headers }
// IMPORTANT: Pass full response to Page constructor, not response.body
let operationPromise = operationVersion
.page({ uri: instance._uri, method: "get", params: data, headers })
.then((response) => ({
statusCode: response.statusCode,
headers: response.headers,
body: new ConfigurationPage(operationVersion, response, instance._uri, data, instance._solution),
}));
operationPromise = instance._version.setPromiseCallback(operationPromise, callback);
return operationPromise;
};
instance.each = instance._version.each;
instance.eachWithHttpInfo = instance._version.eachWithHttpInfo;
instance.list = instance._version.list;
instance.listWithHttpInfo = instance._version.listWithHttpInfo;
instance.getPageWithHttpInfo = function getPageWithHttpInfo(targetUrl, callback) {
// Use request() directly as it already returns { statusCode, body, headers }
const operationPromise = instance._version._domain.twilio.request({
method: "get",
uri: targetUrl,
});
let pagePromise = operationPromise.then((response) => ({
statusCode: response.statusCode,
headers: response.headers,
body: new ConfigurationPage(instance._version, response, instance._uri, {}, instance._solution),
}));
pagePromise = instance._version.setPromiseCallback(pagePromise, callback);
return pagePromise;
};
instance.toJSON = function toJSON() {
return instance._solution;
};
instance[util_1.inspect.custom] = function inspectImpl(_depth, options) {
return (0, util_1.inspect)(instance.toJSON(), options);
};
return instance;
}
class ConfigurationPage extends TokenPage_1.default {
/**
* Initialize the ConfigurationPage
*
* @param version - Version of the resource
* @param response - Response from the API
* @param uri - URI of the resource
* @param params - Query parameters
* @param solution - Path solution
*/
constructor(version, response, uri, params, solution) {
super(version, response, uri, params, solution);
}
/**
* Build an instance of ConfigurationInstance
*
* @param payload - Payload response from the API
*/
getInstance(payload) {
return new ConfigurationInstance(this._version, payload);
}
[util_1.inspect.custom](depth, options) {
return (0, util_1.inspect)(this.toJSON(), options);
}
}
exports.ConfigurationPage = ConfigurationPage;