@cognigy/rest-api-client
Version:
Cognigy REST-Client
148 lines • 5.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handoverNode = void 0;
/** Custom Modules */
const createNodeDescriptor_1 = require("../../../createNodeDescriptor");
/** Helper Modules */
const design_1 = require("../utils/design");
const transfer_mapper_1 = require("../../voice/mappers/transfer.mapper");
const utils_1 = require("./helper/utils");
exports.handoverNode = (0, createNodeDescriptor_1.createNodeDescriptor)({
type: "handover",
defaultLabel: "Transfer",
summary: "UI__NODE_EDITOR__HANDOVER__SUMMARY",
fields: [
{
key: "handoverReason",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__HANDOVER_REASON__LABEL",
type: "cognigyText",
defaultValue: "Bot initiated handover",
params: {
required: true
}
},
{
key: "transferTarget",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_TARGET__LABEL",
type: "cognigyText",
defaultValue: "tel:+49123456789",
params: {
required: true
}
},
{
key: "transferReferredByURL",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_REFERRED_BY_URL__LABEL",
type: "cognigyText",
description: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_REFERRED_BY_URL__DESCRIPTION",
defaultValue: ""
},
{
key: "useTransferSipHeaders",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__USE_TRANSFER_SIP_HEADERS__LABEL",
type: "toggle",
description: "UI__NODE_EDITOR__HANDOVER__FIELDS__USE_TRANSFER_SIP_HEADERS__DESCRIPTION",
defaultValue: false
},
{
key: "transferSipHeaders",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_SIP_HEADERS__LABEL",
type: "json",
description: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_SIP_HEADERS__DESCRIPTION",
defaultValue: `[{
"name": "X-My-Header",
"value": "my_value"
}]`,
condition: {
key: "useTransferSipHeaders",
value: true
}
},
{
key: "transferNotifications",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_NOTIFICATIONS__LABEL",
type: "toggle",
description: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_NOTIFICATIONS__DESCRIPTION",
defaultValue: false
},
{
key: "transferNotificationsHangupMS",
label: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_NOTIFICATIONS_HANGUP_MS__LABEL",
type: "number",
description: "UI__NODE_EDITOR__HANDOVER__FIELDS__TRANSFER_NOTIFICATIONS_HANGUP_MS__DESCRIPTION",
defaultValue: 5000,
params: {
min: 0,
max: 60000,
step: 500
},
condition: {
key: "transferNotifications",
value: true
}
},
],
sections: [
{
key: "advanced",
label: "UI__NODE_EDITOR__HANDOVER__SECTIONS__ADVANCED__LABEL",
defaultCollapsed: true,
fields: [
"transferNotifications",
"transferNotificationsHangupMS",
"transferReferredByURL",
"useTransferSipHeaders",
"transferSipHeaders",
]
}
],
preview: {
key: "transferTarget",
type: "text"
},
appearance: {
color: design_1.nodeColor
},
form: [
{
type: "field",
key: "handoverReason"
},
{
type: "field",
key: "transferTarget"
},
{
type: "section",
key: "advanced"
}
],
function: async ({ cognigy, config, nodeId }) => {
const { api, input } = cognigy;
const { handoverReason, transferTarget, transferReferredByURL, useTransferSipHeaders, transferSipHeaders, transferNotifications, transferNotificationsHangupMS } = config;
const transferParams = {
transferReason: handoverReason,
transferTarget,
useTransferSipHeaders,
transferSipHeaders,
transferNotifications,
transferNotificationsHangupMS,
transferReferredByURL
};
try {
if (input.channel === "adminconsole") {
await api.say("Transferring a call is not supported in the Interaction Panel, please use the AudioCodes endpoint.", null);
return;
}
const { isFeatureAccmEnabled } = api.getEndpointSettings();
const payload = isFeatureAccmEnabled ? (0, utils_1.buildPayloadAccm)("handover", transferParams, nodeId) : transfer_mapper_1.transfer.handleInput("audioCodes", transferParams);
await api.say(null, {
_cognigy: payload
});
}
catch (error) {
throw new Error(`Error on hangup node. Error message: ${error.message}`);
}
}
});
//# sourceMappingURL=handover.js.map