call.js 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import store from '@/store'
  2. var _phone=null;
  3. var server = 'call.yjf.runtzh.com'; // OPEN的IP地址和端口
  4. function webphoneHandle(type, data, options) {
  5. console.log("sip:"+type, JSON.stringify(data), options);
  6. if(type=="outgoing.connecting"){ //正在尝试呼出
  7. }
  8. else if(type=="outgoing.progress"){ //开始振铃了
  9. }
  10. else if(type=="outgoing.accecpted"){ //被接听
  11. store.dispatch('CallStatus',{
  12. title: "正在通话...",
  13. })
  14. }
  15. else if(type=="outgoing.ended"){ //呼出正常结束
  16. store.dispatch('CallOff')
  17. }else if(type=="outgoing.failed"){ //呼出失败
  18. store.dispatch('CallOff')
  19. }
  20. }
  21. export function callNumber(customerId,contactsId){
  22. const callUser = store.getters && store.getters.callUser
  23. const callRealm = store.getters && store.getters.callRealm
  24. const callHa1 = store.getters && store.getters.callHa1
  25. JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=360;
  26. console.log(callUser)
  27. console.log(callRealm)
  28. console.log(callHa1)
  29. if(_phone==null){
  30. _phone = new WebPhoneSDK({
  31. lib: JsSIP,
  32. debug: true,
  33. debugLib: true,
  34. user: callUser,
  35. ha1: callHa1,
  36. realm: callRealm,
  37. server: server,
  38. audioElement: document.getElementById('remoteAudio'),
  39. httpsConfirmFrame: 'httpsConfirmFrame',
  40. pcConfig:{"iceServers":[{"urls":["stun:211.159.161.254"]}]},
  41. events: {
  42. 'ua.connecting': (type, data) => webphoneHandle(type, data),
  43. 'ua.connected': (type, data) => webphoneHandle(type, data), //WEBPHONE链接OK
  44. 'ua.disconnected': (type, data) => webphoneHandle(type, data), //WEBPHONE链接断开
  45. 'reg.registered': (type, data) => webphoneHandle(type, data), //WEBPHONE 分机注册
  46. 'reg.unregistered': (type, data) => webphoneHandle(type, data), //WEBPHONE 分机取消注册
  47. 'reg.failed': (type, data) => webphoneHandle(type, data), //WEBPHONE 注册失败
  48. 'incoming.notify': (type, data, options) => webphoneHandle(type, data, options), //有电话进来了
  49. 'incoming.failed': (type, data, options) => webphoneHandle(type, data, options),//WEBPHONE 有电话进来,然后处理失败了(如,我们拒绝了,或者客户侧直接挂断了)
  50. 'incoming.ended': (type, options) => webphoneHandle(type, options),// WEBPHONE 有电话进来了,呼叫正常结束了
  51. 'incoming.accecpted': (type, options) => webphoneHandle(type, options),//有电话进来了,呼叫接听了额
  52. 'outgoing.connecting': (type, options) => webphoneHandle(type, options),//WEBPHONE正在尝试呼出
  53. 'outgoing.progress': (type, options) => webphoneHandle(type, options),//WEBPHONE开始振铃了
  54. 'outgoing.failed': (type, data, options) => webphoneHandle(type, data, options),//WEBPHONE呼出失败了,如被叫拒绝了,线路异常呼出失败了
  55. 'outgoing.ended': (type, options) => webphoneHandle(type, options), //呼出正常结束
  56. 'outgoing.accecpted': (type, data, options) => webphoneHandle(type, data, options), //呼出被叫接听
  57. 'call.hold': (type, data) => webphoneHandle(type, data), //呼叫保持
  58. 'call.unhold': (type, data) => webphoneHandle(type, data), //呼叫解除保持
  59. }
  60. })
  61. _phone.start({});
  62. }
  63. var data={customerId:customerId,contactsId:contactsId};
  64. this.callMobile(data).then(response => {
  65. if(response.code==200){
  66. _phone.call(response.mobile,{userdata:response.logs.sessionId});
  67. this.$store.dispatch('Call', {
  68. mobile: response.displayMobile,
  69. sessionId: response.logs.sessionId
  70. })
  71. }
  72. else{
  73. that.$notify.error({
  74. title: response.msg,
  75. showClose: false
  76. });
  77. }
  78. });
  79. }
  80. export function callOff(){
  81. if(_phone!=null){
  82. _phone.reject();
  83. }
  84. }