说明
- 初始默认服务地址为
https://chat.looyu.com/mobile-sdk
- 在初始化过程中,服务端可能会返回其他的服务地址,此时请到该地址重新初始化
- 所有发送的数据需通过appSecret加密,加密方法见:数据加密
- 服务端返回的json里,固定格式为:
{
id:100,// 当type
type:'',//数据类型
err:0, //该字段可能不存在,0表示成功。其他数据表示失败。
data:{
}
}
- 其中data字段会被加密
- err数字的具体说明,请见:错误码
初始化
- 服务路径:/app-user/${compId}/${appId}
- method:post
- 参数:
{
id:100,//req id
type:'appUser',
action:'create',
param:{
compId:100, //公司ID
version:100,//sdk版本(数字格式)
platform:0,//0:pc 1:mobile 2:pad
os:'', //操作系统,win,android,linux,ios,mac,winphone
osVersion:'',//详细操作系统版本号
device:'',//设备型号,例如小米5
deviceId:'', //设备ID
brand:'' ,//品牌,例如:小米,华为,苹果,vivo,oppo
uniqueId:'' ,//永久ID
viewerId:'' ,//访问ID
times:'',//访问次数
appVersion:'',//用户APP版本
appViewerId:'',//用户APP内用户ID
customize:{ //自定义访客信息,所有key和value都为字符串
'name':'value',
...
}
}
}
- 返回值:
{
id:100,//req id
type:'resp',
err:0, //错误码
data:{
pushType:-1,//推送方式(-1:未配置或者自定义推送,0:ios,1:小米,2:华为,3:魅族,11:友盟)
server:'', //特定的服务地址
uplaod:'',//上传文件地址
download:''//下载文件地址前缀
}
}
- 缓存每次返回的server(特定服务地址),以后访问失败时,可以尝试接入这些地址。
修改App用户自定义信息
- 服务路径:/app-user/${compId}/${appId}
- method:post
- 参数:
{
id:100,
type:'appUser'
action:'update",
param:{
compId:100, //公司ID
uniqueId:'' ,//永久ID
viewerId:'' ,//访问ID
appViewerId:'',//用户APP内用户ID
customize:{ //自定义访客信息,所有key和value都为字符串
'name':'value',
...
}
}
}
- 服务端返回
{
id:100,//req id
type:'resp',
err:0, //错误码
}
更新pushToken
- 服务路径:/app-user/${compId}/${appId}
- method:post
- 参数:
{
id:100,
type:'appUser'
action:'pushToken",
param:{
compId:100, //公司ID
uniqueId:'' ,//永久ID
viewerId:'' ,//访问ID
appViewerId:'',//用户APP内用户ID
pushToken:''
}
}
- 服务返回:
{
id:100,//req id
type:'resp',
err:0, //错误码
}
用户类型
在对话过程中,会接触到发送方和接受方的身份类别,目前定义如下:
身份 | 定义 |
---|---|
客服 | 0 |
访客 | 1 |
易购 | 2 |
微信公众号 | 3 |
小程序 | 4 |
用户APP | 100 |
消息类型说明
类型 | 说明 |
---|---|
0 | 普通消息 |
1 | 图片(接受png,gif,jpeg,jpg) |
2 | 语音(接受mp3,amr(可为silk v3)) |
3 | 视频(接受h264编码,mp4后缀) |
4 | 普通文件 |
支持的普通文件为:bmp,webp,ico,rar,zip,7z,doc,docx,xls,xlsx,ppt,pptx,et,txt,csv,wps,wav,mp3,amr,ogg,acc,mp4,mov
建立消息通道
- 服务路径:/connect/${compId}/${appId}?appUser=${encryptedUserIfo}
- method:wss
- 参数:
{
uniqueId:'', //访客ID
time:10000 //当前时间戳
}
加密后做URL转码
- 服务返回
如果存在错误,不如传入错误的appID,可能会从通道收到错误信息:
{
id:100,
type:'resp',
err:0
}
创建对话
- 通过websocket发送以下数据:
{
id:100,
type:'chat'
action:'create",
param:{
groupId: 10004,//目标分组
probeId:0 //使用探头ID
manual:0 //1:强制接通坐席,否则依赖探头配置看接通坐席还是机器人,默认为0
}
}
- 服务端返回:
{
id:100,
type:'resp',
err:0,
data:{
mode:0,//0:对话,1:自助
// 为0有效
userId: '' //用户名
userName: '' //外部名字
photo:'' //头像
email:'',
mobile:'',
status:0, //客服状态,0:离线或忙碌,1:在线
fromType:0,
fromAppId:'',//仅当fromType=100时有效
/为1有效
robotName:'',
robotPhoto:'',
robotStupid:''
}
}
心跳消息
{
id:100,
type:'appUser'
action:'heartbeat"
}
-服务端返回:
{
id:100,
type:'resp',
err:0
}
发送消息
{
id:100, //一个自增ID
type:'chat",
action:'send",
param:{
category:0, //见消息类型说明
message:'' ,
to:'' //目标客服,可能为空
toType:0, //目标身份
toAppId:'' ,//仅当toType=100有效
}
}
评价对话
{
id:100,
type:'chat',
action:'rating',
param:{
score:0, //-1:很差,1:不满意,2:一般,3:满意,4:很满意
desc:'',//评价信息(可选)
}
}
离开对话
{
id:100,
type:'chat',
action:'leave'
param:{}
}
发送访客预知输入
{
id:100,
type:'chat',
action:'typing',
param:{
message:'' //正在输入的消息
}
}
对话消息格式
{
id:100,//消息ID
type:'chat",
data:{
from:'' //发送者
category:0//0:普通消息,1:图片(接受png,gif,jpeg,jpg),2:语音(接受mp3,amr(可为silk v3)),
3:视频(接受h264编码,mp4后缀),
4:附件(目前接受后缀:png,jpg,jpeg,bmp,gif,webp,ico,rar,zip,7z,doc,docx,xls,xlsx,ppt,pptx,et,txt,csv,wps,wav,mp3,amr,ogg,acc,mp4,mov)
message:''
fromType:0,//发送者身份
time:1111111 //发送时间戳
}
}
自助答疑
{
id:100,//ID
type:'robot",
action:'send",
param:{
message:''
}
}
自助答疑响应
{
id:100,
type:'resp',
err:0,
data:{
mode:0, //0:转人工客服,1:自助回答
//0有效
answers:[
{
id:1,
question:'',
answer:'',
files:[
{
name:'',
url:''
}...
]
}...
]
//0有效
user:{
userId: '' //用户名
userName: '' //外部名字
photo:'' //头像
email:'',
mobile:'',
status:0, //客服状态,0:离线或忙碌,1:在线
fromType:0,
fromAppId:'',//仅当fromType=100时有效
}
}
}
状态事件
{
id: 100,//消息ID
type:'status',
data:{
from:'' //客服ID
/*-----用户类事件参数------*/
event:0, //1xx:状态类消息 100:主动下线,101:从其他客户端登路下线,102:超时离线,
110:上线,111:自动从忙碌转为在线状态,120:主动忙碌,121:被动忙碌,130:主动离开,131:客户端长期未操作离开
}
}
对话事件
{
id:100, //消息ID
type:'event',
err:0,
data:{
from:'' //事件发出者,或者事件对话转移触发人。访客事件则为访客viewerId
/*-----对话类事件参数------*/
event:2xx //2xx对话类消息 202,对话关闭,203:对话转移,210:正在输入
user:{ //仅当对话转移时有效
userId: '' //用户名
userName: '' //外部名字
photo:'' //头像
email:'',
mobile:''
}
}
}
消息确认
通过通道发送的消息需要确认,格式为:
{
id:100,//请求ID
type:'confirm',
err:0
}