脚本集成

您可以在 Agent Builder 中创建自己的脚本操作。 这允许您自定义 Mpower 坐席关闭 通过 CXone MpowerAgent Builder 创建的可处理语音或聊天交互的虚拟坐席。 在对话中的响应方式。 脚本作是您可以在 Mpower 坐席 对话 中使用的自定义关闭 Agent Builder 中的 Mpower 坐席 故事、规则和流程。 作,用于定义机器人在对话期间的响应。

脚本操作是在 Agent Builder 中的脚本集成中创建的。 脚本集成支持 JavaScript。 每个脚本集成均可有多个操作。 启用作后,当您向 Mpower 坐席 story Mpower 坐席rule关闭 用于基于意图和上下文训练 Mpower 坐席 处理交互。fallback关闭 用于定义 Mpower 坐席的 对不受上下文影响的消息的响应。添加 响应时,该作将在关闭 当目的地不支持富媒体时发送的纯文本替代方案。actions(作)菜单上可用。

以下列表提供了您可以使用脚本操作的一些方式的示例:

  • 编写代码来设计 Mpower 坐席作以满足组织的独特需求。
  • 调用您自己的外部 API 作为脚本操作。
  • 将脚本添加到 Mpower 坐席 技能并在 Skill Store中发布它们。

Agent Builder 脚本在服务器上运行,因此在构建脚本时需要考虑一些限制

脚本编辑器

脚本集成可以有多个操作。 每个操作都有自己的脚本。 您可以从每个操作的属性访问脚本编辑器。

在编辑器中,您可以在左侧输入代码,然后单击执行三角形 一个指向右侧的三角形箭头。,以便在“控制台”窗格中查看结果。

使用 AI 创建或编辑脚本

本节中的内容适用于受控版本 (CR) 中的产品或功能。 如果您不是 CR 组的成员,如需了解更多信息,请联系您的 客户代表

使用 脚本编辑器 选项卡显示代理Copilot,您可以在其中使用自然语言生成脚本、了解有关脚本的更多信息、请求脚本更改等。

脚本变量

您可以创建变量以便在 Agent Builder 脚本中使用。 变量可以存储将在脚本中的其他地方使用的值。 它们只能在您创建它们所在的脚本集成中使用,但您可以在该集成中的任何脚本中使用它们。

脚本中的变量值无法更改。 只能在脚本集成页面上修改,或者在 Mpower 坐席story关闭 用于基于意图和上下文训练 Mpower 坐席 处理交互。rule关闭 用于定义 Mpower 坐席的 对不受上下文影响的消息的响应。fallback关闭 当目的地不支持富媒体时发送的纯文本替代方案。的响应中使用引用变量的作时修改它们。

要在某个操作中使用变量:

  • 该操作的脚本必须引用该变量。
  • 如果您希望能够更改值,则必须在该操作中使其可编辑

Agent Builder 脚本支持四种类型的变量:

  • 文本:文本变量保存简单的字符串值。 可编辑的文本变量变成脚本操作 UI 中的一个字段,您可以在该字段中输入文本来为该变量赋值。
  • 数字:数字变量保存数值。 可编辑的数字变量变成脚本操作 UI 中的一个字段,您可以在该字段中输入数字来为该变量赋值。
  • 选择:当您想要为变量定义多个可能值时,请使用选择变量。 选择变量成为脚本操作 UI 上的下拉列表。 该下拉列表中的选项在“脚本”选项卡上变量定义的字段中加以定义。
  • 秘密:使用秘密变量来保存私有数据,例如令牌或 API 凭据。 输入值后,Agent Builder 将用星号 (*) 屏蔽除前五个字符之外的所有字符。 该值是只读的,不能被脚本或脚本操作覆盖或更改。 如果需要更改它,则必须更新脚本中“变量”页面上的值。 无法使秘密变量可编辑。

您可以定义文本、数字和选择变量的默认值。 当变量可编辑时,在将作添加到Mpower 坐席响应时,可以通过选择或输入其他值来覆盖默认值。 当变量不可编辑但在操作脚本中被引用时,将使用默认值(如果有)。 如果未指定默认值,则该变量在脚本中没有值。

您创建的变量将被添加到脚本集成的 Variables 对象中。

标准对象和函数

除了标准 JavaScript 功能之外,Agent Builder 还具有以下特定于机器人的框架:

  • Bot 对象提供了一种替代方法来制作 Mpower 坐席 在对话中的响应方式。
  • Store 对象允许您保留一个已运行脚本的上下文信息。
  • 变量对象保存您添加到脚本集成的所有变量。
  • fetch 函数是标准 JavaScript fetch 的实现。
  • 控制台允许进行调试。

由于 Agent Builder 脚本在服务器上运行,因此在构建脚本时需要考虑一些限制

Bot 对象

Bot 对象包含触发脚本操作的方法。 编写脚本时,Web 编辑器会提示您所有可用的方法,包括它们的参数和类型。 使用 Bot 对象时可以使用以下方法:

Bot 对象中的许多方法可选择使用 options 参数进行自定义。 Options 可以是 fallbackText回退)或 typing智能输入)。 typing 的可能值为 123

Options = {
	"fallbackText": "this is the fallback text",
	"typing": 2,
}

sendMessage

输入要发送的 Mpower 坐席 的纯文本消息。 使用格式 .sendMessage(text: string, options: Options): void。 无需 options 参数

Bot.sendMessage('This is message written by bot')

sendAdaptiveCard

输入要发送的 Adaptive Card 的有效负载。 使用格式 .sendAdaptiveCard(adaptiveCard: AdaptiveCardPayload, options: Options): void。 无需 options 参数

您可以在 Adaptive Card 设计器中找到自适应卡的有效负载。 在 Agent Builder 中,转到首选项 > Adaptive Cards,然后复制“卡有效负载编辑器”窗格的内容。 您可以了解有关在 Agent Builder使用 Adaptive Cards 的信息。

Bot.sendAdaptiveCard(<Valid_Adaptive Card_JSON_Payload>)

sendButtons

配置并发送最多三个按钮。 所有按钮的设置都可以通过设置属性来安排。 使用下面的示例将对话框中的按钮设置与脚本中的属性进行比较。 使用格式 .sendButtons(text: string, buttons: ButtonPayload[], options: Options): void。 无需 options 参数

Bot.sendButtons('This is message written by bot', [
{
	title: 'Button 1',
	intent: {
		name: 'mood'
	}
}
])

您还可以通过脚本触发 entityValue、文本或 url。

组合这些属性可能会导致错误或意外行为。

// triggers intent
{
	title: 'Title',
	intent: 'mood'
}

// triggers intent with entity value
{
	title: 'Title',
	intent: {
		name: 'mood',
		entity: 'myEntity',
		value: 'entity value'
	}
}

// url
{
	title: 'Title',
	url: 'https://www.nice.com'
}

// text
{
	title: 'Title',
	text: 'This is a text'
}

sendQuickReplies

配置并发送最多三个快速回复。 所有快速回复设置都可以通过设置属性来安排。 用于快速回复的选项与用于按钮的选项相同。 使用格式 .sendQuickReplies(text: string, quickReplies: QuickReplyPayload[], options: Options): void。 无需 options 参数

Bot.sendQuickReplies('This is message written by bot', [
{
	title: 'Quick reply 1',
	intent: {
		name: 'mood'
	}
}
])

您还可以通过脚本触发实体 valuetexturl

组合这些属性可能会导致错误或意外行为。

// triggers intent
{
	title: 'Title',
	intent: 'mood'
}

// triggers intent with entity value
{
	title: 'Title',
	intent: {
		name: 'mood',
		entity: 'myEntity',
		value: 'entity value'
	}
}

// url
{
	title: 'Title',
	url: 'https://www.nice.com'
}

// text
{
	title: 'Title',
	text: 'This is a text'
}

sendCards

配置并发送最多 10 张卡。 使用格式 .sendCards(cards: CardPayload[], options: Options): void。 无需 options 参数

Bot.sendCards([{
	title: 'Card title',
	description: 'Card description',
	image: 'https://picsum.photos/200/300',
	mimetype: 'image/jpeg',
	button: {
		title: 'Button title',
		url: 'https://www.nice.com/'
	}
}])

sendMultimedia

多媒体不通过 Agent Builder 进行验证,但可以在其他集成中进行验证。 url 上的内容必须在使用脚本的整个过程中可用。 该内容还必须可公开访问,因为在运行脚本时将重复下载该内容。 媒体类型和大小限制与使用 Multimedia Mpower 坐席时相同。 使用格式 .sendMultimedia(url: string, mimetype: string, options: Options): void。 无需 options 参数

Bot.sendMultimedia('https://picsum.photos/200/300', 'image/jpeg')

sendRichLink

配置并发送富链接。 使用格式 .sendRichLink(richlink: RichLinkPayload): void

Bot.sendRichLink({
	title: 'Title',
	url: 'https://www.nice.com',
	image: 'https://picsum.photos/200/300',
	mimetype: 'image/jpeg'
})

sendListPicker

配置并发送最多 12 个列表选择器选项。 所有列表选择器选项都可以通过设置属性来安排。 用于列表选择器的选项与用于按钮的选项相同。 使用格式 .sendListPicker(message: string, description: string, actions: ListPickerPayload[], options: Options): void。 无需 options 参数

Bot.sendListPicker('Message', 'Description', [{
	title: 'Title',
	description: 'Description',
	image: {
		url: 'https://picsum.photos/200/300',
		mimetype: 'image/jpeg'
	}
	intent: {
		name: 'mood'
	}
}])

handover

使用 queueId 配置切换关闭 将联系人从虚拟坐席转移给人工坐席的操作。到的位置。 可将其保留为 null 以使用自动重新路由,其也可以是现有队列的 id。 使用格式 .handover(queueId: string, note: stringId): voidnote 参数是可选的,但 queueId 是必需的。

要查找 queueId

  1. CXone Mpower 中单击应用程序选择器 并选择ACD

  2. 转到 Digital Experience > 路由队列

  3. 找到您需要 id 的队列,然后单击编辑

  4. 在队列的编辑页面上,查看浏览器中的 URL。 /edit/ 之后的数字是 queueId。 它应该看起来像由破折号分隔的五组数字和字母。 例如,67bf5865-4556-40db-ba44-6c0cc3f88ffa。

Bot.handover(null)
// or
Bot.handover('queueId')

addTags

配置应加以应用的标记。 脚本中使用的任何标记必须已存在于 Agent Builder 中。 如果在脚本中调用了某个标记,但其不存在,则该操作将被忽略。 使用格式 .addTags(tags: string[]): void

Bot.addTags(['Tag 1', 'Tag 2'])

waitForResponse

在某些情况下,您需要等待客户响应并继续执行脚本。 由于与客户的通信是异步的,因此等待响应也是异步的。 Bot.waitForResponse 方法采用一个参数:收到响应后将执行的函数的名称。 使用格式 .waitForResponse(functionName: string): void

该函数具有延迟行为。 这意味着执行结果不会立即生效。 相反,当前的脚本执行必须先结束。 如果希望脚本以延迟行为函数结束,必须使用返回语句或条件明确停止脚本执行。

function main() {
	console.log('Testing wait for response')
	Bot.waitForResponse('response') //The script continues to run and the next line executes while listening for a customer response
	console.log('This is still going to be executed')
}

function response() {
	console.log('Customer responded', Bot.slots['last customer message'].value)
}

fillSlot

配置应加以应用的插槽关闭 从联系人的消息中提取并保存以用于机器人响应的实体。 类似于变量。。 脚本中使用的任何插槽必须已存在于 Agent Builder 中。 如果在脚本中调用了某个插槽,但其不存在,则该操作将被忽略。

如果您只想存储已运行脚本的值,请使用局部变量或使用 Store 对象。 使用格式 .fillSlot(name: string, value: any[]): void

要访问实际插槽值,您必须访问 .value 属性。

function main() {
	Bot.fillSlot('slotName', 'slotValue');
	console.log(Bot.slots.slotName.value);
}

slots

在点符号中,编辑器可提示可用的插槽关闭 从联系人的消息中提取并保存以用于机器人响应的实体。 类似于变量。,但这仅在插槽名称不包含空格或特殊字符时适用。 如果插槽名称包含空格或特殊字符,则必须使用方括号表示法。

console.log(Bot.slots)

// example
let contactId = Bot.slots['contact.id'].value
let lastCustomerMessage = Bot.slots['last customer message'].value

sendAsCustomer

此功能允许您添加联系人关闭 与联络中心的坐席、IVR 或机器人交互的人员。在您的故事关闭 用于基于意图和上下文训练 Mpower 坐席 处理交互。规则关闭 用于定义 Mpower 坐席的 对不受上下文影响的消息的响应。中可能说的内容。 使用格式 .sendAsCustomer(text: string): void

该函数具有延迟行为。 这意味着执行结果不会立即生效。 相反,当前的脚本执行必须先结束。 如果希望脚本以延迟行为函数结束,必须使用返回语句或条件明确停止脚本执行。

Bot.sendAsCustomer('Hello bot')

Store 对象

Store 是为了在脚本执行期间存储数据而创建的对象。 与局部变量相比,它的优点是可以跨多个 .waitForResponse 函数使用。

set, get

Store.set(name: string, value: any[]): void

Store.get(name: string): any[]

function main() {
	Store.set('token', 'my-secret-token')
	Bot.waitForResponse('response')
}

async function response() {
	console.log(Store.get('token')) // my-secret-token is logged
}

变量对象

Variables 对象保存您在脚本集成中创建的变量。 每个变量都是 Variables 的属性。 每个变量都有一组保存有关它的信息的子属性。 以下示例显示了一个名为 colorChoice 的选择变量:

"colorChoice": {
  "defaultValue": "red",
  "options": [
	"red",
	"green",
	"blue"
	],
  "type": "select",
  "value": "red",
  "name": "colorChoice"
}		

在该示例中,分配给变量的值列表包含在 options 属性中。

defaultValuevalue 属性最初保存相同的值。 如果您没有为选择变量指定默认值,则默认值为 null。 变量值无法在脚本中更改,但可使它们可编辑,然后在故事或规则中使用操作时进行更改。

引用脚本中的变量

使用点表示法引用变量值:Variables.varName.value

引用选择变量中的选项列表:Variables.varName.options

查看脚本集成中的现有变量

通过将以下行添加到代码中,然后执行脚本,您可以在脚本中查看现有变量及其属性的列表。 该列表显示在控制台中。 代码是:console.log(Variables)。 同样,您可以通过向脚本中添加 console.log(Variables.varName.value)console.log(Variables.varName.options) 来查看单个变量的内容。

fetch 函数

fetch(url: string, ?options),可能的选项有:

  • 方法 - 'GET'、'POST'、'PUT'、'DELETE'
  • 标头
  • form_params
  • json
  • 正文

使用 fetch 与 API 进行通信。 这些可以是任何 CXone MpowerAPI 或您自己的 API。

const URL = 'https://nice.com'

async function main() {
	// 1. using async/await
	try {
		const response1 = await fetch(URL, { 'method': 'GET' })

		console.log(
			'response 1',
			response1.ok,
			response1.status,
			response1.statusText,
			response1.url,
			response1.headers
		)
		console.log('response 1', await response1.text())
	} catch (exception) {
		console.log('Error occured', exception)
	}

	// 2. using Promises
	fetch(URL, { 'method': 'GET' })
		.then(response => {
			console.log(
				'response 2',
				response.ok,
				response.status,
				response.statusText,
				response.url,
				response.headers
			)
	
			return response.text()
		})
		.then(response => {
			console.log('response 2', response)
		})
		.catch(exception => {
			console.log('Error occured', exception)
		})
	
	// 3. using fetchSync
	try {
		const response3 = fetchSync(URL, { 'method': 'GET' })
		console.log('response 3', response3)
	} catch (exception) {
		console.log('Error occured', exception)
	}
}

fetchSync

fetch 函数是 JavaScript fetch 的标准实现,它返回 Promise,并在响应时实现 .json().text() 函数。

还有一个同步变体 fetchSync,它直接返回响应,而不是 Promise。 如果您想与 JavaScript 的异步世界保持一致,请使用标准的 fetch 函数。

console 函数

console 用于测试您的脚本。 您可以记录任何数据。 日志的结果也存储在对话历史记录中,但不会被发送给联系人关闭 与联络中心的坐席、IVR 或机器人交互的人员。

log

使用格式 console.log(…output: any[]): void

console.log('my log', 123, {pi: 3.14})

warn

使用格式 console.warn(…output: any[]): void

console.warn('my warn', 123, {pi: 3.14})

info

使用格式 console.info(…output: any[]): void

console.info('my info output', 123, {pi: 3.14})

debug

使用格式 console.debug(…output: any[]): void

console.debug('my debug output', 123, {pi: 3.14})

error

使用格式 console.error(…output: any[]): void

console.error('my error output', 123, {pi: 3.14})

错误处理

onError

您可以通过定义 onError 函数来处理意外例外情况引起的错误。

let onError = (e) => console.log('my handler', e.message)
		
function main() {
	Bot.nonExistentMethod()
}

哈希函数

您可以在 Agent Builder 中的脚本中使用 CryptoJS 库。 例如:

const cryptojs = require('crypto-js');x
var hash = CryptoJS.SHA256("TOKEN");

您可以在 CryptoJS 文档 一个正方形图标,箭头从中心指向右上角。 网站上了解有关使用此库的更多信息。