@cognigy/rest-api-client
Version:
Cognigy REST-Client
779 lines • 34.6 kB
JavaScript
"use strict";
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.HANDOVER_TO_HUMAN_AGENT_TOOL = void 0;
/* Custom modules */
const createNodeDescriptor_1 = require("../../../createNodeDescriptor");
const transcripts_1 = require("../../../../interfaces/transcripts/transcripts");
const constants_1 = require("../../../../constants");
exports.HANDOVER_TO_HUMAN_AGENT_TOOL = (0, createNodeDescriptor_1.createNodeDescriptor)({
type: "handoverToHumanAgentTool",
defaultLabel: "Handover to Human Agent Tool",
parentType: ["aiAgentJob", "llmPromptV2"],
constraints: {
editable: true,
deletable: true,
collapsable: true,
creatable: true,
movable: true,
placement: {
predecessor: {
whitelist: []
}
},
childFlowCreatable: false
},
behavior: {
stopping: true
},
preview: {
type: "text",
key: "toolId"
},
fields: [
// Tool-specific fields
{
key: "toolId",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__TOOL_ID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__TOOL_ID__DESCRIPTION",
type: "cognigyLLMText",
defaultValue: "handover_to_human_agent",
params: {
required: true,
rows: 1,
multiline: false,
maxLength: 64,
}
},
{
key: "description",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__DESCRIPTION__LABEL",
description: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__DESCRIPTION__DESCRIPTION",
type: "cognigyLLMText",
defaultValue: "Transfer the conversation to a human agent. Use this if you cannot address the user's request, if the user explicitly asks for a human, or if the situation requires empathy, judgement, or actions you cannot perform.",
params: {
required: true,
rows: 5,
multiline: true,
}
},
{
key: "parameters",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__PARAMETERS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__PARAMETERS__DESCRIPTION",
type: "toolParameters",
defaultValue: `{
"type": "object",
"properties": {
"handover_reason": {
"type": "string",
"description": "The reason for handing over to a human agent, including context from the conversation."
}
},
"required": ["handover_reason"],
"additionalProperties": false
}`,
params: {
required: false,
},
},
{
key: "debugMessage",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__DEBUG_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__DEBUG_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "condition",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__CONDITION__LABEL",
description: "UI__NODE_EDITOR__SERVICE__AI_AGENT_TOOL__FIELDS__CONDITION__DESCRIPTION",
type: "cognigyText",
defaultValue: "",
},
// Handover V2 fields
{
key: "handoverProvider",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__HANDOVER_PROVIDER__LABEL",
type: "handoverProvider",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__HANDOVER_PROVIDER__DESCRIPTION",
defaultValue: "legacyEndpoint",
params: {
required: true,
},
},
{
key: "handoverProviderConfig",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__HANDOVER_PROVIDER__LABEL",
type: "json",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__HANDOVER_PROVIDER__DESCRIPTION",
defaultValue: { liveAgentPriority: "none" },
params: {
required: true,
},
},
{
key: "text",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__TEXT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__TEXT__DESCRIPTION"
},
{
key: "repeatHandoverMessage",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__REPEAT_HANDOVER_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__REPEAT_HANDOVER_MESSAGE__DESCRIPTION",
defaultValue: false,
},
{
key: "cancelIntent",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__CANCEL_INTENT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__CANCEL_INTENT__DESCRIPTION"
},
{
key: "quickReply",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__QUICK_REPLY__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__QUICK_REPLY__DESCRIPTION"
},
{
key: "resolveBehavior",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__RESOLVE_BEHAVIOUR__LABEL",
defaultValue: "resetEntrypoint",
params: {
options: [
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__RESOLVE_BEHAVIOUR__OPTIONS__RESET_ENTRY_POINT__LABEL",
value: "resetEntrypoint"
},
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__RESOLVE_BEHAVIOUR__OPTIONS__CONTINUE_ENTRY_POINT__LABEL",
value: "continueEntrypoint",
},
],
},
},
{
key: "additionalCategoryIds",
type: "cognigyTextArray",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ADDITIONAL_CATEGORY_IDS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ADDITIONAL_CATEGORY_IDS__DESCRIPTION",
defaultValue: []
},
{
key: "sendResolveEvent",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_RESOLVE_EVENT__LABEL",
defaultValue: true,
},
{
key: constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_INBOX_ID,
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_INBOXID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_INBOXID__DESCRIPTION"
},
{
key: constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_SKILLS,
type: "cognigyTextArray",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_SKILLS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_SKILLS__DESCRIPTION",
},
{
key: constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_LANGUAGES,
type: "cognigyTextArray",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_LANGUAGES__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_LANGUAGES__DESCRIPTION",
},
{
key: constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_PRIORITY,
type: "select",
defaultValue: 'none',
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__LABEL",
params: {
options: [
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__OPTIONS__NONE__LABEL",
value: 'none'
},
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__OPTIONS__URGENT__LABEL",
value: "urgent"
},
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__OPTIONS__HIGH__LABEL",
value: "high"
},
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__OPTIONS__MEDIUM__LABEL",
value: "medium"
},
{
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_PRIORITY__OPTIONS__LOW__LABEL",
value: "low"
},
],
}
},
{
key: constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ALLOW_AGENT_INJECT,
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALLOW_AGENT_INJECT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALLOW_AGENT_INJECT__DESCRIPTION",
defaultValue: false,
},
{
key: "chatwootInboxId",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__CHATWOOT_INBOXID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__CHATWOOT_INBOXID__DESCRIPTION"
},
{
key: "sendTranscriptAsFirstMessage",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_TRANSCRIPT_AS_FIRST_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_TRANSCRIPT_AS_FIRST_MESSAGE__DESCRIPTION",
defaultValue: false,
},
{
key: "buttonId",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__BUTTON_ID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__BUTTON_ID__DESCRIPTION",
},
{
key: "salesforcePrechatEntities",
type: "json",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SALES_FORCE_PERCHAT_ENTITIES__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SALES_FORCE_PERCHAT_ENTITIES__DESCRIPTION",
defaultValue: "[]",
},
{
key: "salesforcePrechatDetails",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SALES_FORCE_PERCHAT_DETAILS__LABEL",
type: "json",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SALES_FORCE_PERCHAT_DETAILS__DESCRIPTION",
defaultValue: "[]",
},
{
key: "genesysLanguage",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_LANGUAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_LANGUAGE__DESCRIPTION",
},
{
key: "genesysSkills",
type: "cognigyTextArray",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_SKILLS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_SKILLS__DESCRIPTION",
defaultValue: [],
},
{
key: "genesysPriority",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_PRIORITY__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_PRIORITY__DESCRIPTION",
},
{
key: "genesysCustomAttributes",
type: "json",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_CUSTOM_ATTRIBUTES__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GENESYS_CUSTOM_ATTRIBUTES__DESCRIPTION",
defaultValue: {},
},
{
key: "eightByEightChannelId",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_CHANNELID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_CHANNELID__DESCRIPTION",
},
{
key: "eightByEightQueueId",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_QUEUEID__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_QUEUEID__DESCRIPTION",
},
{
key: "eightByEightJSONProps",
type: "json",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_JSONPROPS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__EIGTH_BY_EIGHT_JSONPROPS__DESCRIPTION",
defaultValue: {
"name": null,
"userId": null,
"email": null,
"phone": null,
"company": null,
"caseId": null,
"language": null,
"additionalProperties": [
{ "key": "Key name", "value": "Value from Cognigy" }
]
},
},
{
key: "sendOnQueueEvent",
type: "toggle",
defaultValue: false,
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_ON_QUEUE_EVENT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_ON_QUEUE_EVENT__DESCRIPTION",
},
{
key: "sendOnActiveEvent",
type: "toggle",
defaultValue: false,
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_ON_ACTIVE_EVENT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__SEND_ON_ACTIVE_EVENT__DESCRIPTION",
},
{
key: "getQueuePosition",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GET_QUEUE_POSITION__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GET_QUEUE_POSITION__DESCRIPTION",
defaultValue: false,
},
{
key: "updateIntervalQueuePosition",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_UPDATE_INTERVAL__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_UPDATE_INTERVAL__DESCRIPTION",
params: {
min: 30,
max: 3600, // 1 hour
},
condition: {
key: "getQueuePosition",
value: true
},
},
{
key: "getEstimatedWaitTime",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GET_ESTIMATED_WAIT_TIME__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__GET_ESTIMATED_WAIT_TIME__DESCRIPTION",
defaultValue: false,
},
{
key: "updateIntervalEstimatedWaitTime",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_UPDATE_INTERVAL__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__LIVE_AGENT_UPDATE_INTERVAL__DESCRIPTION",
params: {
min: 30,
max: 3600, // 1 hour
},
condition: {
key: "getEstimatedWaitTime",
value: true
},
},
{
key: "alternativeUpdate",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALTERNATIVE_UPDATE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALTERNATIVE_UPDATE__DESCRIPTION",
defaultValue: false,
},
{
key: "maximumQueuePosition",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__MAXIMUM_QUEUE_POSITION__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__MAXIMUM_QUEUE_POSITION__DESCRIPTION",
params: {
min: 1,
},
condition: {
key: "alternativeUpdate",
value: true,
},
},
{
key: "maximumEstimatedWaitTime",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__MAXIMUM_ESTIMATED_WAIT_TIME__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__MAXIMUM_ESTIMATED_WAIT_TIME__DESCRIPTION",
condition: {
key: "alternativeUpdate",
value: true,
},
},
{
key: "alternativeText",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALTERNATIVE_TEXT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ALTERNATIVE_TEXT__DESCRIPTION",
condition: {
key: "alternativeUpdate",
value: true,
},
},
{
key: "enableHandoverDisconnectMessageLiveAgent",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "enableHandoverConnectMessageLiveAgent",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "enableHandoverDisconnectMessageGenesys",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "enableHandoverConnectMessageGenesys",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "enableHandoverDisconnectMessageRingCentralEngage",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_DISCONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
{
key: "enableHandoverConnectMessageRingCentralEngage",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__FIELDS__ENABLE_HANDOVER_CONNECT_MESSAGE__DESCRIPTION",
defaultValue: true,
},
],
sections: [
// Tool-specific sections
{
key: "debugging",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_JOB__SECTIONS__DEBUG_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"debugMessage",
],
},
{
key: "advanced",
label: "UI__NODE_EDITOR__SERVICE__AI_AGENT_JOB__SECTIONS__ADVANCED__LABEL",
defaultCollapsed: true,
fields: [
"condition",
],
},
// Handover V2 sections
{
key: "cancelSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__CANCEL_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"cancelIntent",
"quickReply",
]
},
{
key: "resolveOptions",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__RESOLVE_OPTIONS__LABEL",
defaultCollapsed: true,
fields: [
"resolveBehavior",
"sendResolveEvent",
]
},
{
key: "liveAgentSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__LIVE_AGENT_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_INBOX_ID,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_SKILLS,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_LANGUAGES,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.LIVE_AGENT_PRIORITY,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.AGENT_ASSIST_INIT_MESSAGE,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ALLOW_AGENT_INJECT,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.GET_QUEUE_POSITION,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.UPDATE_INTERVAL_QUEUE_POSITION,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.GET_ESTIMATED_WAIT_TIME,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.UPDATE_INTERVAL_ESTIMATED_WAIT_TIME,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ALTERNATIVE_UPDATE,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.MAXIMUM_QUEUE_POSITION,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.MAXIMUM_ESTIMATED_WAIT_TIME,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ALTERNATIVE_TEXT,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ENABLE_HANDOVER_CONNECT_MESSAGE,
constants_1.COGNIGY_LIVE_AGENT_DESCRIPTOR_FIELDS.ENABLE_HANDOVER_DISCONNECT_MESSAGE,
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "eightByEightSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__EIGHT_BY_EIGHT_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"eightByEightChannelId",
"eightByEightQueueId",
"eightByEightJSONProps"
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "chatwootSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__CHATWOOT_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"chatwootInboxId",
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "ringCentralEngageSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__RING_CENTRAL_ENGAGE_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"additionalCategoryIds",
"enableHandoverConnectMessageRingCentralEngage",
"enableHandoverDisconnectMessageRingCentralEngage",
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "salesforceSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__SALES_FORCE_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"sendTranscriptAsFirstMessage",
"buttonId",
"salesforcePrechatEntities",
"salesforcePrechatDetails"
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "genesysSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__GENESYS_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"genesysLanguage",
"genesysSkills",
"genesysPriority",
"genesysCustomAttributes",
"enableHandoverConnectMessageGenesys",
"enableHandoverDisconnectMessageGenesys",
],
condition: {
or: [
{
key: "handoverProvider",
value: "legacyEndpoint"
},
{
key: "handoverProvider",
// @ts-ignore
value: null
}
]
}
},
{
key: "eventSettings",
label: "UI__NODE_EDITOR__SERVICE__HANDOVER_TO_AGENT__SECTIONS__EVENT_SETTINGS__LABEL",
defaultCollapsed: true,
fields: [
"sendOnQueueEvent",
"sendOnActiveEvent",
]
}
],
form: [
// Tool-specific fields first
{ type: "field", key: "toolId" },
{ type: "field", key: "description" },
// Handover provider and message
{ type: "field", key: "handoverProvider" },
{ type: "field", key: "text" },
{ type: "field", key: "repeatHandoverMessage" },
// Handover settings sections
{ type: "section", key: "liveAgentSettings" },
{ type: "section", key: "chatwootSettings" },
{ type: "section", key: "salesforceSettings" },
{ type: "section", key: "genesysSettings" },
{ type: "section", key: "eightByEightSettings" },
{ type: "section", key: "ringCentralEngageSettings" },
{ type: "section", key: "cancelSettings" },
{ type: "section", key: "resolveOptions" },
{ type: "section", key: "eventSettings" },
// Tool-specific sections
{ type: "section", key: "debugging" },
{ type: "section", key: "advanced" },
],
appearance: {
color: "white",
textColor: "#252525",
variant: "mini",
},
function: async ({ cognigy, config, childConfigs, nodeId: thisNodeId }) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
const { api, input } = cognigy;
const {
// Tool-specific fields to exclude from handover config
toolId, description, parameters, debugMessage, condition } = config,
// Rest is handover config
handoverConfig = __rest(config, ["toolId", "description", "parameters", "debugMessage", "condition"]);
const sessionState = await api.loadSessionState();
const toolCall = (_a = sessionState.lastToolCall) === null || _a === void 0 ? void 0 : _a.toolCall;
const aiAgentJobNode = (_b = sessionState.lastToolCall) === null || _b === void 0 ? void 0 : _b.aiAgentJobNode;
if (!(toolCall === null || toolCall === void 0 ? void 0 : toolCall.id)) {
(_c = api.logDebugError) === null || _c === void 0 ? void 0 : _c.call(api, "UI__DEBUG_MODE__AI_AGENT_ANSWER__ERROR__MESSAGE");
}
if (toolCall && aiAgentJobNode) {
if (!((_d = api.checkThink) === null || _d === void 0 ? void 0 : _d.call(api, thisNodeId))) {
const handoverReason = ((_f = (_e = toolCall === null || toolCall === void 0 ? void 0 : toolCall.function) === null || _e === void 0 ? void 0 : _e.arguments) === null || _f === void 0 ? void 0 : _f.handover_reason) || "Handover to human agent requested";
// Optional Debug Message
if (debugMessage) {
(_g = api.logDebugMessage) === null || _g === void 0 ? void 0 : _g.call(api, JSON.stringify({ handover_reason: handoverReason }, null, 2));
}
// Execute handover using api.handoverV2() with only handover-specific config
const handoverResult = await ((_h = api.handoverV2) === null || _h === void 0 ? void 0 : _h.call(api, {
cognigy,
config: handoverConfig,
nodeId: thisNodeId,
childConfigs,
nodeType: "handoverToAgent",
}));
input.handover = handoverResult;
// Add Tool Call Message to Transcript
const toolCallTranscriptStep = {
role: transcripts_1.TranscriptRole.ASSISTANT,
type: transcripts_1.TranscriptEntryType.TOOL_CALL,
source: "system",
payload: Object.assign({ name: toolCall.function.name, id: toolCall.id, input: toolCall.function.arguments }, (toolCall.thoughtSignature && { thoughtSignature: toolCall.thoughtSignature }))
};
await api.addTranscriptStep(toolCallTranscriptStep);
// Determine tool answer content based on handover result
let toolAnswerContent;
if ((handoverResult === null || handoverResult === void 0 ? void 0 : handoverResult.status) === "error") {
toolAnswerContent = `Handover to human agent failed. Error: ${(handoverResult === null || handoverResult === void 0 ? void 0 : handoverResult.error) || "Unknown error"}. Reason for handover: ${handoverReason}`;
}
else {
toolAnswerContent = `Handover to human agent initiated successfully. Reason: ${handoverReason}`;
}
// Add Tool Answer Message to Transcript (includes error if any)
const toolAnswer = {
role: transcripts_1.TranscriptRole.TOOL,
type: transcripts_1.TranscriptEntryType.TOOL_ANSWER,
source: "system",
payload: {
toolCallId: toolCall.id,
name: toolCall.function.name,
content: toolAnswerContent,
}
};
await api.addTranscriptStep(toolAnswer);
// Clear the last tool call from session state
api.updateSessionStateValues({
lastToolCall: undefined
});
// If there was an error, don't stop execution - let the AI Agent handle it
if ((handoverResult === null || handoverResult === void 0 ? void 0 : handoverResult.status) === "error") {
const { flow, node } = aiAgentJobNode;
if (flow && node) {
api.resetNextNodes();
await api.executeFlow({
flowNode: {
flow,
node,
},
absorbContext: true,
});
}
return;
}
// Stop execution if sendOnQueueEvent is not enabled (same behavior as handoverV2)
if (!handoverConfig.sendOnQueueEvent) {
api.stopExecution();
}
}
else {
throw new Error("Infinite Loop Detected");
}
}
}
});
//# sourceMappingURL=handoverToHumanAgentTool.js.map