注意:本文只对在线服务接入访客名片功能进行详细叙述。
接入在线服务的租户通常会有这么一个需求,就是希望客服在工作台界面能够看到来咨询问题的访客的个人信息,以便提供更好的服务。出于为客户的数据安全考虑,云客服不会获取接入方的客户信息,这就需要接入方提供一个页面或接口(即“访客名片”)来供云客服系统实时展示,而这样的一个页面或接口需要查询参数,比如类似userId这样的能确定客户身份的信息。接入方如何将这些查询参数传递给云客服,以便云客服系统在调用接入方的“访客名片”时将查询参数透传给接入方系统,这就是本文档要解决的问题。
在线服务接入访客名片的工作有两个,分别为:
上述demo可以直接本地执行Application.java中的main函数。
其他开发语言目前没有代码demo,请用户参考Java语言进行开发。
注意:该文档所需公钥,需要收集租户id(提供聊天窗url),和当前文档链接,提工单给我们的同学生成。
埋点主要是构造带有用户信息的加密链接。
2.1在线服务埋点链接
2.2需要加哪些参数?
只需要加上两个URL参数,即可使一个匿名链接变为实名链接:
2.3cinfo里是什么内容?
cinfo里明文的内容构造示例:
字段代码
字段名称
字段说明
extInfo
业务扩展信息
userId
用户id
访客在接入方系统中的标识。该字段必须设置。
timestamp
uname
用户名称
用于在线工作台的环境信息tab中展示,可不传;不传则不展示。
browser
浏览器
network
网络
appVersion
应用端版本
os
操作系统
device
设备
resolution
分辨率
2.4如何生成最终的cinfo和key?
接下来将明文进行加密,以得到最终要拼接到聊天窗URL中的cinfo和key参数。
代码示例
2.5生成最终的带实名访客信息的聊天窗URL
在工作台对访客信息展示一共有两种方案:
这两种方案不可以同时使用,请选择一种。
该方案需要租户自己提供一个访客名片的展示页面,以iframe的形式嵌入到在线工作台右侧。工作流程如下:
3.1.1提供访客名片URL
3.1.2params进行解密
客服工作台在加载租户提供的URL的时候,会在URL中拼接三个参数:params,key,iframeKey。
解密params方法请参考本文:第四节解密。
解密后的结果是一个JSON数据,该数据内容的参数含义如下:
名称
类型
可空
字段限制
描述
String
是
2048
sourceType
否
32
在线页面嵌入时需要根据此参数判断展示类型,在线为纵向展示。
contactId
64
服务记录ID,供接入方处理个性化业务与服务记录之间的关联关系,例如:业务自有工单需要与云客服平台服务记录做关联的场景中。
3.1.3页面对params的内容进行展示
拿到解密后的params内容后,在iframe页面上渲染其内容信息,展示给客服。
3.1.4利用postMessage函数方法回传userId和userName
请将下面代码放到页面中。
functionsendMessage(type,data){constparams={};params.type=type;params.data=data;params.resource='csbridge';params.iframeKey='1';//从url参数获取,示例假设值为1window.parent.postMessage(JSON.stringify(params),'*');}然后在步骤3.1.2的params解密后,调用:
sendMessage('updateUserInfo',{"userId":"TESTID123456789","userName":"Tom"});3.1.5更新嵌入的页面高度
本小节是为了样式调整,不是必须的.使用方法同上一节类似。
示例sendMessage('updateHeight',300);//300是需要设定的高度。
以上是接入访客名片的所有流程。
使用这种方案的时候,不需要租户提供任何前端页面,只需要提供一个接口,云客服会通过Post的方式调用这个接口来查询访客信息。
注意:该接口必须支持跨域请求.跨域解决方案可自行搜索CORS获取。接口协议必须是HTTPS。响应头中Content-Type为application/json;charset=utf-8。
客户需要做的流程为:
3.2.1提供客户查询接口URL
3.2.2取得params和key参数并解密
云客服会对该接口发送POST请求(跨域)。其中两个参数params和key会拼接在上一步配置的URL后面。例如:
解密params方法请参考本文:第四节解密
解密之后的内容是一个JSON字符串,各个字段意义如下(各个字段并不一定有,可以为空):
tel
聊天窗埋点信息
租户CRM中的用户ID
cardId
用户证件号码
3.2.3通过解密后的内容查询用户信息并返回.
解密后的内容含有用户的关键信息,通过这个信息客户自行查询到相信信息,并按照严格的格式返回。
返回的JSON数据中,userId为必填字段。云客服平台会以此数据作为客户的唯一标识,并保存在云客服平台服务记录中。该字段不用再schema中做字段信息的描述。
样例:
CustomerInfoCryptoUtil.decryptByPublicKey(URLEncoder.encode(params,"UTF-8"),URLEncoder.encode(key,"UTF-8"),publicKey);说明如果在按照文档对接成功,但是工作台无法显示,需要提供租户id,工作台客户接入时的控制台network中调用填写接口的response信息,然后提工单给我们。