华为云用户手册

  • 告警参数 参数名称 参数含义 告警源 产生告警的系统名称。例如:DWS。 集群名称 产生告警的集群名称。 定位信息 产生告警的集群ID、集群名称。例如,cluster_id: xxxx-xxxx-xxxx-xxxx,cluster_name: test_dws。 详细信息 产生告警的详细信息,包括集群、阈值信息。例如:CloudService=DWS, resourceId: xxxx-xxxx-xxxx-xxxx, resourceIdName: test_dws, first_alarm_time: 2022-11-26 11:14:58;集群test_dws的SQL探针阈值为2倍。该集群sql探针超过阈值的SQL探针有:'select xxx from xxxx'。 产生日期 产生告警的时间。 状态 当前告警的处理状态。
  • 后续操作 当您需要修改外呼任务时,您可以单击“暂停”,暂停外呼任务。 任务暂停成功后,您可以单击“编辑”,修改外呼任务。其中主叫号码修改步骤如下: 单击“主叫号码”,进入选择主叫号码页面,默认展示已选择的主叫号码。 图13 选择主叫号码 单击“新增”,选择其他主叫号码。已选择的主叫号码不支持再次选择。新增的主叫号码数量不能超过系统管理员配置的“主叫号码最大数量”的值。 图14 新增主叫号码 单击“确定”,主叫号码选择完成。返回选择主叫号码页面,单击“确定”,主叫号码配置完成。 当您需要查看任务结果时,您可以单击“某个任务”进入外呼任务详情,在外呼任务详情页面点击外呼结果,查看针对每一个客户的外呼结果。 在外呼结果页面,您可以: 单击“详情”可查看您所配置的该客户的全部被叫号码的所有外呼结果 单击“业务结果”,可对呼叫完成的外呼号码进行备注标记。 单击“导出”,可导出任务结果。 单击“查看导出结果”,可查看导出结果,支持下载。 此处导出下载的数据中,包含个人数据,获取后务必谨慎处理,防止个人数据外泄滥用。
  • 配置智能信息匹配流程 系统预置的智能信息匹配流程如下所示: 该流程实现如下功能: 在应答图元,向客户播放欢迎提示语。该语音文件需要自定义。 在1处的业务接口调用图元中,根据每次交互记录,将客户端发送的文本信息采用空格间隔,并记录该信息是客户说的还是座席说的。 在语义识别图元,对本次交互的信息进行识别: 如果存在敏感词,则触发敏感词提醒,进入3处的业务接口调用分支将敏感词赋值到流程变量中。 如果不存在敏感词,且匹配到意图,进入4处的业务接口调用分支,用匹配的意图名进行问答接口调用获取推荐答复 如果出现超时,未知意图等错误时,进入2处的业务接口调用分支,直接用本次的交互信息进行问答接口调用获取推荐答复 应答图元将获取的推荐答复和敏感词返回输出。 触发完成后,敏感词置空,进入下一轮循环。 根据上述描述,配置人员需要修改欢迎语的语音模板、在业务接口调用图元中调用具体的推荐、知识获取接口,来实现真实的信息推荐功能。 修改欢迎语资源模板 修改业务接口调用图元 修改语义识别后返回给调用方的应答模板 父主题: 配置预置流程
  • 如何实现传递拆线原因码给指定业务接口? 有时候,业务需要我们在呼叫拆线时调用指定的接口,上报拆线原因码等信息。实现这个功能的要点,除了在接口管理定义指定的接口,还需要做一个异常流程,以及通过一个全局变量记录流程拆线的原因。 首先,需要明确一下呼叫拆线原因的分类。从呼叫参与主体角度可以分为三类: 一是用户主动挂机拆线 二是流程正常逻辑结束的拆线 三是流程异常结束的拆线 本文将介绍如何配置流程、变量和接口来给指定接口上报这三类拆线的原因码,这里约定流程正常逻辑结束拆线原因码为0,流程异常结束拆线原因码为1,用户主动挂机拆线原因码为2。 定义全局变量标识拆线原因。 添加一个全局变量,一定要填写缺省值,且值为用户主动挂机拆线的原因码。例如名称为release_type,数据类型字符型,缺省值为2,如下图: 添加异常流程并设置异常拆线的原因码。 参考添加流程,创建一个流程,场景类型一定要选择异常流程。通常,异常流程要有一个机器人回复图元,用于播放一段因为流程进入异常给用户造成不便的礼貌用语,例如Sorry,We are facing some technical issues, Please try after some time. Thank you. 然后,就可以用业务接口图元来给上面的全局变量赋值,标识为流程异常拆线的原因码,我们这里就设置为1;最后,走到结束图元,来结束已经走到异常流程的呼叫。 正常流程结束图元前设置正常拆线的原因码。 不需要改变现有正常流程的逻辑,只需要在正常流程结束图元前面,增加一个业务接口调用图元,给上面的全局变量赋值,标识为流程正常拆线的原因码,我们这里就设置为0。例如: 指定接口的参数配置。 参考4.1.1章节,根据业务提供的接口信息,添加业务接口,唯一特殊的地方,就是要把上面标识拆线原因码的变量作为消息体的入参配置到接口中,例如下图: 主流程结束图元调用指定接口。 参考结束图元,对主流程的结束图元调用已经配置的接口,就可以实现流程拆线后调用指定接口上报不同的拆线原因码。 父主题: 常见问题
  • 操作步骤 进入意图管理界面。 新建意图或打开现有意图,选择“规则语料”页签,单击“新增”添加规则语料。 语料左侧的标记可以提示规则格式是否正确,当配置不正确的时候,会提示出错信息。 语料右侧的精确匹配按钮可以选择这条语料规则是否进行精确匹配。 (可选)再次单击“新增”按钮可以新增另一条规则语料,单击语料最右侧的“删除”按钮,可以删除该条语料,双击语料文字可以重新编辑该条语料。 测试规则语料,输入对话和机器人聊天,测试配置的规则是否生效。当规则生效时,聊天窗口中显示意图置信度为大于等于1的整数。 当同时配置了普通语料和规则语料时,系统会优先匹配规则语料,当所有规则匹配失败时,才会匹配普通语料。
  • 报文样例 请求头: Authorization:Bearer e******************************e Content-Type:application/json 请求参数: { "timestamp": 1625898453913, "messages": [//1connected{ "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "CHAT", "mediaType": "TEXT", "content": "The call is connected to an agent.", "simQuestions": null, "senderNickname": "SYSTEM", "timestamp": 1625898453913, "sourceType": "SYSTEM", "callId": null, "messageCode": null, }, //queuing{ "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "CHAT", "mediaType": "TEXT", "content": "Queuing...", "simQuestions": null, "senderNickname": "SYSTEM", "timestamp": 1625898453913, "sourceType": "SYSTEM", "messageCode": null, }, //disconnect because of agent { "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "DISCONNECT", "mediaType": null, "content": null, "simQuestions": null, "senderNickname": null, "timestamp": 1625898871961, "sourceType": "AGENT", "messageCode": null, }, //disconnect because of timeout, and async switch is off { "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "DISCONNECT", "mediaType": null, "content": null, "simQuestions": null, "senderNickname": null, "timestamp": 1625898871961, "sourceType": "SYSTEM", "messageCode": null, }, //disconnect because of timeout, and async switch[D1] is on { "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "DISCONNECT", "isOfflineStatus":true, "mediaType": "TEXT", "content": "{TIPS}", "simQuestions": null, "senderNickname": null, "timestamp": 1625898871961, "sourceType": "SYSTEM", "messageCode": null, }, //read{ "from": "202105284494222653", "channel": "WEB", "to": "44444444", "controlType": "READ", "mediaType": null, "content": "messageId1,messageId2[D2] ", "simQuestions": null, "senderNickname": null, "timestamp": 1625898871961, "sourceType": "AGENT", "messageCode": null, } ] } 响应参数: { "resultCode": "0", "resultDesc": "success." }
  • 请求说明 表1 请求头参数 序号 名称 参数类型 是否必选 说明 1 Authorization string True 用于身份验证。值为auth-v2/{accessKey}/{timestamp}/{SignedHeaders}。 表2 请求体参数 序号 名称 参数类型 是否必选 说明 1 messages list[DownLinkMsg] True 消息和事件 2 timestamp long True 发送时间,将用于生成身份验证签名。 表3 DownLinkMsg参数结构 序号 名称 参数类型 是否必选 说明 1 channel string True 消息通道类型,如Web。 2 isOfflineStatus Boolean False 用于客户端判断下一步是否可以发送消息。 当用户等待超时时,AICC将推送消息。 如果异步开关打开,则该值将为true。 如果异步开关关闭,则该值将为false。 3 content string True 发送给客户的MT消息的内容。 如果controlType为聊天,则 如果媒体类型为文本, 取值为文本内容。 如果mediaType为图像/视频/AUDIO,则值为资源的id,客户端应使用下载文件流API获取资源。 如果mediaType为LOCATE,则取值为位置信息,格式为纬度/经度/描述。如果controlType为读取,则该值为已读取的messageId数组。 4 from string True 消息发送者的ID。渠道ID。 5 mediaType string True 消息媒体类型,例如文本类型(TEXT)、图像(IMAGE)、视频(VIDEO)、语音(AUDIO)、位置(LOCATE)和文档(DOCUMENT)。 6 senderNickname string False 消息发送者的昵称。 7 sourceType string True 消息发送者,例如代理(代理)、机器人(机器人)和系统(系统)。 8 controlType string True 消息控制类型,如连接(连接)聊天(聊天)和断开(断开)、转人工服务(Trans2Agent)、读取报告(读取) 9 timestamp long True 消息发送时间戳。 10 to string True 用户标识 11 simQuestions string False 相似性问题内容。 12 messageCode string False 用于标识发送的消息代理的唯一值。最大长度为64。
  • 后续操作 按条件管理咨询表数据: 单击,增加查询条件,最多支持新增10条查询条件。 选择查询条件,单击,支持删除查询条件。 配置查询条件,单击“按条件删除”,支持按特定条件删除字段数据值。 配置查询条件,单击“查询”,支持按条件查询字段数据值。 单击“重置”,支持一键清空条件内容。 选择已配置的数据值,单击,支持批量删除。 已配置的数据值: 单击“删除”,支持逐条删除字段数据值。 单击“修改”,支持更新字段数据值内容。
  • 配置智能填单流程 智能填单流程仅适用于特定局点,公有云暂不使用。 填单流程要求解决方案部署了LODAS网元,以实现智能分类的功能。 系统预置的智能填单流程如下所示: 该流程实现如下功能: 在应答图元,向客户播放欢迎提示语。该语音文件需要定制。 在业务接口调用图元中,根据每次交互记录,将客户端发送的文本信息采用空格间隔,并记录该信息是客户说的还是座席说的。 在语义识别图元,对本次交互的信息进行识别: 如果存在敏感词,则触发敏感词提醒,将敏感词、匹配到的意图名称、推荐。 如果不存在敏感词,则直接返回推荐等信息。 触发完成后,敏感词置空,进入下一轮循环。 根据上述描述,配置人员需要修改欢迎语的语音模板、在业务接口调用图元中调用具体的推荐、知识获取接口,来实现真实的智能填单功能。 修改应答模板 修改存储过程 修改结果处理图元 父主题: 配置预置流程
  • 操作步骤 通话态的客服代表单击接续条的打开咨询页面。 咨询包括咨询技能队列、咨询指定座席和咨询外部号码三种方式。 咨询技能队列: 咨询指定座席: :表示座席空闲。 :表示座席忙碌中。 :表示座席休息中。 :表示语音或视频通话中。 :表示在线交谈通话中。 咨询外部号码: 当外呼对象为第三方IVR流程,并且后续要拉起三方会话场景下,需要将客户或座席的按键信息,传递给该IVR时,需要先勾选是否为自助服务流程。 该按钮受租户级参数“三方会场传号”控制,默认值为不支持,界面不展示。当租户管理员将其设置为支持时,界面才展示。
  • 参数介绍 菜单图元的参数如下图所示。 图1 菜单配置 图2 高级配置 图元参数说明如下: 节点名称:画布上展示的名称,可以根据需要自定义。 语音提示:当前支持“语音”、“ 文字转语音 ”和“视频”三种类型的语音提示。通过单击语音类型前的单选按钮可以选择对应的语音类型。 语音文件选择:wav格式语音文件。目前UAP仅支持:8bit, 8000Hz, 64kbps, 单声道的wav格式语音文件。 文字转语音:通过文字转语音方式生成的 TTS 放音文件。您可以通过开启TTS高级设置,设置放音参数。单击下拉列表框的“”可以选择音效和音速。若不开启,默认音效:女生朗读,音速:低速朗读,无TTS扩展参数。 音效:选择放音音效,可选男生朗读和女生朗读。 音速:选择放音速度,可选低速朗读、中速朗读和高速朗读。 TTS扩展参数:根据需要定义,字符串长度不超过200。 视频:3gp格式的视频文件,且文件大小不超过5MB。 放音文件:系统自动根据已选择的语音类型,筛选当前租户下已审核通过的语音文件、TTS放音或者视频,并将符合条件的文件展示在下拉列表框中。您通过单击下拉列表框的“”可以选择。 菜单按键配置:流程中提供的服务选项,每个按键对应一个服务项。通过单击“新增”可以添加多个服务项。 按键:键盘或者屏幕中可以选择到的数字键或字符键,如1、2、3、*、#等。 描述:按键对应的服务项介绍,描述信息可以展示在菜单中。例如:按键1 查询会员信息,表示选择按键1后可以查询会员信息。 操作:通过新增操作可以增加服务项,通过删除操作可以删除服务项,通过上移、下移操作可以调整服务项的顺序。 收号等待时间:接收外部输入信息支持的等待时间。当用户停止输入的时间超过设定的“收号等待时间”,将记录为一次失败,并自动执行“收号超时”,继续等待收号。 最大失败次数:允许的外部信息输入的最大失败的次数。当收号出错,将记录为一次失败,并自动执行“收号错误”,继续等待收号。 高级配置:单击“高级配置+”可以展开高级配置区域,单击“收起”可以隐藏高级配置区域。 收号错误:通过打开开关“”,启用收号错误后的放音能力。结合“最大失败次数”,在最大失败次数范围内收号失败后播放语音提示。 收号超时:通过打开开关“”,启用收号超时后的放音能力。结合“收号等待时长”,在超过等待时长还未接收到信号后播放语音提示。 高级配置中的“收号错误”、“收号超时”默认不启用。当不启用时,失败后将重新播放放音收号图元配置的语音提示。 当累计的失败次数超过“最大失败次数”,将执行通用的失败出口。 所有的参数配置完成后,单击“保存”。
  • 操作步骤 单击“”,支持将通话中的会话转移给其他座席。转移的类型分为按技能队列(多媒体类型)转移和按座席(多媒体座席)转移,转移方式分为成功转和释放转。会话转移时,支持查看客服代表的状态和账号。 成功转:被转入方客服代表接通会话后,转出方客服代表才可释放来话。否则,系统提示转出失败。 释放转:客服代表将会话转移,不管是否成功,转出方客服代表均立即释放呼叫。 图1 转技能队列界面 图2 转座席界面 :表示语音或视频通话中。 :表示在线交谈通话中。
  • 操作步骤 选择流程状态为“新建”或者“未发布”的流程,展开流程信息,单击“编辑”。 画布初始化时默认展示一个开始图元和一个结束图元。开始图元不可以删除,结束图元可以删除也可以增加多个,需要保证流程保存时至少有一个结束图元。 如图2所示,拖拽图元到画布中并配置图元参数。 将鼠标移动到源图元,当图元上出现虚框时鼠标向目标图元移动,可以连接两个图元。除“子流程”图元,其他所有图元都必须有一个默认的连线,且连线的起点、终点都必须在图元上。关于图元介绍请参见图元参考。 图2 编辑流程 编辑完成,单击“保存”,并在成功的提示框中单击“确定”,关闭流程编辑页面。 流程编辑过程中可以随时通过单击保存已编辑的流程。当确认流程全部编辑完成后,需要关闭流程编辑页面,才能在流程列表中发布流程。
  • 背景信息 在编辑流程前,建议您先了解流程编辑页面的布局和各个区域实现的能力。流程编辑界面如图1所示。 图1 流程编辑界面 表1 流程编辑界面介绍 区域编号 区 域名 区域说明 1 按钮 可对流程进行取消、保存草稿、保存、发布操作。 2 图元区 通过拖拽图元到流程画布区编辑流程。 3 画布区 IVR流程编辑区域。 4 图元参数区 对应展示当前选中的图元,用于编辑图元参数。 5 画布工具栏 提供重置视图、放大、缩小、全屏、撤销、重做、删除等画布的操作功能 6 变量区 包含流程、全局、系统、IVR请求、意图变量的基本信息,支持鼠标拖拽变量进图元参数区的变量输入框,支持查询筛选。变量输入框如图所示 意图变量只能在智能IVR使用。
  • 图元参数 放音图元的参数如下图所示。 图元参数说明如下: 节点名称:在图元上展示的名称,可以根据需要自定义。 语音提示:当前支持“语音”、“文字转语音”、“视频”和“变量音”四种类型的语音提示。通过单击语音类型前的单选按钮可以选择对应的语音类型。 语音:wav格式语音文件。目前UAP仅支持8khz * 8bit的wav 格式语音文件。 文字转语音:通过文字转语音方式生成的TTS放音文件, 需要已经配置TTS通道。您可以通过开启TTS高级设置,设置放音参数。单击下拉列表框的“”可以选择音效和音速。若不开启,默认音效:女生朗读,音速:低速朗读,无TTS扩展参数。 音效:选择放音音效,可选男生朗读和女生朗读。 音速:选择放音速度,可选低速朗读、中速朗读和高速朗读。 TTS扩展参数:根据需要定义,字符串长度不超过200。 您使用TTS功能时,需要联系系统管理员登录客户服务云为您的租间配置TTS服务器。 视频:3gp格式的视频文件,且文件大小不超过5MB。 放音文件:系统自动根据已选择的语音类型,筛选当前租户下已审核通过的语音文件、TTS放音或者视频,并将符合条件的文件展示在下拉列表框中。您通过单击下拉列表框的“”可以选择。 变量音:通过设置语种、类型和内容自定义放音。 语种:选择放音语种。 变量音选择语种非普通话和非英语时,需要联系运维人员定制语法包和语音文件。 类型:选择放音类型,支持电话号码、数字、时间(hh:mm:ss)、日期(yyyymmdd)、价格。 内容:选择放音内容,请选择全局变量(GLOBAL.*)或流程变量(FLOW.*)定义内容。 如果类型选择为时间和日期,选择的变量格式需和括号中一致。 单击“保存”,保存当前页配置的所有参数。
  • 背景信息 静默座席有4中工作状态:普通,监察,插入,转移。 普通:静默座席切换该状态,主动释放静默座席与机器人的回话,用户与机器人直接交流; 监察:该工作状态,静默座席可以看到用户与机器人的对话状况。机器人连续三次无法答复用户问答时,会向静默座席发送求助信号,静默座席可以发送一句答复或者切换状态进行辅助; 插入:该工作状态,静默座席以机器人的名义,直接跟用户交谈,机器人在用户发送信息时,都会向静默座席发送求助信息,静默座席需在机器人求助时,才可答复; 转移:静默座席切换改工作状态,会给用户进行转人工操作。 静默座席只支持配置机器人,配置静默座席技能队列的渠道。 静默座席,需在智能IVR的流程编排中的流程发布为监察,插入。 静默座席不支持手工接听模式。
  • 内置函数 使用如下内置函数进行多重运算时,子表达式要加括号。 条件表达式中,使用==判断,仅适用于字符和数字,不适用于对象和列表(null判断除外)。 表1 内置列表 函数名 描述 length() 获取字符串长度。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:abcde,您可以通过如下表达式获取流程变量Answer的字符串长度:FLOW.Answer.length(),结果为5。 size() 当变量为数组和对象时获取其中的元素个数。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:[1,2,3,4,5],您可以通过如下表达式获取流程变量Answer的字符串长度:FLOW.Answer.size(),结果为5。 说明: 流程变量定义的对象和数组,若没有设置缺省值也没有赋值,则值不会为null,且size为0。 divideString(index,“分割符”) 字符串分割。 index:从1开始,表示取第几个字符。 分割符:若分隔符为"."、"$"、"+"、"|" 和 "*" 等正则特殊字符,需要使用方括号包装,例:FLOW.XXX.divideString(index,"[+]") 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:{"UniqueID":"123","ServiceID":"1234","orderid":"12345"},如果您需要获取流程变量Answer的"orderid":"12345",请使用如下表达式:FLOW.Answer.divideString(3,“,”) 说明: 列表或对象使用中括号或者点取值后,若需要调用divideString内置函数,则应先将值缓存至字符型流程变量,再进行调用。 substring(beginIndex, endIndex) 字符串截取。 beginIndex:从0开始,0表示第1个字符,表示从第几个字符开始截取。 endIndex:表示到第几个字符结束截取,不包含endIndex对应的字符。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:"orderid":"12345",如果您需要获取流程变量Answer的12345,请使用如下表达式:FLOW.Answer.substring(11, 16) startsWith("xxx") 判断变量是否以某个字符串开头。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:abcde,如果您需要判断流程变量Answer是否以字符a开头,请使用如下表达式:FLOW.Answer.startsWith("a"),结果为是,通常用于条件表达式。 endsWith("xxx") 判断变量是否以某个字符串结尾。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:abcde,如果您需要判断流程变量Answer是否以字符e结尾,请使用如下表达式:FLOW.Answer.endsWith("e"),结果为是,通常用于条件表达式。 null值的判断 判断变量是否等于null值。 使用场景示例:例如有一个流程变量Answer,FLOW.Answer的值为:null。如果您需要判断流程变量Answer是否为null,请使用如下表达式:FLOW.Answer==null或FLOW.Answer!=null 加法运算:+ 可通过加法运算进行如下运算: 字符串+字符串=字符串拼接 字符串+整型=字符串拼接 整型+整型=加法计算 使用场景示例:例如有一个流程变量Str,FLOW.Str的值为:“123”,有一个流程变量Num,FLOW.Num的值为:123, 如果您使用如下表达式:FLOW.Str+FLOW.Num,结果为字符串:“123123”。 除法运算:/ 对数字进行除法。 使用场景示例:例如有一个流程变量Num1,一个流程变量Num2,如果您使用如下表达式:FLOW.Num1/FLOW.Num2,将其结果赋值给另外一个流程变量result,要求流程变量result必须为浮点型。 put() 给对象添加属性。 使用场景示例:例如有一个对象型的流程变量FLOW.person值为{"name":"Jack"},那么可以在缓存变量处,通过FLOW.person.put("age","18")为FLOW.person添加age属性。同时,将结果{"name":"Jack","age":"18"}缓存到任何对象型的变量。若有一个整型的流程变量FLOW.age值为18,也可通过FLOW.person.put("age",FLOW.age)的方式,添加结果为{"name":"Jack","age":18}。 说明: FLOW.person.put(key,value),key和value都可以为变量名。若value为常量,则不管是否加了双引号,都会默认将属性值设置为字符型,若value为变量,则以变量的类型为准。 add() 给列表添加元素。 使用场景示例:例如有一个列表型的流程变量FLOW.arrayList值为[1],那么可以在缓存变量处,通过FLOW.arrayList.add(2)为FLOW.arrayList的末尾添加一个值为"2"的元素。同时,将结果[1,"2"]缓存到任何列表型的变量。若有一个整型流程变量FLOW.num值为"18",也可通过FLOW.arrayList.add(FLOW.num)的方式,添加结果为[1,18]。 说明: FLOW.arrayList.add(value),value可以为变量名。若value为常量,则不管是否加了双引号,都会默认将值设置为字符型,若value为变量,则以变量的类型为准。 表2 字符串操作方法 函数名 描述 strSplit() 根据给定的分割符拆分字符串。 函数返回对象为数组类型,保存拆分后的字符串数组。包含两个参数:第一个为待拆分的字符串,第二个为分割符。 使用场景示例: 例如有一个字符型的流程变量FLOW.str值为"aa,cc,dd,ee",那么可以在方法调用处,通过调用strSplit方法,根据给定的分割符“,”拆分字符串。同时,将分割结果缓存到任何列表型的变量(FLOW.array)。该方法调用的参数支持变量赋值和手动赋值。方法参数填入时不需要加引号(下同)。 strSubstring() 提取子字符串。 函数返回对象为字符串类型,为截取的子字符串。包含三个参数:第一个为待截取的字符串,第二个为开始下标(整型),第三个为结束下标(整型)。(下标从0开始,不包含结束下标字符)。 使用场景示例: 例如有一个字符型的流程变量FLOW.str值为"abcdef",那么可以在方法调用处,通过调用strSubstring方法,根据给定的下标截取子字符串。同时,将截取结果缓存到任何字符型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 strIndex0f() 获取第一次出现指定字符串的下标。 函数返回对象为下标值,整型。包含两个参数:第一个为待搜索的字符串,第二个为指定的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str值为"abcdef",那么可以在方法调用处,通过调用strIndex0f方法,获取第一次出现指定字符串的下标。同时,将获取结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 strStartsWith() 检测字符串是否以指定的前缀开始。 函数返回对象为检测结果,整型 0/1。包含两个参数:第一个为待检测的字符串,第二个为指定的前缀字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str值为"abcdef",那么可以在方法调用处,通过调用strStartsWith方法,检测字符串是否以指定的前缀开始。同时,将检测结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 strEndsWith() 检测字符串是否以指定的后缀结束。 函数返回对象为检测结果,整型 0/1。包含两个参数:第一个为待检测的字符串,第二个为指定的后缀字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str值为"abcdef",那么可以在方法调用处,通过调用strEndsWith方法,检测字符串是否以指定的后缀结束。同时,将检测结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 strParseJSON() 将json字符串转换为对象。 函数返回对象为转换之后的json对象,包含一个参数:待转换的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.strJson1值为Json格式的字符串 {"a":"1","b":"2"},那么可以在方法调用处,通过调用strParseJSON方法,将字符串转成对象返回。同时,将结果缓存到任何对象类型的变量(FLOW.obj1)。该方法调用的参数支持变量赋值和手动赋值。 strParseInt() 将字符串转换为整型数字。 函数返回对象为转换之后的整型数字,包含一个参数:待转换的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str1值为 "11",那么可以在方法调用处,通过调用strParseInt方法,将字符串转成整形数字返回。同时,将结果缓存到任何整型的变量(FLOW.int1)。该方法调用的参数支持变量赋值和手动赋值。 strParseFloat() 将字符串转换为浮点型数字。 函数返回对象为转换之后的浮点型数字,包含一个参数:待转换的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str1值为 "0.56",那么可以在方法调用处,通过调用strParseFloat方法,将字符串转成浮点型返回。同时,将结果缓存到任何浮点型的变量(FLOW.float1)。该方法调用的参数支持变量赋值和手动赋值。 strLength() 获取字符串长度。 函数返回对象为字符串的长度,整型。包含一个参数:待计算长度的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str1值为"qwer",那么可以在方法调用处,通过调用strLength方法,检测字符串的长度。同时,将结果缓存到任何整型的变量(FLOW.int1)。该方法调用的参数支持变量赋值和手动赋值。 strToUpperCase() 将字符串小写字符转换为大写。 函数返回对象为转换之后的字符串,包含一个参数:待转换的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str1值为"qwer",那么可以在方法调用处,通过调用strToUpperCase方法,将字符串的所有字符转换为大写。同时,将结果缓存到任何整型的变量(FLOW.str1)。该方法调用的参数支持变量赋值和手动赋值。 strToLowerCase() 将字符串大写字符转换为小写。 函数返回对象为转换之后的字符串,包含一个参数:待转换的字符串。 使用场景示例: 例如有一个字符型的流程变量FLOW.str1值为"QWER",那么可以在方法调用处,通过调用strToLowerCase方法,将字符串的所以字符转换为小写。同时,将结果缓存到任何整型的变量(FLOW.str1)。该方法调用的参数支持变量赋值和手动赋值。 表3 数组操作方法 函数名 描述 arrayAdd() 向数组中添加一个元素。 函数返回对象为添加的结果,如果添加成功返回1,否则返回0。包含三个参数:第一个为待添加的数组,第二个为添加的位置(默认尾部),第三个为添加的元素;该函数将修改待添加的数组。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[1,2,3,4],那么可以在方法调用处,通过调用arrayAdd方法,为FLOW.array添加元素,第二个参数可以指定添加的位置(索引)。同时,将添加结果缓存到任何整型的变量(FLOW.result),添加成功后将修改FLOW.array变量的值并存入缓存中,此时FLOW.array的值为[1,2,3,4,5],直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 arrayAddAll() 向数组中添加另一个集合的所有元素。 函数返回对象为添加的结果,如果添加成功返回1,否则返回0。包含三个参数:第一个为待添加的数组,第二个为添加的位置(默认尾部),第三个为添加的元素;该函数将修改待添加的数组。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[1,2,3,4]和FLOW.array2值为[5,6,7,8],那么可以在方法调用处,通过调用arrayAddAll方法,为FLOW.array添加另一个集合中的元素,第二个参数可以指定添加的位置(索引)。同时,将添加结果缓存到任何整型的变量(FLOW.result),添加成功后将修改FLOW.array变量的值并存入缓存中,此时FLOW.array的值为[1,2,3,4,5,6,7,8],直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 arrayContains() 判断元素是否在数组中。 函数返回对象为判断的结果,如果包含结果返回1,否则返回0。包含两个参数:第一个为待检测的数组,第二个为待判断的元素。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d],那么可以在方法调用处,通过调用arrayContains方法,判断所给定的元素是否包含在FLOW.array变量中。同时,将返回结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 arrayGet() 通过索引值获取数组中的元素。 函数返回对象为数组的元素,包含两个参数:第一个为待使用的数组,第二个为数组下标。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d],那么可以在方法调用处,通过调用arrayGet方法,从FLOW.array变量获取给定下标的值。同时,将返回结果缓存到给定的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 arrayRemoveIdx() 删除数组中的指定下标元素。 函数返回对象为删除的结果,如果删除成功返回1,否则返回0。包含两个参数:第一个为待使用的数组,第二个为删除数组下标。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d],那么可以在方法调用处,通过调用arrayRemoveIdx方法,删除FLOW.array变量指定下标的元素。同时,将删除结果缓存到任何整型的变量(FLOW.result),删除成功后将修改FLOW.array变量的值并存入缓存中,此时FLOW.array的值为[a,b,d],直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 arrayRemoveAllIdx() 删除数组中指定下标集合对应的元素。 函数返回对象为删除的结果,如果删除成功返回1,否则返回0。包含两个参数:第一个为待使用的数组,第二个为指定集合。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d,e,f]和FLOW.indexArray值为[2,3,4],那么可以在方法调用处,通过调用arrayRemoveAllIdx方法,为FLOW.array删除存在另一个集合中的索引对应的值,第二个参数可以指定删除的索引集合。同时,将删除结果缓存到任何整型的变量(FLOW.result),删除成功后将修改FLOW.array变量的值并存入缓存中,此时FLOW.array的值为[a,b,f],直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 说明: FLOW.indexArray为第一个列表型变量FLOW.array的索引集合,只支持非负整数,且集合中的值不得超过FLOW.array的最大索引值。 arrayClear() 删除数组中的所有元素。 函数返回对象为void,输入框灰化不可编辑。包含一个参数:待清理的数组。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d],那么可以在方法调用处,通过调用arrayClear方法,为FLOW.array删除数组中的所有元素。同时,调用方法后将修改FLOW.array变量的值并存入缓存中,此时FLOW.array的值为[],直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值。 arraySize() 获取数组的长度。 函数返回对象为数组长度,整型。包含一个参数:为待计算长度的数组。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d,e,f],那么可以在方法调用处,通过调用arraySize方法,获取FLOW.array数组的长度。同时,将获取结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 arraySubList() 截取并返回数组中的一部分。 函数返回对象为子数组,包含三个参数:第一个为待截取的数组,第二个为截取起始位置,第三个为截取结束位置。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d,e,f],那么可以在方法调用处,通过调用arraySubList方法,截取FLOW.array数组中的一部分。同时,将截取结果缓存到任何列表型的变量(FLOW.subArray),截取到的值FLOW.subArray为[c,d,e],截取的区间为左闭右合区间。该方法调用的参数支持变量赋值和手动赋值。 arrayJoin() 将数组转成字符串。 函数返回对象为转换后的字符串。包含两个参数:第一个为待转换的数组,第二个为连接字符串。 使用场景示例: 例如有一个列表型的流程变量FLOW.array值为[a,b,c,d],那么可以在方法调用处,通过调用arrayJoin方法,将数组中的元素通过给定的符号转成字符串。同时,将转换结果缓存到任何字符型的变量(FLOW.result),下方示例处返回结果值为a=b=c=d。该方法调用的参数支持变量赋值和手动赋值。 表4 增加对Map的操作方法 函数名 描述 mapPut() 向map中添加一个元素。 函数返回对象逻辑为如果key不存在,则返回null,如果存在则返回原先被替换的value值,对象类型。函数包含三个参数:第一个为待添加的map,第二个为key(仅支持字符串类型),第三个为添加的元素。 使用场景示例: 例如有一个对象型的流程变量FLOW.person值为{"name":"Jack","sex":"boy"},那么可以在方法调用处,通过调用mapPut方法,为FLOW.person添加元素值。同时,将添加结果缓存到变量(FLOW.result),添加成功后将修改FLOW.person变量的值并存入缓存中,此时FLOW.person的值为{"name":"Jack","sex":"boy","age":"25"},直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 说明: 对于手动赋值的一个对象型的变量,输入框参数值处不能使用双引号,通过参数支持的流程变量则不同,可参照上方用例 如果要向对象型变量中添加一个列表数据,则第三个参数只能使用预先定义好的变量,不可使用输入框直接输入数组,输入框输入默认为字符串类型。 mapGet() 获取map中指定键映射的值。 函数返回对象为指定键映射的值。函数包含两个参数:第一个为待处理的map,第二个为key(仅支持字符串类型)。 使用场景示例: 例如有一个对象型的流程变量FLOW.person值为{"name":"Jack","sex":"boy"},那么可以在方法调用处,通过调用mapGet方法,获取map中指定键映射的值。同时,将获取结果缓存到变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 mapRemove() 删除map中指定键值对。 函数返回对象为此映射先前与该键关联的值;如果该映射不包含该键的映射,则返回null。包含两个参数:第一个为待处理的map,第二个为key(仅支持字符串类型)。 使用场景示例: 例如有一个对象型的流程变量FLOW.person值为{"name":"Jack","sex":"boy"},那么可以在方法调用处,通过调用mapRemove方法,删除map中指定键值对。同时,将删除结果缓存到变量(FLOW.result),删除后将修改FLOW.person变量的值并存入缓存中,直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值和手动赋值。 mapClear() 清空map的所有键值对。 函数返回对象为void,输入框灰化不可编辑。包含一个参数:待清理的map。 使用场景示例: 例如有一个对象型的流程变量FLOW.person值为{"name":"Jack","sex":"boy"},那么可以在方法调用处,通过调用mapClear方法,清空map的所有键值对。同时,调用方法后将修改FLOW.person变量的值并存入缓存中,直到该流程结束或者再一次修改它的值。该方法调用的参数支持变量赋值。 mapSize() 获取map的所有key的数量。 函数返回对象为map中key的数量,整型。包含一个参数:为待计算数量的map。 使用场景示例: 例如有一个对象型的流程变量FLOW.person值为{"name":"Jack","sex":"boy"},那么可以在方法调用处,通过调用mapSize方法,获取map的所有key的数量。同时,调用方法后将获取结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值。 表5 增加对日期处理的操作方法 函数名 描述 offsetMonth() 按月偏移。 返回对象为字符串类型,保存偏移后的数据。 方法包含两个参数:第一个为待偏移的时间变量,字符串类型,格式为yyyyMM,如:202308,第二个为偏移数,整型,可以为负值,例如-6代表将源字符串向前推移6个月。 使用场景示例: 例如有一个字符串的流程变量FLOW.date值为"202308",那么可以在方法调用处,通过调用offsetMonth方法,获取偏移后的日期。同时,调用方法后将获取结果缓存到任何整型的变量(FLOW.result)。该方法调用的参数支持变量赋值。 offsetHour() 按小时偏移。 返回对象为字符串类型,保存偏移后的数据。 方法包含两个参数:第一个为待偏移的时间变量,字符串类型,格式为yyyyMMddHHmmss,如:20230808122020,第二个为偏移数,整型,可以为负值,例如-6代表将源字符串向前推移6个小时。 使用场景示例: 例如有一个对象型的流程变量FLOW.date值为"20230831165801",那么可以在方法调用处,通过调用offsetHour方法,获取偏移后的小时。同时,将获取结果缓存到变量(FLOW.result)。该方法调用的参数支持变量赋值和手动赋值。 父主题: 相关参考
  • 批量管理外呼任务 外呼任务的批量处理支持以下操作: 批量启动: 只支持“草稿”状态或者“暂停”状态下的外呼任务进行“批量启动”操作。 批量暂停: 只支持“执行中”状态和“呼叫完成”状态下的外呼任务进行“批量暂停”操作。 批量修改基本信息: 基本信息修改后所选任务的基本信息都会更新为同一内容,请谨慎操作。修改内容包括: 基本信息:“主叫号码”、“任务开始时间”、“任务结束时间”,“外呼失败短信提醒模板”。 自动提取规则:当所选任务包含手动外呼类型的任务时,支持修改规则内容。 不同类型的外呼任务只可以修改共有的参数。 手动外呼任务和按键机器人外呼任务不能同时修改。 批量修改外呼时间: 所选任务中包含手动外呼任务时,不支持进行“批量修改外呼时间”的操作。 批量修改外呼策略: 所选任务中包含手动外呼任务时,不支持进行“批量修改外呼策略”的操作。 只支持批量选择相同类型的外呼任务进行修改。 批量修改外呼逻辑 所选任务中包含手动外呼任务时,不支持进行“批量修改外呼逻辑”的操作。 只支持批量选择相同类型的外呼任务进行修改。 按键机器人外呼、智能机器人外呼不支持业务结果策略配置。 只支持批量选择“呼叫策略”中外呼方式相同的外呼任务进行修改。 只支持批量选择“外呼结果策略”中策略类型相同的外呼任务进行修改。 父主题: 管理外呼任务
  • 操作步骤 客服代表单击进行音视频切换。 视频座席开通WebRTC特性,并且视频应用模式为SFU视频时,支持以下场景: 音频起呼,座席发起视频切换,双方接受后进入视频通话。 视频起呼,座席发起音频切换,双方进入音频通话。 音频起呼,座席发起视频切换后用户拒绝,用户仍在音频,再次发起视频切换可邀请用户视频。 视频起呼,用户转音频接入,用户仍在音频,座席发起视频切换可邀请用户视频。 座席可在音频和视频间多次切换。 记录接触记录,支持SFU视频和MCU视频下载,支持SFU视频在线播放,不支持MCU视频在线播放。
  • 背景信息 软件包与签名文件是一一对应并放在同一目录下,一个软件包对应一个校验文件,用于校验软件包是否完整,可在Support上通过单击软件包对应行的“pgp”或“cms”按钮进行下载。 通过“pgp”按钮可以下载*.asc格式的签名文件,用于手工验证软件包的完整性。当需要单独使用软件包时,需要手工进行软件包完整性检查,具体可参见操作步骤。 该方法支持校验所有软件包。 通过“cms”按钮可以下载*.p7s格式的签名文件,用于系统自动验证软件包的完整性。在导入软件包时,同步导入软件包的CMS格式签名,网管或部署工具进行数字签名校验。
  • 配置满意度反馈流程 流程编排中确定哪些业务需要反馈满意度。一般来说,闲聊型对话、辅助型对话、填槽对话和澄清对话时不需要进行满意度反馈的;而问答型回复、 知识图谱 信息回复和多轮对话最终回复需要满意度反馈。 系统预置的满意度流程如下所示: 在需要反馈的分支中,回复needFeedBackResponse应答模板。应答模板的构造的数据结构需要与前端约定一致。 应答模板needFeedBackResponse中提供当前业务需要返回的结果以及不满意原因。前台需要解析此结构,进行展示。 对用户的输入进行判断,如果IVRREQUEST.feedback为0或1,则表示该请求为用户的满意度反馈请求需要走feedback分支。 如果feedback分支,调用CallFeedBack接口,此接口为TUC提供的反馈。 满意度反馈接口配置如下: 父主题: 配置预置流程
  • 操作步骤 视频通话时,参考屏幕共享开启共享功能。 选择共享区域共享栏,单击,进入共享标注界面。 图1 桌面共享标注 图2 指定程序共享标注 图3指定区域共享标注 共享标注支持以下功能。 白板:背景切换功能,共享时标注的背景可以在“白板”和“桌面”之间切换;背景切换后会清空之前的标注内容。 线条:单击选择画笔、直线、箭头、虚线、圆圈、矩形等线条工具进行标注。 文字:支持插入文字功能,并可以调整插入文字的大小。 颜色:线条和文字的颜色可以通过点击该图标进行选择。 撤销:支持单步撤销功能。 保存:支持保存当前标注截图,保存路径跟视频画面截图路径一致,可以在“设置-常规设置-截图保存路径”里设置。 退出:支持手动退出标注界面。
  • 登录状态 登录成功后会在主界面logo上增加一个圆点,分别用绿、红、灰三种颜色表示三种登录状态状态。鼠标放到主界面logo上,会显示内有服务器ip:port 注册状态(不同颜色的圆点)的提示框,服务器的注册状态用绿、灰两种颜色表示。Pool组网显示所有设置的服务器注册状态,非Pool组网只会显示注册成功的那一个服务器状态。 登录成功后的logo(绿、红、灰3中颜色) 图1 主界面logo 登录状态 图2 所有的服务器都注册登录成功 图3 红色:有部分的服务器注册登录失败 图4 所有的服务器都离线 服务器状态信息提示框: 由ip:port 状态组成 图5 绿色:成功注册,灰色:未成功注册 所有服务器离线,登录状态变灰,弹出离线提示框 父主题: 登录/登出
  • 场景 某医院需要使用智能语音导航完成一个简单的机器人预约挂号流程,流程如下: 图1 机器人预约挂号流程 注:蓝底部分表示智能语音导航执行的步骤。 客户致电医院客服电话123456。 初始化语言,设置为中文或英文。 致欢迎语。 客户说话。 将客户的说话与现有意图匹配,如果未匹配到指定意图,则告知未知意图。 如果匹配到指定意图(其意图设置四个必选槽位:预约科室、预约医生、预约日期、预约时间点),将一一询问客户预约的科室、预约的医生、预约的日期、预约的时间点。 如果客户回答出以上四个信息,告知客户刚刚回复的预约挂号信息,并询问客户是否确认挂号。 客户回答。 将客户的说话与现有意图(其意图设置为是否确认)匹配。 如果匹配到确定意图,则进行下一步,告知客户预约成功。 如果匹配到否定意图,则系统携带之前客户的预约挂号信息再次返回到5的意图识别。 如果匹配到客户说日期错误。 询问客户是否需要修改预约日期。 客户回答。 将客户的说话与现有意图(其意图设置为是否确认)匹配 如果匹配到不修改,则进行下一步,告知客户预约成功。如果匹配到需要修改日期,询问客户修改为哪一天。 客户回答。 系统携带客户的回答和之前的预约挂号信息再次返回到5的意图识别。 如果未匹配到意图,则告知未知意图。 告知客户预定成功。 客户挂机。
  • 需求分析 根据上述流程,我们可以分析出整个流程需要如下资源和配置: 表1 需求分析 步骤 资源 图元 节点属性设置 备注 开始 - - - 初始化语言 业务接口:初始化语言 变量名:GLOBAL.language 变量值:"zh_CN" 实际应用场景可通过使用真实的接口调用确认语言,本节的机器人配置演示使用该图元赋值,无需选择调用接口,直接添加缓存变量名,将其赋值来初始化语言。 例如英文对应的响应中属性名为: "en_US" 欢迎语 - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.welcome 回复模式:支持播放后再识别 添加流程变量,例如: 变量名称:welcome 数据类型:字符型 缺省值:欢迎使用自助挂号系统 获取客户回答 业务接口:缓存对话交互结果 变量名:FLOW.ask 变量值:IVRREQUEST.input 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:ask 数据类型:字符型 缺省值:预约${FLOW.dateSlot}的${FLOW.timeSlot}的{FLOW.docSlot}的${FLOW.roomSlot}。 语义识别(含意图是否匹配) 意图模板:挂号 语义识别内容:FLOW.ask 设置变量: 获取意图匹配到的科室 变量名:FLOW.roomSlot 变量值:TOC.ChatBotroom 获取意图匹配到的医生 变量名:FLOW.docSlot 变量值:TOC.ChatBotdoctor 获取意图匹配到的日期 变量名:FLOW.dateSlot 变量值:TOC.ChatBotdate 获取意图匹配到的时间点 变量名:FLOW.timeSlot 变量值:TOC.ChatBottime 判断条件列表 匹配到了配置的挂号意图 条件名:finish 条件表达式:TOC.ChatBotIntentCode=='finish' 匹配到了配置的挂号意图的必选科室槽位的命令字 条件名:room 条件表达式:TOC.ChatBotIntentCode=='room' 匹配到了配置的挂号意图的必选医生槽位的命令字 条件名:doctor 条件表达式:TOC.ChatBotIntentCode=='doctor' 添加流程变量,例如: 变量名称:roomSlot 数据类型:字符型 变量名称:docSlot 数据类型:字符型 变量名称:dateSlot 数据类型:字符型 变量名称:timeSlot 数据类型:字符型 获取客户需要预约的科室 (匹配到条件名:room) 业务接口:调用查询科室的接口 变量名:FLOW.answer 变量值:FLOW.room + TOC.ChatBotRespContent 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:answer 数据类型:字符型 变量名称:room 数据类型:字符型 缺省值:当前可以选择的科室为内科和外科 - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持播放后再识别 - 获取客户需要预约的医生 (匹配到条件名:doctor) 业务接口:调用查询对应科室医生的接口 变量名:FLOW.answer 变量值:FLOW.doctor + TOC.ChatBotRespContent 无需选择调用接口,直接添加变量。 添加流程变量,例如: 变量名称:answer 数据类型:字符型 变量名称:doctor 数据类型:字符型 缺省值:当前科室值班医生有刘医生和李医生 - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持播放后再识别 - 告知客户已预约的挂号信息 (匹配到条件名:finish) - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:TOC.ChatBotRespContent 回复模式:只播放 - 默认应答 (未匹配到任何条件名) - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:TOC.ChatBotRespContent 回复模式:只播放 说明: 连线上不匹配任何条件名,即为默认分支。 询问是否确认挂号信息 - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.check 回复模式:支持识别打断 添加流程变量,例如: 变量名称:check 数据类型:字符型 缺省值:确定上面的信息吗? 语义识别(含意图是否匹配) 意图模板:确认 判断条件列表 匹配到了确认的意图 条件名:yes 条件表达式:TOC.ChatBotconfirm=='是' 匹配到了不确认的意图 条件名:no 条件表达式:TOC.ChatBotconfirm=='否' 匹配到了日期错误 条件名:part 条件表达式:TOC.ChatBotconfirm=='日期错误' - 使用缓存变量缓存数据再进行语义识别确认客户挂号信息 (匹配到条件名:no) - 变量名:FLOW.ask 变量值:'预约挂号' 无需选择调用接口,直接添加变量。 再次确认客户是否要修改日期 (匹配到条件名:part) 回复模板:是否要修改日期 回复方式:回复文本 回复来源:回复模板 (TTS会根据变量返回的值动态播放语音) 回复模板:redate 回复模式:支持识别打断 需添加回复模板 意图模板:确认 判断条件列表 匹配到了确认不修改日期的意图 条件名:yes 条件表达式:TOC.ChatBotconfirm=='是' 匹配到了确认修改日期的意图 条件名:no 条件表达式:TOC.ChatBotconfirm=='否' - 询问修改日期,再进行语义识别确认挂号信息 (匹配到条件名:no) 变量名:FLOW.dateSlot 变量值:'' 变量名:FLOW.answer 变量值:'请问你要改为哪一天?' 无需选择调用接口,直接添加变量。 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.answer 回复模式:支持识别打断 - 变量名:FLOW.dateSlot 变量值:IVRREQUEST.input 变量名:FLOW.ask 变量值:'预约挂号'+FLOW.dateSlot+'的'+FLOW.timeSlot +FLOW.docSlot +'的' +FLOW.roomSlot 无需选择调用接口,直接添加变量。 告知客户挂号信息并表示感谢 (匹配到条件名:yes) - 回复方式:回复文本 回复来源:回复变量 (TTS会根据变量返回的值动态播放语音) 回复变量:FLOW.thanks 回复模式:只播放 添加流程变量,例如: 变量名称:thanks 数据类型:字符型 缺省值:已经预订成功,谢谢您的使用,再见。 结束 - - - 为确保容错性,您还需要配置一个未知意图,用于识别意图匹配不到的情况。 其中涉及到意图的部分,还需要继续细化分析如下信息,此处以挂号这个意图为例介绍,其他方法类似。 客户回答预约挂号的时候有多种说法 (语料) 我想看个医生 挂号 预约挂号 我要挂一个明天下午16:00点李医生的内科 您需要尽量多的考虑回答场景,才能确保意图匹配的精确。 客户回答的信息中哪个是我们需要的信息?(槽位&实体) 例如客户回答挂号16.00点,那么16.00点是我们需要获取的槽位信息,您需要在意图中添加该槽位信息,而槽位信息需要有对应的实体关联,因此还需要确认实体配置中是否有类似的实体。本例中可以使用系统实体@system.time。 如果客户回答挂号李医生,那么李医生是我们需要获取的槽位信息,您需要在意图中添加该槽位信息,而槽位信息需要有对应的实体关联,系统实体中没有这个实体,那我们需手动添加医生这个实体。 意图匹配的命令字,即语义识别图元所需的TOC.ChatBotIntentCode的值。请全局保持唯一(响应) 由于意图中的响应是可以设置分支条件的,可以直接添加分支,回复不同的TOC.ChatBotIntentCode。
  • 参数介绍 菜单图元的参数如下图所示。 图1 菜单配置 图2 高级配置 图元参数说明如下: 节点名称:画布上展示的名称,可以根据需要自定义。 语音提示:当前支持“语音”、“文字转语音”和“视频”三种类型的语音提示。通过单击语音类型前的单选按钮可以选择对应的语音类型。 语音文件选择:wav格式语音文件。目前UAP仅支持:8bit, 8000Hz, 64kbps, 单声道的wav格式语音文件。 文字转语音:通过文字转语音方式生成的TTS放音文件。您可以通过开启TTS高级设置,设置放音参数。单击下拉列表框的“”可以选择音效和音速。若不开启,默认音效:女生朗读,音速:低速朗读,无TTS扩展参数。 音效:选择放音音效,可选男生朗读和女生朗读。 音速:选择放音速度,可选低速朗读、中速朗读和高速朗读。 TTS扩展参数:根据需要定义,字符串长度不超过200。 视频:3gp格式的视频文件,且文件大小不超过5MB。 放音文件:系统自动根据已选择的语音类型,筛选当前租户下已审核通过的语音文件、TTS放音或者视频,并将符合条件的文件展示在下拉列表框中。您通过单击下拉列表框的“”可以选择。 菜单按键配置:流程中提供的服务选项,每个按键对应一个服务项。通过单击“新增”可以添加多个服务项。 按键:键盘或者屏幕中可以选择到的数字键或字符键,如1、2、3、*、#等。 描述:按键对应的服务项介绍,描述信息可以展示在菜单中。例如:按键1 查询会员信息,表示选择按键1后可以查询会员信息。 操作:通过新增操作可以增加服务项,通过删除操作可以删除服务项,通过上移、下移操作可以调整服务项的顺序。 收号等待时间:接收外部输入信息支持的等待时间。当用户停止输入的时间超过设定的“收号等待时间”,将记录为一次失败,并自动执行“收号超时”,继续等待收号。 最大失败次数:允许的外部信息输入的最大失败的次数。当收号出错,将记录为一次失败,并自动执行“收号错误”,继续等待收号。 高级配置:单击“高级配置+”可以展开高级配置区域,单击“收起”可以隐藏高级配置区域。 收号错误:通过打开开关“”,启用收号错误后的放音能力。结合“最大失败次数”,在最大失败次数范围内收号失败后播放语音提示。 收号超时:通过打开开关“”,启用收号超时后的放音能力。结合“收号等待时长”,在超过等待时长还未接收到信号后播放语音提示。 高级配置中的“收号错误”、“收号超时”默认不启用。当不启用时,失败后将重新播放放音收号图元配置的语音提示。 当累计的失败次数超过“最大失败次数”,将执行通用的失败出口。 所有的参数配置完成后,单击“保存”。
  • 问题分析 放音收号图元不支持*号键,如果想实现收号或返回上一层菜单,需要结合菜单配置图元和放音收号图元共同完成。菜单配置图元收录手机号码第一位数字1,剩余号码由放音收号图元完成收号。 图1为菜单配置图元和放音收号图元共同完成收录手机号码功能的流程样例,当用户按键1后,由放音收号完成剩余手机号的收录。此时,放音收号收录的首个按键相当于整个手机码的第二位(第一位已被菜单配置收录)。因此放音收号首个按键的超时视为位间超时,由收号超时时间控制,不再由收号等待时间和最大失败次数控制。因此,放音收号按键超时后,会完成收录已按键的号码,并进入下一图元。如果没有按键,也会进入下一图元,不会进入放音收号图元的高级配置中的收号超时配置。 图1 放音收号图元和菜单配置图元共同完成收号。
  • 安装说明 安装场景要求如下: 直接安装,即之前无安装OpenEye记录。 版本升级,需卸载旧版本OpenEye后重新安装新版本。 安装环境要求如下: Windows10/11环境,CPU:2核 CPU @ 2.6 GHz及以上,内存: 4GB及以上。依赖.net4.5.2及以上;依赖VC++运行环境。 如果安装环境中未安装.net4.5.2及VC++插件,请参考以下地址下载相关安装包后,双机安装包,安装指导步骤进行安装操作。 .net4.5.2:https://dotnet.microsoft.com/en-us/download/dotnet-framework/net452 单击Offline installer中的Runtime安装包进行安装操作。 VC++:https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022 选择Visual Studio 2015以及Visual Studio 2010两个安装包进行安装操作。 国产化环境:飞腾arm芯片 + 统信UOS v20、兆芯x86芯片 + 统信UOS v20、飞腾arm芯片 + 银河麒麟V10 SP1。 获取OpenEye安装包:进入AICC的Support路径下选择对应的AICC版本后,进入软件列表中获取OpenEye的安装包,根据操作系统版本获取后解压OpenEye安装包,获取安装程序。 Windows版本安装包名为:OpenEye_xx.c.zip,例如OpenEye_V2.0.zip。 统信UOS版本安装包名为:openeye_x.x_amd64_uos.zip或者openeye_x.x_arm64_uos.zip,例如openeye_2.0_amd64_uos.zip。 麒麟OS版本安装包名为:openeye_linux.zip或者openeye_linux_x86.zip。 在获取到软件包后,需要对软件包的完整性进行校验,操作方法请参考检查软件包完整性,通过了校验的软件包才能部署。 当前版本OpenEye的常规设置中接听方式支持“管理员鉴权”,开启鉴权设置,请以管理员权限进行OpenEye安装。 安装 版本升级 检查软件包完整性 父主题: OpenEye帮助文档
  • 前提条件 如果使用消息推送功能,用户需准备消息推送接口,接口规格请参见消息推送接口规格。接口开发完成后,需向系统管理员提出申请,将消息推送地址{baseUrl}/webhooks/v1/messages加入地址白名单。 若{baseUrl}为https协议时,还需自备认证证书,目前只支持“JKS”、“DER”、“PEM”类型的证书。 http协议有安全风险,推荐使用安全的https协议。 当消息推送地址开启了双向认证,还需自备当前系统身份证书。
  • 需求分析 经过分析,流程实例配置过程中涉及到的图元及使用介绍如表1所示。 表1 流程实例涉及的图元介绍 涉及图元 说明 放音 播放欢迎语音和流程中所有的提示语。 语种选择 提供中文、英文语种供选择。 菜单配置 使用菜单控件,配置涉及的菜单: 语种选择 会员信息服务,请按1 自助服务,请按2 合作加盟业务介绍,请按3 人工服务,请按0 放音收号 提示:请输入身份号码,按#号键结束 时间选择 用于配置工作时间 条件判断 用于结果判断 转移 用于转会员服务队列、转外部号码、转人工 子流程 转自助服务子流程
共100000条