乐语在线客服WEB SDK接入文档
说明
- 此sdk主要为了满足有开发能力的客户完全自定义对话界面的需求
- 在调用此文档之前,请先从客服获取appId
基本调用方式
<script type="text/javascript" src="../scripts/looyusdk.js"></script>
<script type="text/javascript">
LooyuSDK.init({
appId:'5b06c8229536c17e86b8b8f1', // 您的appId
appCode:'xdf133113', //您的app标识
compId:1000000, //你的公司ID
groupId:100000 //接入的分组ID
}).on('prepared',function(data){ //初始化完成,我们可以开始建立对话或者发送其他数据给looyu后台
if(data.err != 0){ //发生错误
return;
}
LooyuSDK.connect(); //建立对话
LooyuSDK.leaveMessage(); //留言
}).on('connected',function(data){
if(data.mode == 0 ){
//客服离线,我们可能要切换到留言界面或者自助界面
}else if(data.mode == 1){
//客服在线,等待在begin事件中开始对话
}else if(data.mode==2){
//进入队列,请在queue事件中提示客户
}
}).on('queue',function(data){
console.log('你进入服务队列,当前位置为:’+data.pos);
}).on('begin',function(data){
console.log('对话开始,客服ID为:‘+data.userId);
}).on('leave',function(data){
console.log('有人离开对话:'+data.userId);
}).on('close',function(){
console.log('对话已经关闭')
}).on('message',function(){
console.log('我们收到消息'+data.msg);
})
.on('disconnected',function(data){
console.log('网络中断,我们正在重试')
}).on('resume',function(){
console.log('网络恢复')
})
</script>
全局配置
LooyuSDK.option({
retryTimes:5, //发送数据时,如果遇到网络错误,重试次数,超过次数将触发disconnected事件
retryTimeout:10 //,单位:秒,发送数据时,如果遇到网络错误,重试时间,超过时间将触发disconnected事件
})
初始化
LooyuSDK.init({
appId:'',
appCode:'',
compId:10000,
group:10000,
clickPage:'',
fromUrl:'',
keyword:'',
channel:0,
lang:'',
customize:{
userId:'',
promoter:'',
promoteId:'',
column0:'',
...
column4:''
}
},function(data){
})
参数一说明:
参数 | 必选 | 默认 | 说明 |
---|---|---|---|
appId | 是 | 接入方由我方提供,向客服咨询获取 | |
appCode | 是 | 接入方标识码,app标识(自定义,为3到24位英文和数字字符,供后台记录统计分析) | |
compId | 是 | 接入的公司ID,可在在线客服后台查到 | |
group | 是 | 接入的分组ID,可从在线客服后台获取 | |
channel | 否 | 0 | 对话的站点ID,可从在线客服后台获取 |
clickPage | 否 | 访客当前页面URL | |
refer | 否 | 访客来源地址(比如百度或者其他第三方地址) | |
keyword | 否 | 访客的搜索词 | |
lang | 否 | zhCN | 访客的语言标识(可选项为:en,zhCN,zhTW,ru) |
customize | 否 | 自定义访客信息,供后台记录和分析 | |
customize.userId | 否 | 访客的ID,比如在用户网站上有登录系统,访客登录后可传递此ID给客服后台供记录和分析 | |
customize.promoter | 否 | 推广者ID | |
customize.promoteId | 否 | 推广来源ID | |
customize.columnx | 否 | 5个自定义信息 |
参数二说明: 此参数为初始化完成后的回调函数,可不指定,通过监听“prepared”事件达到相同的效果
data属性说明
属性 | 说明 |
---|---|
err | 错误,0表示完成,其他错误见错误码表 |
事件绑定
LooyuSDK.on(eventName,function(resp){
});
返回值: LooyuSDK对象自己,可以链式调用
事件说明
prepared
初始化完成,可以进行下一步请求,调用示例:
LooyuSDK.on('prepared',function(){
LooyuSDK.connect(); //发起对话请求
});
connected
和服务器建立连接后触发,并尝试开始对话,调用示例:
LooyuSDK.on('connected',function(data){
});
data的属性说明:
属性 | 说明 |
---|---|
err | 0:成功,其他数字见错误码说明 |
mode | 0:客服不在线或者忙碌,请到留言或者自助界面,1:对话接通,请响应begin事件,2:到队列,请响应queue事件 |
begin
对话建立完成(在排队结束时也会收到此消息),调用示例:
LooyuSDK.on('begin',function(data){
})
data的属性说明:
属性 | 说明 |
---|---|
userId | 客服的登录名 |
userName | 客服的外部名称 |
userName | 客服的外部名称 |
mobile | 客服手机号码 |
phone | 客服座机号 |
客服邮箱地址 | |
chatId | 对话ID |
message
收到消息时,触发此事件,调用示例:
LooyuSDK.on('message',function(data){
})
data的属性说明:
属性 | 说明 |
---|---|
id | 消息ID |
fromId | 发送者ID |
fromName | 发送者外部名称 |
time | 时间戳 |
private | 私人消息,默认为false |
category | 消息类型:0:文本消息,1:图片消息,2:文件,3:语音,4:视频 |
msg | 消息内容,如果为文件语音类消息,则为一个http链接地址 |
join
有人加入到对话时触发,调用示例:
LooyuSDK.on('join',function(data){
})
属性 | 说明 |
---|---|
userId | 用户ID |
userName | 显示名字 |
type | 用户类型,0:客服,1:访客 |
leave
有人离开对话时触发,调用示例:
LooyuSDK.on('leave',function(data){
})
data的属性说明:
属性 | 说明 |
---|---|
userId | 离开的用户ID |
close
会话关闭时触发
LooyuSDK.on('close',function(data){
})
disconnected
网络中断,sdk会不断进行重连
LooyuSDK.on('disconnected',function(data){
})
resume
网络恢复
LooyuSDK.on('resume',function(data){
})
rating
客服要求访客进行评价
LooyuSDK.on('rating',function(data){
})
typing
客服正在输入内容
LooyuSDK.on('typing',function(data){
})
queue
客服正在输入内容
LooyuSDK.on('queue',function(data){
})
data的属性说明:
属性 | 说明 |
---|---|
pos | 访客在队列中的位置 |
transfer
对话被转移给其他客服
LooyuSDK.on('transfer',function(data){
})
data的属性说明:
属性 | 说明 |
---|---|
userId | 转入的客服ID |
userName | 转入的客服外部名称 |
chatId | 新的对话ID |
发起对话请求
var reqId = LooyuSDK.connect(function(data){
});
返回值:本次请求ID
data属性说明见connected事件
发送消息
var reqId = LooyuSDK.send(msg,function(data){
});
返回值:本次请求ID
data属性说明:
属性 | 说明 |
---|---|
id | reqId |
err | 0:发送成功,其他错误见错误码表 |
发送留言
var reqId = LooyuSDK.leaveMessage({
name:'', //名字
phone:'', //电话
email:'',
qq:'',
weixin:'',
column0:'', //5个自定列
column1:'',
column2:'',
column3:'',
column4:'',
msg:''
},function(data){
});
data属性说明:
属性 | 说明 |
---|---|
id | reqId |
err | 0:发送成功,其他错误见错误码表 |
发送自定义表单
var reqId = LooyuSDK.form({
config:0,//配置名字
name:'', //名字
gender:'',//性别,0:未知,1:男,2:女
phone:'', //电话
mobile:'',
email:'',
qq:'',
weixin:'',
column0:'', //10个自定列
column1:'',
column2:'',
column3:'',
column4:'',
column6:'',
column7:'',
column8:'',
column9:''
},function(data){
});
请求参数说明:
属性 | 必填 | 说明 |
---|---|---|
config | 是 | 后台配置的表单ID |
其他项目 | 否 | 依据后台配置 |
data属性说明:
属性 | 说明 |
---|---|
err | 0:发送成功,其他错误见错误码表 |
自助答疑
从客户在后台配置的问题中查找匹配的答案
var reqId = LooyuSDK.robot(question,function(data){
err:0,
result:[{
id:0,//答案的ID
question:'', //匹配的问题
answer:'', //匹配的答案
attach:[{
path:'', //附件下载路径
name:'' //附件名字
}...] //如果有附件的话,此处为相关的文件url地址
}...]
});
data属性说明:
属性 | 说明 |
---|---|
err | 0:发送成功,其他错误见错误码表 |
result | 查询结果,如果result.length==0,则为没有找到匹配的答案 |
自助答疑反馈
var reqId = LooyuSDK.robotRating({
id:0,
question:'',
rating:0
},function(data){
err:0,
});
请求参数说明:
属性 | 必填 | 说明 |
---|---|---|
id | 是 | 答案的ID |
question | 是 | 访客的问题 |
rating | 是 | 0:无用,1:有用 |
data属性说明:
属性 | 说明 |
---|---|
err | 0:发送成功,其他错误见错误码表 |
result | 查询结果,如果result.length==0,则为没有找到匹配的答案 |
访客评价
对客服的服务进行评价
LooyuSDK.rating({
rating:1,
desc:''
},function(data){
});
请求参数说明:
属性 | 必填 | 说明 |
---|---|---|
rating | 是 | -1:很差,1 :不满意,2:一般,3:满意,4:非常满意 |
desc | 否 | 详细评价 |
data属性说明:
属性 | 说明 |
---|---|
err | 0:发送成功,其他错误见错误码表 |
读取历史消息
LooyuSDK.history(
function(data){
});
data属性说明:
属性 | 说明 |
---|---|
messages | 历史消息数组 |
历史消息格式:
{
id:13331111, //时间戳
from:'' , //发送者
msg:'' , //消息内容
id:11111 , //消息Id
}