版本-v1128发版说明:api更新时,在这个文档末尾加上release版本-v1204发版说明:1、废弃client.initInnerCallBack中的videoCloseCB回调,将其精确通知到对应的回调事件中(增加closeVideoSuccess回调事件),涉及到的更改如下,示例代码已添加client.videoPickUpclient.videoInviteAgentclient.callbackToVisitorclient.videoInviteCurrentVisitorclient.videoInviteVisitor2、统一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 必填 会话idsuccess 音视频接起会议创建成功的回调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 必填 被邀请的三方坐席的nameinviteSuccess 三方坐席视频邀请发送成功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 必填 访客nameinviteSuccess 外呼-访客邀请发送成功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