平安音视频api

4次阅读

共计 7555 个字符,预计需要花费 19 分钟才能阅读完成。

版本 -v1128
发版说明:api 更新时,在这个文档末尾加上 release
版本 -v1204
发版说明:1、废弃 client.initInnerCallBack 中的 videoCloseCB 回调,将其精确通知到对应的回调事件中 (增加 closeVideoSuccess 回调事件),涉及到的更改如下,示例代码已添加

client.videoPickUp
client.videoInviteAgent
client.callbackToVisitor
client.videoInviteCurrentVisitor
client.videoInviteVisitor

2、统一 SDK 报错的提示格式,从返回的数据的 error.msg 拿错误提示信息
error: function(data) {
if(data.error) {
var msg = data.error.msg || ”
}
console.log(msg, ‘ 错误信息 ’)
}
版本 -v1211
发版说明:1、增加是否在屏幕共享的 API – isShareState2、增加是否在三方视频中的 API – isMultipleVideo
版本 -v1216
发版说明:1、client.initInnerCallBack 中添加了 visitorStreamOffline 事件,当会议中有成员视频流停止超过 3s 则推送此事件
版本 -v1220
发版说明:1、增加 client.videoPickUp 中的 visitorDisconnect 回调,提示音视频接通后访客端引起的挂断,详见示例代码 2、增加 client.multipleVideoPickUp 中的 kefuCloseVideoSuccess 回调,提示音视频接通后坐席或访客端挂断导致的会议结束 (非被邀请的三方坐席)
1、初始化举例、参数及挂载回调说明
1.1、new IMClient 初始化说明

baseWsUrl 必填 基础连接的 ws,wss://lccp-ex.easemob.com:1040 为 wss 连接,ws://127.0.0.1:1040 为 ws 连接

ssoTo 必填 客服的主地址
videoBarVisible 是否开启客服内部的音视频控制条
success 初始化成功的回调
error 初始化出错的回调
ssoReady 单点登录页面准备就绪
kefuReady 进入客服页面了
kefuWSClose 客服内部的 ws 通道出错

1.2、client.initInnerCallBack 方法说明

chatCloseCB == 客服内部 IM 会话关闭的回调通知 ==
videoCloseCB == 客服内部音视频关闭的回调通知 ==
visitorStreamOffline == 会议成员视频流离线超过 3s==

1.3 初始化示例
window.onload = function() {
var client;
function initIMClient(){
var HXPlugin = window.HXPlugin = 0;
var wssrc = location.protocol == “https:” ? “wss://lccp-ex.easemob.com:1040” : “ws://127.0.0.1:1040”;

client = new IMClient({
baseWsUrl: wssrc,
videoBarVisible: true,
ssoTo: “https://kefu.wecvideotest.pingan.com.cn/mo/agent/webapp/chat”,
success: function(data){
console.log(“ 成功连接 ”, data);
HXPlugin = 0;
this.linkStatus = true;
},
error: function(error){
this.linkStatus = false;
this.ready = false;
console.log(error);
HXPlugin = 0;
},
ssoReady: function(){
console.log(“ 进入单点登录页面了,可以登录了 123+”);
},
kefuReady: function(){
console.log(“ 进入客服系统了,可以退出了 123-“);
},
kefuWSClose: function(){
console.log(“kefu 系统的 ws 断开 ”);
}
});

client.linkStatus = false;
client.ready = false;
client.detactExeReadyInterval = null;
/**
* 接收 exe 内部操作的回调
*/
client.initInnerCallBack({
chatCloseCB: function(data){
console.log(data);
},
visitorStreamOffline: function(data){
console.log(data)
}
});
return client;
}
window.initIMClient = initIMClient;
}
2、具体 API 说明
2.1、exe 窗口相关
client.startLogin 插件登录

minimize 是否在登录的时候最小化窗口
data 传入登录的参数 url 必传
success 登录成功的回调通知
error 登录失败的回调通知

client.startLogin({
minimize: true,
data: {
url: “https://pingan-test-video.easemob.com/doLogin?name=23160006&pwd=76160006&returnTo=”,
},
success: function (data) {
console.log(data, “ 登录成功回调 ”);
},
error: function (err) {
// 登录超时逻辑处理
if (err && err.code == -1) {
// 此时登录超时
console.log(“ 登录超时 ”)
}
}
})
setWindowSize 调整 exe 窗口宽高

width 宽度
height 高度

client.setWindowSize({
width: “300”,
height: “400”
});
minimize exe 窗口最小化
client.minimize()
startup windows 环境下拉起 exe 插件
client.startup({clientUrl: “pocprotocol://”})
restore exe 窗口还原
client.restore()
quit exe 窗口退出
client.quit()
2.2、IM 文本会话相关方法
pickUpSession 接起 IM 会话

session_id 会话 id,必填
success IM 接起成功
error IM 接起失败

client.pickUpSession({
session_id: serviceSessionId,
success: function (data) {
console.log(“IM 接起成功!”, data);
},
error: function (data) {
console.log(“IM 接起失败!”, data);
}
});
chatClose 挂断当前 IM 会话
client.chatClose()
2.3、音视频相关方法
videoPickUp 主坐席接起音视频

session_id 必填 会话 id
success 音视频接起会议创建成功的回调
visitorDisconnect 音视频接通后访客端引起的挂断
timeoutDisconnect 超时未接的回调
error 音视频接起失败的回调

client.videoPickUp({
session_id: serviceSessionId,
success: function (data) {
console.log(‘video 接起成功 ’, data);
},
timeoutDisconnect: function(data) {
console.log(‘ 访客超时未接听 ’, data)
},
visitorDisconnect: function(data) {
console.log(‘ 音视频接通后访客端引起的挂断 ’, data)
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function(error) {
console.log(error, ‘videoPickUp err’)
}
});
multipleVideoPickUp == 被邀请 == 的三方坐席接起音视频

acceptSuccess 三方坐席接受当前视频成功
exitSuccess 三方坐席离开当前视频成功
error 三方坐席加入音视频出错

client.multipleVideoPickUp({
acceptSuccess: function (data) {
console.log(‘ 三方坐席接受当前视频成功 ’, data);
},
exitSuccess: function (data) {
console.log(‘ 三方坐席离开当前视频成功 ’, data);
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function(error) {
console.log(‘ 三方坐席加入音视频出错 ’, error)
}
});
videoInviteAgent 邀请三方坐席

agentName 必填 被邀请的三方坐席的 name
inviteSuccess 三方坐席视频邀请发送成功
acceptSuccess 三方坐席接受视频成功
exitSuccess 三方坐席退出成功
error 邀请三方坐席失败

client.videoInviteAgent({
agentName: ‘XXXX’,
inviteSuccess: function (data) {
console.log(‘ 三方坐席视频邀请发送成功 ’, data);
},
acceptSuccess: function (data) {
console.log(‘ 三方坐席接受视频成功 ’, data)
},
exitSuccess: function (data) {
console.log(‘ 三方坐席退出成功 ’, data)
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function(data) {
console.log(data, ‘ 邀请坐席失败 ’)
}
})
callbackToVisitor 外呼访客

visitorName 必填 访客 name
inviteSuccess 外呼 - 访客邀请发送成功
acceptSuccess 外呼 - 访客接受邀请
visitorRefuse 外呼 - 访客拒接邀请
visitorDisconnect 外呼 - 访客挂断
videoBusyMark 外呼 - 访客忙线
timeoutDisconnect 外呼 - 访客超时未接听
kefuCloseVideoSuccess 外呼 - 客服挂断音视频
error 外呼 - 访客 出错,错误信息

client.callbackToVisitor({
visitorName: ‘XXXX’,
startVideo: true,
inviteSuccess: function (data) {
console.log(data, ‘ 外呼 - 访客邀请发送成功 ’)
},
acceptSuccess: function (data) {
console.log(‘ 外呼 - 访客接受邀请 ’, data)
},
visitorRefuse: function (data) {
console.log(‘ 外呼 - 访客拒接邀请 ’, data)
},
visitorDisconnect: function (data) {
console.log(‘ 外呼 - 访客挂断 ’, data)
},
videoBusyMark: function (data) {
console.log(‘ 外呼 - 访客忙线 ’, data)
},
timeoutDisconnect: function (data) {
console.log(‘ 外呼 - 访客超时未接听 ’, data)
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function (error) {
console.log(‘ 外呼 - 访客 出错 ’, error)
/*error: {
code: “SDK_11”,
msg: “ 当前访客正在进行会话,无法外呼 ”
}
error: {
code: “SDK_08”,
msg: “ 查询 id 出错,请检查访客信息是否正确 ”
}*/
}
});
videoInviteCurrentVisitor 邀请当前访客音视频
回调同外呼访客,参上
client.videoInviteCurrentVisitor({
inviteSuccess: function (data) {
console.log(data, ‘ 邀请当前 - 访客邀请发送成功 ’)
},
acceptSuccess: function (data) {
console.log(‘ 邀请当前 - 访客接受邀请 ’, data)
},
visitorRefuse: function (data) {
console.log(‘ 邀请当前 - 访客拒接邀请 ’, data)
},
visitorDisconnect: function (data) {
console.log(‘ 邀请当前 - 访客挂断 ’, data)
},
videoBusyMark: function (data) {
console.log(‘ 邀请当前 - 访客忙线 ’, data)
},
timeoutDisconnect: function (data) {
console.log(‘ 邀请当前 - 访客超时未接听 ’, data)
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function (data) {
console.log(‘ 邀请当前 - 访客 出错 ’, data)
}
});
videoInviteVisitor 邀请三方访客
回调同外呼访客,参上
client.videoInviteVisitor({
visitorName: ‘XXXX’,
inviteSuccess: function (data) {
console.log(data, ‘ 邀请三方 - 访客邀请发送成功 ’)
},
acceptSuccess: function (data) {
console.log(‘ 邀请三方 - 访客接受邀请 ’, data)
},
visitorRefuse: function (data) {
console.log(‘ 邀请三方 - 访客拒接邀请 ’, data)
},
visitorDisconnect: function (data) {
console.log(‘ 邀请三方 - 访客挂断 ’, data)
},
videoBusyMark: function (data) {
console.log(‘ 邀请三方 - 访客忙线 ’, data)
},
timeoutDisconnect: function (data) {
console.log(‘ 邀请三方 - 访客超时未接听 ’, data)
},
kefuCloseVideoSuccess: function(data) {
console.log(‘ 客服挂断音视频 ’, data)
},
error: function (data) {
console.log(‘ 邀请三方 - 访客 出错 ’, data)
/*error: {
code: “SDK_11”,
msg: “ 当前访客正在进行会话,无法外呼 ”
}
error: {
code: “SDK_08”,
msg: “ 查询 id 出错,请检查访客信息是否正确 ”
}*/
}});
videoDisconnect 挂断音视频
client.videoDisconnect()
2.4、截图 & 拍照
// 拍照
client.takePhoto({
success: function (data) {
console.log(data, ‘ 拍照数据 ’)
},
error: function(error) {
console.log(error, ‘ 拍照失败 ’)
// 拍照不可用会返回如下消息 {“mark”:”takePhoto”,”subMark”:”error”,”error”:{“type”:”snapShotDisabled”,”msg”:”snapShotDisabled”}}
}
});

// 截图
client.snapshot({
success: function (data) {
console.log(data, ‘ 截图数据 ’)
},
error: function(error) {
console.log(error, ‘ 截图失败 ’)
}
});
2.5、共享
inviteShare 邀请访客共享

open 访客共享屏幕打开了
close 访客共享屏幕关闭了
error 邀请访客共享屏幕失败

client.inviteShare({
open: function (data) {
console.log(‘ 共享屏幕邀请成功 ’, data)
},
close: function (data) {
console.log(‘ 访客共享屏幕关闭了 ’, data)
},
error: function (error) {
console.log(‘ 邀请访客共享屏幕失败 ’)
}
});
2.6、其他
sessionCount 获取当前正在进行的会话的数量
client.sessionCount({
success: function(data) {
console.log(data.payload.sessionCount)
}
})
sessionState 获取当前正在进行的会话的详情
client.sessionState({
success: function(data) {
console.log(data)
}
})
isMultipleVideo
参数说明
success 中的 data.data 为布尔值,true 代表当前正在三方视频中,false 代表当前不在三方视频中
client.isMultipleVideo({
success: function(data) {
console.log(data.data, ‘ 当前是否正在三方视频中 ’)
}
})
isShareState
参数说明
success 中的 data.data 为布尔值,true 代表当前正在共享中,false 代表当前不在共享中
client.isShareState({
success: function(data) {
console.log(data.data, ‘ 当前是否在共享中 ’)
}
})
release 说明
api 的 md 文档提供 – 11.28

正文完
 0