发版说明:api更新时,在这个文档末尾加上releasejavascript
发版说明:
一、废弃client.initInnerCallBack中的videoCloseCB回调,将其精确通知到对应的回调事件中(增长closeVideoSuccess回调事件),涉及到的更改以下,示例代码已添加java
二、统一SDK报错的提示格式,从返回的数据的error.msg拿错误提示信息web
error: function(data) { if(data.error) { var msg = data.error.msg || '' } console.log(msg, '错误信息') }
发版说明:
一、增长是否在屏幕共享的API - isShareState
二、增长是否在三方视频中的API - isMultipleVideowindows
发版说明:
一、client.initInnerCallBack 中添加了 visitorStreamOffline 事件,当会议中有成员视频流中止超过3s 则推送此事件api
发版说明:
一、增长client.videoPickUp中的visitorDisconnect回调,提示音视频接通后访客端引发的挂断,详见示例代码
二、增长client.multipleVideoPickUp中的kefuCloseVideoSuccess回调,提示音视频接通后坐席或访客端挂断致使的会议结束(非被邀请的三方坐席)session
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; }
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("登陆超时") } } })
client.setWindowSize({ width: "300", height: "400" });
client.minimize()
client.startup({ clientUrl: "pocprotocol://" })
client.restore()
client.quit()
client.pickUpSession({ session_id: serviceSessionId, success: function (data) { console.log("IM接起成功!", data); }, error: function (data) { console.log("IM接起失败!", data); } });
client.chatClose()
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') } });
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) } });
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, '邀请坐席失败') } })
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出错,请检查访客信息是否正确" }*/ } });
回调同外呼访客,参上app
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) } });
回调同外呼访客,参上webapp
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出错,请检查访客信息是否正确" }*/ }});
client.videoDisconnect()
// 拍照 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, '截图失败') } });
client.inviteShare({ open: function (data) { console.log('共享屏幕邀请成功', data) }, close: function (data) { console.log('访客共享屏幕关闭了', data) }, error: function (error) { console.log('邀请访客共享屏幕失败') } });
client.sessionCount({ success: function(data) { console.log(data.payload.sessionCount) } })
client.sessionState({ success: function(data) { console.log(data) } })
参数说明ide
client.isMultipleVideo({ success: function(data) { console.log(data.data, '当前是否正在三方视频中') } })
参数说明函数
client.isShareState({ success: function(data) { console.log(data.data, '当前是否在共享中') } })
发版说明: 一、整合brower端和app端sdk,采用状态机管理应用工做状态, 二、修改部分api的调用方式
const state = { currentState: '000000', //未迁入 notLogin: '000000', //忙 visitorInvite_timeout: '001001', agentInvite_timeout: '001002', //闲 callVisitor_visitorRefuse:'002001', callVisitor_Timeout:'002002', callVisitor_busy:'002003', callVisitor_error:'002004', callVisitor_agentCloseVideo_notAnswer:'002005', callCurrentVisitor_visitorRefuse:'002006', callCurrentVisitor_timeout:'002007', callCurrentVisitor_busy:'002008', callCurrentVisitor_error:'002009', callCurrentVisitor_agentCloseVideo_notAnswer:'002010', visitorInvite_error: '002011', agentInvite_error: '002012', //外呼中 callVisitor_inviteSendSuccess:'003001', callCurrentVisitor_inviteSendSuccess:'003002', //来电中 //话后处理 inviteThirdVisitor_masterAgentCloseVideo: '005001', inviteThirdAgent_masterAgentCloseVideo: '005002', callVisitor_visitorDisconnect:'005003', callVisitor_agentCloseVideo_answered:'005004', callCurrentVisitor_visitorDisconnect:'005005', callCurrentVisitor_agentCloseVideo_answered:'005006', visitorInvite_visitorDisconnect: '005007', visitorInvite_agentCloseVideo: '005008', agentInvite_visitorDisconnect: '005009', agentInvite_agentCloseVideo: '0050010', //两方通话中 inviteThirdVisitor_visitorRefuse:'006001', inviteThirdVisitor_Timeout:'006002', inviteThirdVisitor_busy:'006003', inviteThirdVisitor_error:'006004', inviteThirdVisitor_visitorDisconnect:'006005', //inviteThirdAgent_visitorRefuse:'006006', //inviteThirdAgent_Timeout:'006007', //inviteThirdAgent_busy:'006008', inviteThirdAgent_error:'006009', inviteThirdAgent_visitorDisconnect:'006010', callVisitor_VisitorAcceptSuccess:'006011', callCurrentVisitor_VisitorAcceptSuccess:'006012', visitorInvite_Success: '006013', agentInvite_Success: '006014', //邀请中 inviteThirdVisitor_inviteSendSuccess:'007001', inviteThirdAgent_inviteSendSuccess:'007002', //三方通话中 inviteThirdVisitor_success:'008001', inviteThirdAgent_success:'008002', }
000000未签入 001000忙 001001 访客邀请-超时 001002 坐席邀请-超时 002000闲 002001 外呼访客-访客拒绝 002002 外呼访客-访客超时 002003 外呼访客-访客忙 002004 外呼访客-访客错误 002005 外呼访客-坐席挂断(未接通) 002006 外呼当前访客-访客拒绝 002007 外呼当前访客-访客超时 002008 外呼当前访客-访客忙 002009 外呼当前访客-访客错误 0020010 外呼当前访客-坐席挂断(未接通) 002011 访客邀请-错误 002012 坐席邀请-错误 003000外呼中 003001 外呼访客-邀请发送成功 003002 外呼当前访客-邀请发送成功 004000来电中 005000话后处理 005001 邀请三方访客-主坐席挂断 005002 邀请三方坐席-主坐席挂断 005003 外呼访客-访客挂断 005004 外呼访客-坐席挂断(接通后) 005005 外呼当前访客-访客挂断 005006 外呼当前访客-坐席挂断(接通后) 005007 访客邀请-访客挂断 005008 访客邀请-坐席挂断 005009 坐席邀请-访客挂断 005010 坐席邀请-坐席挂断 006000两方通话中 006001 邀请三方访客-访客拒绝 006002 邀请三方访客-访客忙 006003 邀请三方访客-访客超时 006004 邀请三方访客-访客错误 006005 邀请三方访客-访客挂断
006006 邀请三方坐席-坐席拒绝
006007 邀请三方坐席-坐席忙
006008 邀请三方坐席-坐席超时
006009 邀请三方坐席-坐席错误 006010 邀请三方坐席-坐席挂断 006011 外呼访客-访客接受视频成功 006012 外呼当前访客-访客接受视频成功 006013 访客邀请-成功 006014 坐席邀请-成功 007000邀请中 007001 邀请三方访客-邀请发送成功 007002 邀请三方坐席-邀请发送成功 008000三方通话中 008001 邀请三方访客-访客接受视频成功 008002 邀请三方坐席-坐席接受视频成功
一、相关api采用统一调用参数格式 二、参数为回调函数, para1: obj, para2: func(state, [payload])
client.videoInviteVisitor({ visitorName: 'XXXX', },function(state, payload){ if (state = 006001){ console.log('邀请三方访客-访客拒接邀请') } else if (state = 006002){ console.log('邀请三方访客-访客忙线') } else if (state = 006003){ console.log('邀请三方访客-访客超时') } else if (state = 006004){ console.log('邀请三方访客-访客错误') } else if (state = 006005){ console.log('邀请三方访客-访客挂断') } else if (state = 007001){ console.log('邀请三方访客-邀请发送成功') } else if (state = 008001){ console.log('邀请三方访客-访客接受视频成功') } else if (state = 005001){ console.log('邀请三方访客-主坐席挂断') } });
client.videoInviteAgent({ agentName: 'XXXX' },function(state, payload){ if (state = 006006){ console.log('邀请三方访客-访客拒接邀请') } else if (state = 006007){ console.log('邀请三方访客-访客忙线') } else if (state = 006008){ console.log('邀请三方访客-访客超时') } else if (state = 006009){ console.log('邀请三方访客-访客错误') } else if (state = 0060010){ console.log('邀请三方访客-访客挂断') } else if (state = 007002){ console.log('邀请三方访客-邀请发送成功') } else if (state = 008002){ console.log('邀请三方访客-访客接受视频成功') } else if (state = 005002){ console.log('邀请三方访客-主坐席挂断') } }); *注意:原始api只有邀请 错误、发送成功、接收成功、第三方坐席挂断(exitSuccess而非visitorDisconnect)住坐席挂断
- visitorName **必填** 访客name - inviteSuccess 外呼-访客邀请发送成功 - acceptSuccess 外呼-访客接受邀请 - visitorRefuse 外呼-访客拒接邀请 - visitorDisconnect 外呼-访客挂断 - videoBusyMark 外呼-访客忙线 - timeoutDisconnect 外呼-访客超时未接听 - kefuCloseVideoSuccess 外呼-客服挂断音视频 - error 外呼-访客 出错,错误信息
client.callbackToVisitor({ visitorName: 'XXXX', startVideo: true, },function(state, payload){ if (state = 002001){ console.log('外呼访客-访客拒接邀请') } else if (state = 002002){ console.log('外呼访客-访客超时') } else if (state = 002003){ console.log('外呼访客-访客忙线') } else if (state = 002004){ console.log('外呼访客-访客错误') } else if (state = 002005){ console.log('外呼访客-坐席挂断(未接通)') } else if (state = 003001){ console.log('外呼访客-邀请发送成功') } else if (state = 006011){ console.log('外呼访客-访客接受视频成功') } else if (state = 005003){ console.log('外呼访客-访客挂断') } else if (state = 005004){ console.log('外呼访客-坐席挂断(已接通)') } } });
client.videoInviteCurrentVisitor(null, function(state, payload){ if (state = 002006){ console.log('外呼当前访客-访客拒接邀请') } else if (state = 002007){ console.log('外呼当前访客-访客超时') } else if (state = 002008){ console.log('外呼当前访客-访客忙线') } else if (state = 002009){ console.log('外呼当前访客-访客错误') } else if (state = 0020010){ console.log('外呼当前访客-坐席挂断(未接通)') } else if (state = 003002){ console.log('外呼当前访客-邀请发送成功') } else if (state = 006012){ console.log('外呼当前访客-访客接受视频成功') } else if (state = 005005){ console.log('外呼当前访客-访客挂断') } else if (state = 005006){ console.log('外呼当前访客-坐席挂断(已接通)') } });
client.videoPickUp({ session_id: serviceSessionId, }, function(state, payload){ if (state = 001001){ console.log(‘访客邀请-访客超时未接听') } else if (state = 002011){ console.log('访客邀请-错误') } else if (state = 006013){ console.log('访客邀请-成功') } else if (state = 005007){ console.log('访客邀请-访客挂断(接通后)') } else if (state = 005008){ console.log('访客邀请-坐席挂断(接通后)') } });
client.multipleVideoPickUp(null, function(state, payload){ if (state = 001002){ console.log('坐席邀请-访客超时未接听') } else if (state = 002011){ console.log('坐席邀请-错误') }else if (state = 006014){ console.log('坐席邀请邀请-成功') } else if (state = 005009){ console.log('坐席邀请-访客挂断(接通后)') } else if (state = 005010){ console.log('坐席邀请-坐席挂断(接通后)') } });