摘要:版本发版说明更新时,在这个文档末尾加上版本发版说明废弃中的回调,将其精确通知到对应的回调事件中增加回调事件,涉及到的更改如下,示例代码已添加统一报错的提示格式,从返回的数据的拿错误提示信息错误信息版本发版说明增加是否在屏幕共享的增加
版本-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 - isShareState
2、增加是否在三方视频中的API - isMultipleVideo
发版说明:
1、client.initInnerCallBack 中添加了 visitorStreamOffline 事件,当会议中有成员视频流停止超过3s 则推送此事件
发版说明:
1、增加client.videoPickUp中的visitorDisconnect回调,提示音视频接通后访客端引起的挂断,详见示例代码
2、增加client.multipleVideoPickUp中的kefuCloseVideoSuccess回调,提示音视频接通后坐席或访客端挂断导致的会议结束(非被邀请的三方坐席)
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
版本-v190307发版说明: 1、整合brower端和app端sdk,采用状态机管理应用工作状态, 2、修改部分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调用修改
1、相关api采用统一调用参数格式 2、参数为回调函数, para1: obj, para2: func(state, [payload])videoInviteVisitor 邀请三方访客
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("邀请三方访客-主坐席挂断") } });videoInviteAgent 邀请三方坐席
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)住坐席挂断callbackToVisitor 外呼访客
- 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("外呼访客-坐席挂断(已接通)") } } });videoInviteCurrentVisitor 邀请当前访客音视频
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("外呼当前访客-坐席挂断(已接通)") } });videoPickUp 主坐席接起音视频
session_id 必填 会话id
success 音视频接起会议创建成功的回调
visitorDisconnect 音视频接通后访客端引起的挂断
timeoutDisconnect 超时未接的回调
error 音视频接起失败的回调
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("访客邀请-坐席挂断(接通后)") } });multipleVideoPickUp ==被邀请==的三方坐席接起音视频
acceptSuccess 三方坐席接受当前视频成功
exitSuccess 三方坐席离开当前视频成功
error 三方坐席加入音视频出错
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("坐席邀请-坐席挂断(接通后)") } });
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/102482.html
摘要:采访了腾讯云音视频业务终端研发团队负责人常青,针对小程序音视频能力技术升级场景支持政策审核以及未来演进趋势进行了详细的探讨。 LiveVideoStack采访了腾讯云音视频业务终端研发团队负责人常青,针对小程序音视频能力技术升级、场景支持、政策审核以及未来演进趋势进行了详细的探讨。 文 / 常青策划 / LiveVideoStack LiveVideoStack:常青你好,能否向Liv...
摘要:今天的话题分四部分,第一个是小程序音视频能拿来做什么,第二部分是将其内部是怎么做到的第三就是讲腾讯视频云的音视频技术的一些技术细节第四个是介绍一下微信上做音视频的应用的一些审核问题以及应对方案。 本文由云+社区发表 作者:常青 腾讯视频云是做什么的?腾讯视频云既不做数据库,也不做存储,也不做网络,我们只做音视频服务,也就是直播、点播、视频通话、这类面向B类客户的音视频PAAS业务。 今...
摘要:目前半岛局势紧张,朝鲜已进行了六次核试验,被广泛认为已经拥有了核弹头。另外朝鲜的导弹技术今年以来快速突破,成功试射了射程可覆盖美国本土的洲际弹道导弹。这个版的内容传到互联网上后,迅速刷屏,引起纷纷议论。 SplderApi2 Node-SplderApi2 第二版 基于Node 的网络爬虫 API接口 包括前端开发日报、kugou音乐、前端top框架排行、妹纸福利、搞笑视频、段子笑话、...
摘要:衢州作为全国第一批雪亮工程试点城市,提前三年超标完成衢州市县乡村各级机关的雪亮工程的建设。衢州雪亮工程建设以城市大脑的技术能力为基础,打造衢州城市大脑,利用人工智能及大数据技术,增强城市综合服务及治理能力。2017年12月18-19日,2018年雪亮工程重点支持城市(区)项目建设现场培训班和浙江省雪亮工程建设现场会在衢州召开。衢州雪亮工程领导小组向来自数十个地市的专家、领导介绍了工程建设阶段...
阅读 1659·2021-09-28 09:35
阅读 1131·2019-08-30 15:54
阅读 1656·2019-08-30 15:44
阅读 3363·2019-08-30 14:09
阅读 488·2019-08-29 14:05
阅读 2661·2019-08-28 17:53
阅读 1978·2019-08-26 13:41
阅读 1710·2019-08-26 13:26