安然音视频api

版本-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

版本-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

版本-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://segmentfault.com/a/1190000018421447
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞