一洽客服系统·工单系统-接收事件通知
在开发API-服务器交互-业务数据接收处开启接收工单数据后,当工单被更新(包括新建)时,一洽会向服务器配置处的URL推送对应的事件。
目录
1. 选择数据接收模式
使用管理者的权限登录一洽软件后,在更多设置-开放API页面中配置appId,消息加解密key(encodingAesKey),token.
如图:
配置信息说明:
appId:一洽系统自动生成的应用唯一值,用于接口交互时判断用户身份。
encodingAesKey(消息加解密key):由开发者手动填写或随机生成,将用作JSON/XML数据加解密密钥,为保证数据安全推荐使用密文方式传输数据。
Token:Token可由开发者可以任意填写,用作生成签名
数据传输模式:明文:原始数据字符串 密文:通过AES加密过后的字符串
名词介绍:
apiServer:一洽提供给用户的接口服务器地址,例如:api.echatsoft.com
accessToken:调用一洽接口的授权令牌
ip白名单:允许访问一洽接口服务器的来源IP
2. 消息加解密说明
什么是EncodingAESKey?
一洽采用AES对称加密算法对消息体对行加密,EncodingAESKey则是加密所用的秘钥。消息接收方用此秘钥对收到的密文消息体进行解密。
消息加解密过程和微信公众平台的消息加解密方式一致。
示例代码(包括C++、php、Java、Python和C#版本)示例代码
注:一洽的签名信息在GET请求中,微信的示例代码签名在XML结构中,Encrypt节点的加解密方式是一样的。
Java要求jdk 1.6及1.6以上
异常java.security.InvalidKeyException:illegal
Key Size的解决方案:在官方网站下载JCE无限制权限策略文件(请到官网下载对应的版本, 例如JDK7的下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt,如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
注意:每次收到post请求后需要返回一洽 success 没有返回一洽会判断为未收到而重新发送
3.接收工单数据
接工单数据收>向开发者服务器URL推送相关数据,基础字段:
参数 | 参数类型 | 描述 |
---|---|---|
jobId | long | 工单id |
jobAttribute | byte | 工单属性,1=内部工单,2=外部工单 |
4. 工单创建
当工单创建时推送此消息,除了工单相关数据,开发者可登录一洽控制台,在开发API-服务器交互-工单数据处选择业务数据,包括:
会员数据、扩展数据、访客数据、路由数据,其中除了扩展数据,其它数据均只在web端创建外部工单有效。
GET参数追加:dataType=jobCreated
请求地址示例:
http://api.myserver.com/echatDataReceiver?timestamp=myTimestamp&nonce=myNonce&signature=81ceaac69a2f44be4f98d4adbea202d5792c62bb&dataType=jobCreated
工单基础xml属性解释:
工单基础xml属性解释:
参数 | 参数类型 | 描述 |
---|---|---|
title | String | 工单标题 |
content | String | 工单内容,超过5W字符会被截断 |
jobFollowerIds | String | 工单跟踪人id,多个用逗号分隔 |
jobFollowerNames | String | 工单跟踪人姓名,多个用逗号分隔 |
requesterLan | String | 工单请求语言 |
requesterUserId | String | 请求者id,访客vipId或客服id |
requesterUserType | byte | 请求者类型,小于0表示客服,否则为访客 |
styleId | long | 样式id |
jobType | byte | 工单类型, 1:问题,2:事务,3:故障,4:任务 |
departmentId | long | 工单指派分组 |
distributeUserId | long | 工单指派客服 |
priority | byte | 工单优先级,1:低,2:正常,3:高,4:紧急 |
jobTemplateId | long | 工单模板id |
status | byte | 工单状态,1:新建,2:已开启,3:待回应,4:已挂起,5:已解决,6:已关闭 |
replyEmail | String | 回复邮箱 |
replyPhone | String | 回复短信 |
memo | String | 工单备注 |
attachments | json | 工单附件列表,对象列表,格式见后Attachment字段定义 |
name | String | crm字段-姓名 |
phone | String | crm字段-手机号 |
String | crm字段-qq | |
String | crm字段-微信 | |
String | crm字段-邮箱 | |
address | String | crm字段-地址 |
nickName | String | crm字段-昵称 |
gender | byte | crm字段-性别 |
crmMemo | String | crm字段-备注 |
maritalStatus | byte | crm字段-婚姻状态 |
age | byte | crm字段-年龄 |
birthday | String | crm字段-生日 |
jobLink | String | 工单链接 |
c1-c20 | String | crm自定义字段 |
t1-t30 | String | 工单自定义字段 |
crmId | long | 客户crm信息的id |
Attachment字段定义:
对象 | 参数 | 参数类型 | 描述 |
---|---|---|---|
type | byte | 文件类型,固定为1 | |
fileValue | url | String | 文件url |
name | String | 文件名称 | |
size | long | 文件大小,单位:字节 | |
fileType | int | 0:其它,1:语音,2:视频,3:地理位置,4:图片 |
示例:
<xml>
<jobId>1088</jobId>
<jobAttribute>2</jobAttribute>
<jobData>
<title><![CDATA[标题]]></title>
<requesterLan><![CDATA[en]]></requesterLan>
<requesterUserId><![CDATA[79]]></requesterUserId>
<requesterUserType>1</requesterUserType>
<styleId>225</styleId>
<jobType>1</jobType>
<departmentId>2</departmentId>
<distributeUserId>78</distributeUserId>
<priority>3</priority>
<jobTemplateId>4</jobTemplateId>
<status>2</status>
<replyEmail><![CDATA[huangzhilin2015@outlook.com]]></replyEmail>
<replyPhone><![CDATA[18349975744]]></replyPhone>
<memo><![CDATA[备注]]></memo>
<attachments>
<attachment>
<type>1</type>
<fileValue>
<url><![CDATA[http://x.xx/a.png]]></url>
<name><![CDATA[a.png]]></name>
<size>12442</size>
<fileType>0</fileType>
<key><![CDATA[job/1/e26a4bb7-2639-4c1d-9c45-9a43da8567d9_350_1556]]></key>
<bucket><![CDATA[chat]]></bucket>
</fileValue>
</attachment>
<attachment>
<type>1</type>
<fileValue>
<url><![CDATA[http://x.xx/b.png]]></url>
<name><![CDATA[b.png]]></name>
<size>115487</size>
<fileType>0</fileType>
<key><![CDATA[job/1/e26a4bb7-2639-4c1d-9c45-9a43da8567d9_350_1556]]></key>
<bucket><![CDATA[chat]]></bucket>
</fileValue>
</attachment>
</attachments>
</jobData>
</xml>
5. 工单更新
GET参数追加:dataType=jobUpdated
请求地址示例:
http://api.myserver.com/echatDataReceiver?timestamp=myTimestamp&nonce=myNonce&signature=81ceaac69a2f44be4f98d4adbea202d5792c62bb&dataType=jobUpdated
当工单更新时推送此消息,消息包含更新的字段和更新的内容,目前支持通知以下字段:
参数 | 参数类型 | 描述 |
---|---|---|
status | byte | 工单状态,1:新建,2:已开启,3:待回应,4:已挂起,5:已解决,6:已关闭, |
replyTpe | byte | 工单回复类型,1=内部回复,2=外部回复,3=内部回复和外部回复 |
priority | byte | 工单优先级,1:低,2:正常,3:高,4:紧急 |
jobType | byte | 工单类型, 1:问题,2:事务,3:故障,4:任务 |
topic | 主题 | |
topicId | long | 主题ID |
topicName | String | 主题名 |
distributeUser | 处理人 | |
staffId | long | 客服id |
staffName | String | 客服名 |
staffRole | String | 客服角色名 |
staffLogname | String | 客服登录名 |
replyContent | String | 工单回复内容(外部回复或者内部回复),超过5W字符会被截断 |
replyEmail | String | 回复邮箱地址 |
replyPhone | String | 回复手机号码 |
jobUpdator | 更新人,其中type值=-1表示客服,>0表示访客类型 | |
memo | String | 工单备注 |
c1-c20 | String | crm自定义字段 |
t1-t30 | String | 工单自定义字段 |
name | String | crm字段-姓名 |
phone | String | crm字段-手机号 |
String | crm字段-qq | |
String | crm字段-微信 | |
String | crm字段-邮箱 | |
address | String | crm字段-地址 |
nickName | String | crm字段-昵称 |
gender | byte | crm字段-性别 |
crmMemo | String | crm字段-备注 |
maritalStatus | byte | crm字段-婚姻状态 |
age | byte | crm字段-年龄 |
birthday | String | crm字段-生日 |
Attachment字段定义:
对象 | 参数 | 参数类型 | 描述 |
---|---|---|---|
type | byte | 文件类型,固定为1 | |
fileValue | url | String | 文件url |
name | String | 文件名称 | |
size | long | 文件大小,单位:字节 | |
fileType | int | 0:其它,1:语音,2:视频,3:地理位置,4:图片 |
示例:
<xml>
<msgId>275867516</msgId>
<tm>1668150932968</tm>
<jobId>5715</jobId>
<jobAttribute>2</jobAttribute>
<jobData>
<replyType>2</replyType>
<jobUpdator>
<type>-1</type>
<updaterId><![CDATA[1556]]></updaterId>
<updaterName><![CDATA[胡仲舜]]></updaterName>
</jobUpdator>
<replyContent><![CDATA[<p>你的问题已经处理好了</p>]]></replyContent>
<attachments>
<attachment>
<type>1</type>
<fileValue>
<url><![CDATA[https://qnfile.echatsoft.com/job/1/e26a4bb7-2639-4c1d-9c45-9a43da8567d9_350_1556]]></url>
<name><![CDATA[h5-webview文件上传.png]]></name>
<size>173837</size>
<fileType>4</fileType>
<key><![CDATA[job/1/e26a4bb7-2639-4c1d-9c45-9a43da8567d9_350_1556]]></key>
<bucket><![CDATA[chat]]></bucket>
</fileValue>
</attachment>
</attachments>
</jobData>
</xml>
6. 工单满意度评价
GET参数追加:dataType=jobEvaluation
请求地址示例:
http://api.myserver.com/echatDataReceiver?timestamp=myTimestamp&nonce=myNonce&signature=81ceaac69a2f44be4f98d4adbea202d5792c62b&dataType=jobEvaluation
当有用户评价工单时推送此消息,消息包含评价满意度信息,目前支持通知以下字段:
参数 | 参数类型 | 描述 |
---|---|---|
jobId | long | 工单所属公司id |
evaluateDatetime | long | 用户评价时间,长整型时间戳 |
mainItem | byte | 评价满意度,取值在[1,5],5表示非常满意,1表示非常差评 |
comment | String | 访客评价备注内容,最多50字符 |
subItems | String | 评价子项 |
示例:
<xml>
<jobId>1063</jobId>
<evaluateDatetime>1634132442000</evaluateDatetime>
<mainItem>5</mainItem>
<comment><![CDATA[服务态度非常好,我很喜欢]]></comment>
<subItems><![CDATA[态度良好,回复及时]]></subItems>
</xml>