机器人知识库编辑表达式·一洽客服系统API

目录

1. 表达式简介
2. 表达式规则
3. 系统变量
4. 操作表达式
5. 数据表达式
6. 逻辑表达式

1.表达式简介

在机器人服务客户时,知识的答案往往会因为访客身份的不同,语境、地区、业务的不同需要返回针对性的答案,通过此文档您可实现在知识答案中动态的返回不同的内容,例如:针对性的称呼 李先生来咨询时为:您好,李先生 刘小姐来咨询时为:您好,刘小姐。同时通过此文档您可在知识中对接企业的业务系统,比如访客咨询”我的剩余积分",通过集成企业的积分系统返回给访客详细的积分数据。通过使用一洽知识库表达式,企业不需要AI工程师参与深度定制即可实现较复杂的业务集成。

2.表达式规则

从表达式的场景和用法,可将表达式分为三类,操作表达式、数据表达式、逻辑表达式

操作表达式:通过植入表达式可在知识的答案中个性化定制业务操作,比如:转人工对话、转留言、结束对话

数据表达式:通过植入数据表达式,可在知识的答案中动态使用企业的业务数据,比如会员积分数据、会员订单列表、热门产品列表等等

逻辑表达式:通过植入逻辑表达式,可在知识的答案中根据实时的一些状态返回不同的内容,比如:客服在线返回转人工的提示,客服离线则返回客服不在线的提示。

3.系统变量

在知识库中可使用系统变量实现答案指定元素的动态反馈,例如使用${robotInfo.nickName}动态使用当前服务器机器人的名称。系统变量可使用在知识库答案中的任何位置,包括上面章节提到的表达式中。

系统变量组成规则
${variableScope.variableName} VariableScope:变量的作用域范围。variableName变量名称。

系统变量支持列表

variableScope variableName 表达式 描述
robotInfo nickName ${robotInfo.nickName} 当前服务器机器人的昵称
systemInfo dateutc ${systemInfo.dateutc[0-9_]} 指定时区的日期。根据东西时区的tuc数值,将负号和标点符号替换为下划线后为指定时区的时间,比如${systemInfo.dateutc_12}代表西十二区时间,${systemInfo.dateutc8}代表东八区的时间,时区请参考:https://www.beijing-time.org/shiqu/
日期格式:yyyy-MM-dd 例如:2020-10-01
systemInfo timeutc ${systemInfo.timeutc[0-9_]} 指定时区的时间。根据东西时区的utc数值,将负号和标点符号替换为下划线后为指定时区的时间,比如${systemInfo.timeutc_12}代表西十二区时间,${systemInfo.timeutc8}代表东八区的时间,时区请参考:https://www.beijing-time.org/shiqu/
时间格式:yyyy-MM-dd HH:mm:ss 例如:2020-10-01 12:00:00
chatInfo lan ${chatInfo.lan} 当前访客此次来访的语言,语言代码请参照:http://www.lingoes.cn/zh/translator/langcode.htm
chatInfo echatTag ${chatInfo.echatTag} 当前访客此次请求对话的业务标签。
chatInfo lastChatTime ${chatInfo.lastChatTime} 上次会话时间,时间格式yyyy-MM-dd HH:mm:ss
chatInfo chatTimes ${chatInfo.chatTimes} 本次会话是当前访客第几次会话。
chatInfo visitTimes ${chatInfo.visitTimes} 本次来访是当前访客第几次来访。
chatInfo myData ${chatInfo.myData} 访客接入对话时,企业设置的业务数据(任意值,最大长度500字符)。
chatInfo keyword ${chatInfo.echatTag} 访客来访渠道为搜索引擎时的搜索关键字。
routeInfo routeId ${routeInfo.routeId} 本次会话所选定的路由ID。
routeInfo routeName ${routeInfo.routeName} 本次会话所选定的路由名称。
routeInfo routeStatus ${routeInfo.routeStatus} 本次会话所选定路由,在访客咨询问题时客服接待状态 1:在线 2:离线。
userInfo vipId ${userInfo.vipId} 访客所在渠道的唯一ID,如:微信渠道的openId,会员的uid
userInfo vipType ${userInfo.vipType} 访客类型 0:web匿名 1:会员 2:sdk匿名 4:微信访客 6:小程序访客 7:新浪微博访客
userInfo visitorId ${userInfo.visitorId} 访客的唯一ID 例如:web123,wechat23421
userInfo visitorName ${userInfo.visitorName} 当前咨询访客的名字
locationInfo ip ${locationInfo.ip} 访客的来源ip(非web渠道访问没有来源ip)
locationInfo country ${locationInfo.country} 访客所在国家(ip解析或者微信等渠道的个人信息获得)
locationInfo province ${locationInfo.province} 访客所在省份(ip解析或者微信等渠道的个人信息获得)
locationInfo city ${locationInfo.city} 访客所在城市(ip解析或者微信等渠道的个人信息获得)

4.操作表达式

[[#${function}:${params}]]以两个中括号打头追加#${function}:后系统会自动识别到表达式,同时将表达式替换为指定的内容或者添加指定的事件。

function:系统支持的表达式方法,比如:转人工对话、结束对话、获取数据、转留言
params:执行当前表达式方法传递的参数

表达式列表

function param格式 表达式示例 解析阶段 解释
toChat string [[#toChat:转接人工]] 答案返回后 点击param内容后可进行抓人工请求。

例如:结束对话表达式,在系统识别到此表达式后系统会在机器人的答案中直接提供转人工操作。

表达式:[[#toChat:点击转接客服]]

效果:

5.数据表达式

数据表达式

((#${function}:${params}))以两个小括号打头追加#${function}:后系统会自动识别到表达式,同时将请求回来的数据内容。

function:系统支持的表达式方法,比如:获取业务数据
params:执行当前表达式方法传递的参数

表达式列表

function param格式 表达式示例 解析阶段 解释
queryData url ((#queryData:url)) 答案返回前 在答案返回前会向此表达式配置的url get数据将返回的数据追加到表达式出现在的答案中的位置

get参数追加签名

请求地址:

${url}[?|&]nonce=${nonce}&timestamp=${timestamp}&signature=${signature}

参数说明

参数 描述
signature 一洽加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数

signature生成过程如下:

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)一洽按照如上方法对字符串加密后与参数中的signature对比,如果一致则认为是合法的请求

详细签名生成方法请参看 accessToken生成规则中的签名生成规则。

数据返回说明

请求超时时间:5000ms

返回格式为json数据

参数 类型 说明
type enum 返回的业务数据类型。
text:将返回的内容直接替换掉表达式
content string 数据内容,根据type的类型对content进行指定规则的使用

例如:获取会员数据,将获取回来的会员数据融入到答案中返回给访客

表达式:((#queryData:https://crm.echatsoft.com/getUserInfo?userId=${userInfo.visitorId}&lan=${chatInfo.lan}))

返回的数据:

{
    "type":"text",
    "content":"用户名:一洽客服
 	      加入日期:2015-01-01
	     剩余积分:1818
	    历史兑换积分:6868"
}

知识库编辑:

访客查看答案效果:

6.逻辑表达式

{{#${logic}:${content}}}以两个大括号打头追加#${logic}:后系统会自动识别到表达式,同时根据表达式的逻辑结果真/假动态显示答案,即在当前条件为真时,答案中将包含${content}。

logic:系统支持的逻辑判断,比如:客服在线、客服离线、会员访客、匿名访客、
content:逻辑为真是显示在答案中的内容

表达式列表

logic 解析阶段 解释
staffOnline 答案返回前 当前请求业务线的客服状态为在线
staffOffline 答案返回前 当前请求业务线的客服状态为离线
vipUser 答案返回前 当前访客是会员
anonymityUser 答案返回前 当前访客是匿名

例如:客服在线则提示转人工、客服不在线则提示客服服务时间

表达式:

{{#staffOnline:您好,当前客服在线,您可[[#toChat:点击转接客服]]}}

{{#staffOffline:您好,当前客服不在线,请在周一到周五的9:00-18:00联系客服}}

知识库编辑:

客服在线访客查看答案效果:

客服不在线访客查看答案效果: