ue-softphone-sdk 2.2.2 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ue-softphone-sdk.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +10 -2
package/dist/ue-softphone-sdk.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"socket.io-client";import{UeWebrtc as n}from"ue-webrtc";import{Base64 as s}from"js-base64";import o from"js-md5";import{JSEncrypt as t}from"jsencrypt";var i=function(){return i=Object.assign||function(e){for(var n,s=1,o=arguments.length;s<o;s++)for(var t in n=arguments[s])Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},i.apply(this,arguments)};function c(e,n,s,o){return new(s||(s=Promise))((function(t,i){function c(e){try{r(o.next(e))}catch(e){i(e)}}function a(e){try{r(o.throw(e))}catch(e){i(e)}}function r(e){var n;e.done?t(e.value):(n=e.value,n instanceof s?n:new s((function(e){e(n)}))).then(c,a)}r((o=o.apply(e,n||[])).next())}))}function a(e,n){var s,o,t,i,c={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(r){return function(a){if(s)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(c=0)),c;)try{if(s=1,o&&(t=2&a[0]?o.return:a[0]?o.throw||((t=o.return)&&t.call(o),0):o.next)&&!(t=t.call(o,a[1])).done)return t;switch(o=0,t&&(a=[2&a[0],t.value]),a[0]){case 0:case 1:t=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,o=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!(t=c.trys,(t=t.length>0&&t[t.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!t||a[1]>t[0]&&a[1]<t[3])){c.label=a[1];break}if(6===a[0]&&c.label<t[1]){c.label=t[1],t=a;break}if(t&&c.label<t[2]){c.label=t[2],c.ops.push(a);break}t[2]&&c.ops.pop(),c.trys.pop();continue}a=n.call(e,c)}catch(e){a=[6,e],o=0}finally{s=t=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,r])}}}"function"==typeof SuppressedError&&SuppressedError;var r={notOpenAudioMsg:"麦克风没有开启",notOpenAudioCode:403,notOpenAudioMsgEn:"Permission dismissed"},l={forbiddenAudioMsg:"请先检查您的麦克风是否开启",forbiddenAudioCode:0,forbiddenAudioMsgEn:"Permission denied"},u=function(){function e(e){var n=this;void 0===e&&(e={}),this.getWebrtcInfo=function(e,n){u.request(e+"/call/api/sip/webrtc/config/query",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(e){e.success&&e.data?(u.agentextras=e.data,u.initWebrtcEvent(e.data)):n.error(i({},e))},error:function(e){n.error({error:e})}})},this.initAttachEvent=function(e,s,o,t){n.attachEventCallbacks&&u.request(e+"/platform/action/refreshWsToken",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(e){if(e&&e.data){var i="";o.forEach((function(e){"KF"===e.id&&(i=e.url)})),n.attachEventCallbacks.serve=i,n.attachEventCallbacks.SocketOptions={query:{accountId:t.accountId,agentNumber:t.agentNumber,agentId:t._id,token:e.data.wsToken,wsExtra:JSON.stringify({loginType:s,channelType:"SDK",ability:["call"]}),timestamp:e.data.timestamp,clientType:1},reconnectionDelay:3e3,"force new connection":!0,transports:["websocket"],timeout:5e3},u.createEventHandle(n.attachEventCallbacks)}},error:function(e){o.error({error:e})}})},this.openMediaAudio=function(e,n){var s=navigator,o=s.mediaDevices,t=s.getUserMedia,i=s.webkitGetUserMedia,c=s.mozGetUserMedia,a=s.msGetUserMedia,u=(t||i||c||a).bind(navigator);return o?navigator.mediaDevices.getUserMedia({audio:!0}).catch((function(s){var o=s.message.includes("denied");return n?(o&&alert(l.forbiddenAudioMsg),e&&!o&&alert(e),o?l:r):o?l:r})):new Promise((function(s,o){u?u({audio:!0},(function(e){s(!0)}),(function(s){n&&e&&alert(e),o(r)})):o(r)}))},this.listenCallEvent=function(e){n.attachEventCallbacks=e},this._callApi=function(){var e,s,o=n;return{callout:function(n){return c(this,void 0,void 0,(function(){var t,c,r,l,f,d;return a(this,(function(a){switch(a.label){case 0:if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null===u.loginToken||void 0===u.loginToken)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null===u.agentInfo||void 0===u.agentInfo)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null===n.customerNumber||void 0===n.customerNumber)return n.fail({success:!1,message:"Parameter customerNumber is required!"}),[2];if(t=u.initOptions.server||u.callApiUrl,c={customerNumber:n.customerNumber,agentNumber:u.agentInfo.agentNumber,accountId:u.agentInfo.accountId,agentId:u.agentInfo._id,loginType:n.loginType||u.agentInfo.loginType||u.initOptions.loginType},n.agentTimeout&&(c.agentTimeout=n.agentTimeout),n.customerTimeout&&(c.customerTimeout=n.customerTimeout),n.agentDisNumber&&(c.agentDisNumber=n.agentDisNumber),n.customerDisNumber&&(c.customerDisNumber=n.customerDisNumber),n.extras&&(c.extras=n.extras),r=u.initOptions,l=!0,"WEBRTC"!==r.loginType)return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,o.openMediaAudio("请打开麦克风权限!",l)];case 2:return f=a.sent()||{},[3,4];case 3:return d=a.sent(),console.log(d),[3,4];case 4:return u.request(t+"/call/api/call/call/out",{verb:"POST",body:c,loginToken:u.loginToken,sessionId:u.agentInfo._id,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success(i({success:!0,message:"callout success"},f)):n.fail(i({success:!1,message:e.message,code:e.code},f))}}),[2]}}))}))},hangup:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/hangup",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"hangup success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},holdOrUnHold:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl,t={type:n.type};u.request(o+"/call/api/call/hold",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"holdOrUnHold success"}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},muteOrUnMute:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl,t={type:n.type,direction:n.direction||"all"};u.request(o+"/call/api/call/mute",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"muteOrUnMute success"}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},transfer:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type)if(null!==n.number&&void 0!==n.number){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/transfer",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"transfer success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"Parameter mode is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},consult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.mode&&void 0!==n.mode)if(null!==n.number&&void 0!==n.number)if(null!==n.agentNumber&&void 0!==n.agentNumber){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"consult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter agentNumber is required!"});else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"Parameter mode is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},cancelconsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/cancel",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"cancelconsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},endConsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/stop",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"endConsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},callbackConsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/resume",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"resumeConsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},consultTransfer:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/transfer",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"consultTransfer success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},threeWayCall:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/threeway",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"threeWayCall success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},evaluate:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/evaluate",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"evaluate success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},meeting:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.number&&void 0!==n.number){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/meeting",{verb:"POST",body:{meetingType:"phone",number:n.number},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"meeting success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})}}},this._agentApi=function(){var e=n;return{switchLoginType:function(n){return c(this,void 0,void 0,(function(){var s,o,t,r,l,f,d=this;return a(this,(function(g){switch(g.label){case 0:if(s=null,n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null===n.loginType||void 0===n.loginType)return n.fail({success:!1,message:"Parameter loginType is required!"}),[2];if(null===u.agentInfo||void 0===u.agentInfo)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null!==n.loginNumber&&void 0!==n.loginNumber&&(s=n.loginNumber),"PSTN"===n.loginType&&!(s=s||u.agentInfo.mobile))return alert("请给座席绑定手机号,或者传入号码参数!"),n.fail({success:!1,message:"Please bind your mobile number"}),[2];if("SIP"===n.loginType&&(s=s||u.agentInfo.sipNumber),"WEBRTC"===n.loginType&&(s=u.agentInfo.webrtcSipNumber),o=u.initOptions.server||u.callApiUrl,t={loginType:n.loginType,loginNumber:s},u.initOptions,l=!0,"WEBRTC"!==n.loginType)return[3,4];g.label=1;case 1:return g.trys.push([1,3,,4]),[4,e.openMediaAudio("请打开麦克风权限!",l)];case 2:return r=g.sent()||{},[3,4];case 3:return f=g.sent(),console.log(f),[3,4];case 4:return u.request(o+"/call/api/agent/v1/login-type/change",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(s){return c(d,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return s.success?(n.success(i({success:!0,message:"updateLoginType success"},r)),u.agentInfo.loginType=n.loginType,"WEBRTC"!==n.loginType?[3,1]:(e._webPhoneApi().connect(),[3,4])):[3,5];case 1:return"PSTN"!==n.loginType?[3,3]:[4,u.request(o+"/platform/action/updateCallConfig",{verb:"POST",body:{agentCallConfig:{},mobile:n.loginNumber},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId})];case 2:return t.sent(),e._webPhoneApi().disconnect(),[3,4];case 3:e._webPhoneApi().disconnect(),t.label=4;case 4:return[3,6];case 5:n.fail(i({success:!1,message:s.message,code:s.code},r)),t.label=6;case 6:return[2]}}))}))}}),[2]}}))}))},findPhoneBarList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/phone/bar/all",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){if(n.success){var s=[];n.data.forEach((function(e){var n={name:e.name,number:e.number};s.push(n)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},switchPhoneBar:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==e.stateNumber&&void 0!==e.stateNumber)if(null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl,s={stateNumber:e.stateNumber,accountId:u.agentInfo.accountId,agentNumber:u.agentInfo.agentNumber};u.request(n+"/call/api/agent/status/switch",{verb:"POST",body:s,loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(n){n.success?e.success({success:!0}):e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"});else e.fail({success:!1,message:"Parameter stateNumber is required!"})},logout:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){null!==e.toAnswerOffline&&void 0!==e.toAnswerOffline||(e.toAnswerOffline="1");var n=u.initOptions.server||u.callApiUrl,s={toAnswerOffline:e.toAnswerOffline};u.request(n+"/call/api/sdk/agent/logout",{verb:"POST",body:s,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){n.success?e&&(u.Socketinstance.disconnect(),"WEBRTC"===u.agentInfo.loginType&&u.webPhone.disconnect(),e.success({success:!0})):e&&e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},findIdleAgentsForQueue:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/queue/acountFreeAgent/find",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){n.success?e&&e.success({success:!0,dataList:n.data||[]}):e&&e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},getAvailableSipNumberList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/sip/avaliable/query",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(n){if(n.success&&n.data){var s=[];n.data.forEach((function(e){var n={number:e.id,numberName:e.number};s.push(n)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})}}},this._webPhoneApi=function(){return{accept:function(){u.webPhone.accept()},connect:function(){u.webPhone&&this.isConnected()||u.initWebrtcEvent(u.agentextras)},disconnect:function(){u.webPhone&&this.isConnected()&&u.webPhone.disconnect()},isConnected:function(){return u.webPhone.isConnected()},sendDTMF:function(e){u.webPhone.sendDTMF(e)}}},e.error="function"==typeof e.error?e.error:u.noop,e.success="function"==typeof e.success?e.success:u.noop,null!==e.agentNumber&&void 0!==e.agentNumber?(null!==e.loginType&&void 0!==e.loginType||(e.loginType="PSTN"),this.init(e)):e.error({message:"Invalid agentNumber"})}var u;return e.noop=function(){},e.prototype.init=function(e){if(void 0===e&&(e={}),u.trace=u.noop,u.debug=u.noop,u.log=u.noop,u.warn=u.noop,u.error=u.noop,!0===e.debug||"all"===e.debug)u.trace=console.trace.bind(console),u.debug=console.debug.bind(console),u.log=console.log.bind(console),u.warn=console.warn.bind(console),u.error=console.error.bind(console);else if(Array.isArray(e.debug))for(var n in e.debug){var s=e.debug[n];switch(s){case"trace":u.trace=console.trace.bind(console);break;case"debug":u.debug=console.debug.bind(console);break;case"log":u.log=console.log.bind(console);break;case"warn":u.warn=console.warn.bind(console);break;case"error":u.error=console.error.bind(console);break;default:console.error("Unknown debugging option '"+s+"' (supported: 'trace', 'debug', 'log', warn', 'error')")}}u.log("Initializing library");var o=u.useDefaultDependencies({WebSocket:f});u.newWebSocket=o.newWebSocket,u.request=o.request,this.login(e)},e.prototype.login=function(e){return c(this,void 0,void 0,(function(){var n,c,r,l,f,d,g,p=this;return a(this,(function(a){switch(a.label){case 0:if(n=e.server||u.callApiUrl,c=e.agentNumber+"@"+e.accountId,r=e.loginType,l={loginName:c,loginType:r,loginChannel:"SDK",password:""},f=!0,"WEBRTC"!==r)return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.openMediaAudio("请打开麦克风权限!",f)];case 2:return d=a.sent()||{},[3,4];case 3:return g=a.sent(),console.log(g),[3,4];case 4:return e.password&&(l.password=e.password),u.request(n+"/platform/public/loginPre",{verb:"GET",success:function(c){if(c&&c.success&&c.data){var a=decodeURIComponent(s.decode(c.data.pk)),f=new t;f.setPublicKey(a);var g=o(l.password),m=f.encrypt(g);l.password=m,u.request(n+"/platform/public/login",{verb:"POST",body:l,success:function(s){s.success?u.request(n+"/platform/action/loginInfo",{verb:"GET",loginToken:s.data.loginToken,sessionId:s.data.sessionId,success:function(s){s.success?(s.data.agent&&(u.agentInfo=s.data.agent,u.loginToken=s.data.loginToken,u.initOptions=i(i({},e),{audioInfo:d})),p.initAttachEvent(n,r,s.data.pushServer,s.data.agent),"WEBRTC"===r&&p.getWebrtcInfo(n,e)):e.error(i(i({},s),d))},error:function(n){e.error(i({error:n},d))}}):e.error(i(i({},s),d))},error:function(n){e.error(i({error:n},d))}})}else e.error(i(i({},c),d))},error:function(n){e.error(i({error:n},d))}}),[2]}}))}))},e.createEventHandle=function(e){var n=this;void 0===e&&(e={}),e.success="function"==typeof e.success?e.success:u.noop,e.error="function"==typeof e.error?e.error:u.noop,e.message="function"==typeof e.message?e.message:u.noop,e.event="function"==typeof e.event?e.event:u.noop,e.server=null===e.serve||void 0===e.serve?"ws://152.136.72.209:3201/phoneBarGateway":e.serve,null!==e.SocketOptions&&void 0!==e.SocketOptions||(e.SocketOptions={},u.error({message:"login response error!"})),this.Socketinstance=u.newWebSocket(e.server,e.SocketOptions),this.Socketinstance.on("connect",(function(){e.success("connect event serve success!")})),this.Socketinstance.on("error",(function(n,s){e.error({type:"socketError",error:n}),s&&"function"==typeof s&&s("error")})),this.Socketinstance.on("message",(function(n,s){e.message({subtype:n.subType,data:n.data}),s&&"function"==typeof s&&s("success")})),this.Socketinstance.on("event",(function(s){if("KICK_OFF"===s.subType){n.Socketinstance.disconnect();try{u.webPhone.disconnect()}catch(e){}console.error({message:"坐席账户在其他地方登录"}),e.event({message:"坐席账户在其他地方登录"})}}))},e.useDefaultDependencies=function(e){var n=e&&e.fetch||fetch,s=e&&e.Promise||Promise,o=e&&e.WebSocket||WebSocket;return{newWebSocket:function(e,n){return new o(e,n)},request:function(e,o){var t={method:o.verb,cache:"no-cache",headers:{"Content-Type":"application/json",loginToken:o.loginToken||"",sessionId:o.sessionId||"",clienttype:0}};o.encryptionFields&&(t.headers["ue-encryption-algorithm"]=o.encryptionAlgorithm||"aes",t.headers["ue-encryption-fields"]=o.encryptionFields),void 0!==o.withCredentials&&(t.credentials=!0===o.withCredentials?"include":o.withCredentials?o.withCredentials:"omit"),void 0!==o.body&&(t.body=JSON.stringify(o.body));var i=n(e,t).catch((function(e){return s.reject({message:"Probably a network error, is the gateway down?",error:e})}));if(void 0!==o.timeout){var c=new s((function(e,n){var s=window.setTimeout((function(){return clearTimeout(s),o.error({message:"Request timed out",timeout:o.timeout}),n({message:"Request timed out",timeout:o.timeout})}),o.timeout)}));i=s.race([i,c])}return i.then((function(e){return e.ok?typeof o.success==typeof u.noop?e.json().then((function(e){o.success(e)})).catch((function(n){return o.error({message:"Failed to parse response body",error:n,response:e}),s.reject({message:"Failed to parse response body",error:n,response:e})})):void 0:(o.error({message:"API call failed",response:e}),s.reject({message:"API call failed",response:e}))})).catch((function(e){typeof o.error==typeof u.noop&&o.error(e.message||"<< internal error >>",e)})),i}}},Object.defineProperty(e.prototype,"agent",{get:function(){return this._agentApi()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"webrtc",{get:function(){return this._webPhoneApi()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"call",{get:function(){return this._callApi()},enumerable:!1,configurable:!0}),u=e,e.callApiUrl="https://app.useasy.cn/api",e.Socketinstance=null,e.initWebrtcEvent=function(e){return c(void 0,void 0,void 0,(function(){return a(u,(function(s){switch(s.label){case 0:return u.webPhone=new n({server:e.wssUrl,sip:e.sip,secret:e.password}),[4,this.webPhone.connect()];case 1:return s.sent(),this.webPhone.register(),[2]}}))}))},e}(),f=function(){function n(n,s){delete s.path,delete s.hostname,delete s.port,this.ws=e.connect("wss://".concat(n),s)}return n.prototype.on=function(e,n){"connect"===e&&this.ws.on(e,n),"error"===e&&(this.ws.on("connect_error",n),this.ws.on("error",n),this.ws.on("disconnect",n),this.ws.on("reconnect_failed",n)),"message"===e&&this.ws.on("call",n),"event"===e&&this.ws.on("event",n)},n.prototype.emit=function(e,n,s){this.ws.emit(e,n,s)},n.prototype.disconnect=function(){this.ws.disconnect()},n}();export{u as default};
|
|
1
|
+
import e from"socket.io-client";import{UeWebrtc as n}from"ue-webrtc";import{Base64 as s}from"js-base64";import o from"js-md5";import{JSEncrypt as t}from"jsencrypt";var i=function(){return i=Object.assign||function(e){for(var n,s=1,o=arguments.length;s<o;s++)for(var t in n=arguments[s])Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);return e},i.apply(this,arguments)};function c(e,n,s,o){return new(s||(s=Promise))((function(t,i){function c(e){try{r(o.next(e))}catch(e){i(e)}}function a(e){try{r(o.throw(e))}catch(e){i(e)}}function r(e){var n;e.done?t(e.value):(n=e.value,n instanceof s?n:new s((function(e){e(n)}))).then(c,a)}r((o=o.apply(e,n||[])).next())}))}function a(e,n){var s,o,t,i,c={label:0,sent:function(){if(1&t[0])throw t[1];return t[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(r){return function(a){if(s)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(c=0)),c;)try{if(s=1,o&&(t=2&a[0]?o.return:a[0]?o.throw||((t=o.return)&&t.call(o),0):o.next)&&!(t=t.call(o,a[1])).done)return t;switch(o=0,t&&(a=[2&a[0],t.value]),a[0]){case 0:case 1:t=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,o=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!(t=c.trys,(t=t.length>0&&t[t.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!t||a[1]>t[0]&&a[1]<t[3])){c.label=a[1];break}if(6===a[0]&&c.label<t[1]){c.label=t[1],t=a;break}if(t&&c.label<t[2]){c.label=t[2],c.ops.push(a);break}t[2]&&c.ops.pop(),c.trys.pop();continue}a=n.call(e,c)}catch(e){a=[6,e],o=0}finally{s=t=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,r])}}}"function"==typeof SuppressedError&&SuppressedError;var r={notOpenAudioMsg:"麦克风没有开启",notOpenAudioCode:403,notOpenAudioMsgEn:"Permission dismissed"},l={forbiddenAudioMsg:"请先检查您的麦克风是否开启",forbiddenAudioCode:0,forbiddenAudioMsgEn:"Permission denied"},u=function(){function e(e){var n=this;void 0===e&&(e={}),this.getWebrtcInfo=function(e,n){u.request(e+"/call/api/sip/webrtc/config/query",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(e){e.success&&e.data?(u.agentextras=e.data,u.initWebrtcEvent(e.data)):n.error(i({},e))},error:function(e){n.error({error:e})}})},this.initAttachEvent=function(e,s,o,t,i){n.attachEventCallbacks&&u.request(e+"/platform/action/refreshWsToken",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(e){if(e&&e.data){var c="";o.forEach((function(e){"KF"===e.id&&(c=e.url)})),n.attachEventCallbacks.serve=c,n.attachEventCallbacks.SocketOptions={query:{accountId:t.accountId,agentNumber:t.agentNumber,agentId:t._id,token:e.data.wsToken,wsExtra:JSON.stringify({loginType:s,channelType:"SDK",ability:["call"]}),timestamp:e.data.timestamp,clientType:1},reconnectionDelay:3e3,"force new connection":!0,transports:["websocket"],timeout:5e3},n.attachEventCallbacks.success=i,u.createEventHandle(n.attachEventCallbacks)}},error:function(e){o.error({error:e})}})},this.openMediaAudio=function(e,n){var s=navigator,o=s.mediaDevices,t=s.getUserMedia,i=s.webkitGetUserMedia,c=s.mozGetUserMedia,a=s.msGetUserMedia,u=(t||i||c||a).bind(navigator);return o?navigator.mediaDevices.getUserMedia({audio:!0}).catch((function(s){var o=s.message.includes("denied");return n?(o&&alert(l.forbiddenAudioMsg),e&&!o&&alert(e),o?l:r):o?l:r})):new Promise((function(s,o){u?u({audio:!0},(function(e){s(!0)}),(function(s){n&&e&&alert(e),o(r)})):o(r)}))},this.listenCallEvent=function(e){n.attachEventCallbacks=e},this._callApi=function(){var e,s,o=n;return{callout:function(n){return c(this,void 0,void 0,(function(){var t,c,r,l,f,d;return a(this,(function(a){switch(a.label){case 0:if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null===u.loginToken||void 0===u.loginToken)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null===u.agentInfo||void 0===u.agentInfo)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null===n.customerNumber||void 0===n.customerNumber)return n.fail({success:!1,message:"Parameter customerNumber is required!"}),[2];if(t=u.initOptions.server||u.callApiUrl,c={customerNumber:n.customerNumber,agentNumber:u.agentInfo.agentNumber,accountId:u.agentInfo.accountId,agentId:u.agentInfo._id,loginType:n.loginType||u.agentInfo.loginType||u.initOptions.loginType},n.agentTimeout&&(c.agentTimeout=n.agentTimeout),n.customerTimeout&&(c.customerTimeout=n.customerTimeout),n.agentDisNumber&&(c.agentDisNumber=n.agentDisNumber),n.customerDisNumber&&(c.customerDisNumber=n.customerDisNumber),n.extras&&(c.extras=n.extras),r=u.initOptions,l=!0,"WEBRTC"!==r.loginType)return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,o.openMediaAudio("请打开麦克风权限!",l)];case 2:return f=a.sent()||{},[3,4];case 3:return d=a.sent(),console.log(d),[3,4];case 4:return u.request(t+"/call/api/call/call/out",{verb:"POST",body:c,loginToken:u.loginToken,sessionId:u.agentInfo._id,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success(i({success:!0,message:"callout success"},f)):n.fail(i({success:!1,message:e.message,code:e.code},f))}}),[2]}}))}))},hangup:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/hangup",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"hangup success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},holdOrUnHold:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl,t={type:n.type};u.request(o+"/call/api/call/hold",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"holdOrUnHold success"}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},muteOrUnMute:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl,t={type:n.type,direction:n.direction||"all"};u.request(o+"/call/api/call/mute",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"muteOrUnMute success"}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},transfer:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type)if(null!==n.number&&void 0!==n.number){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/transfer",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"transfer success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"Parameter mode is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},consult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.mode&&void 0!==n.mode)if(null!==n.number&&void 0!==n.number)if(null!==n.agentNumber&&void 0!==n.agentNumber){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"consult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter agentNumber is required!"});else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"Parameter mode is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},cancelconsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/cancel",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"cancelconsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},endConsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/stop",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"endConsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},callbackConsult:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/resume",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"resumeConsult success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},consultTransfer:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/consult/transfer",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"consultTransfer success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},threeWayCall:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/threeway",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"threeWayCall success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},evaluate:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.type&&void 0!==n.type){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/evaluate",{verb:"POST",body:n,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"evaluate success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter type is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})},meeting:function(n){if(n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null!==u.loginToken&&void 0!==u.loginToken)if(null!==u.agentInfo&&void 0!==u.agentInfo)if(null!==n.number&&void 0!==n.number){var o=u.initOptions.server||u.callApiUrl;u.request(o+"/call/api/call/meeting",{verb:"POST",body:{meetingType:"phone",number:n.number},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?n.success({success:!0,message:"meeting success",data:e.data.response.data}):n.fail({success:!1,message:e.message,code:e.code})}})}else n.fail({success:!1,message:"Parameter number is required!"});else n.fail({success:!1,message:"initialization not complete!"});else n.fail({success:!1,message:"initialization not complete!"})}}},this._agentApi=function(){var e=n;return{switchLoginType:function(n){return c(this,void 0,void 0,(function(){var s,o,t,r,l,f,d=this;return a(this,(function(g){switch(g.label){case 0:if(s=null,n.success=n&&"function"==typeof n.success?n.success:u.noop,n.fail=n&&"function"==typeof n.fail?n.fail:u.noop,null===n.loginType||void 0===n.loginType)return n.fail({success:!1,message:"Parameter loginType is required!"}),[2];if(null===u.agentInfo||void 0===u.agentInfo)return n.fail({success:!1,message:"initialization not complete!"}),[2];if(null!==n.loginNumber&&void 0!==n.loginNumber&&(s=n.loginNumber),"PSTN"===n.loginType&&!(s=s||u.agentInfo.mobile))return alert("请给座席绑定手机号,或者传入号码参数!"),n.fail({success:!1,message:"Please bind your mobile number"}),[2];if("SIP"===n.loginType&&(s=s||u.agentInfo.sipNumber),"WEBRTC"===n.loginType&&(s=u.agentInfo.webrtcSipNumber),o=u.initOptions.server||u.callApiUrl,t={loginType:n.loginType,loginNumber:s},u.initOptions,l=!0,"WEBRTC"!==n.loginType)return[3,4];g.label=1;case 1:return g.trys.push([1,3,,4]),[4,e.openMediaAudio("请打开麦克风权限!",l)];case 2:return r=g.sent()||{},[3,4];case 3:return f=g.sent(),console.log(f),[3,4];case 4:return u.request(o+"/call/api/agent/v1/login-type/change",{verb:"POST",body:t,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(s){return c(d,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return s.success?(n.success(i({success:!0,message:"updateLoginType success"},r)),u.agentInfo.loginType=n.loginType,"WEBRTC"!==n.loginType?[3,1]:(e._webPhoneApi().connect(),[3,4])):[3,5];case 1:return"PSTN"!==n.loginType?[3,3]:[4,u.request(o+"/platform/action/updateCallConfig",{verb:"POST",body:{agentCallConfig:{},mobile:n.loginNumber},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId})];case 2:return t.sent(),e._webPhoneApi().disconnect(),[3,4];case 3:e._webPhoneApi().disconnect(),t.label=4;case 4:return[3,6];case 5:n.fail(i({success:!1,message:s.message,code:s.code},r)),t.label=6;case 6:return[2]}}))}))}}),[2]}}))}))},findPhoneBarList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/phone/bar/all",{verb:"GET",loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){if(n.success){var s=[];n.data.forEach((function(e){var n={name:e.name,number:e.number};s.push(n)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},switchPhoneBar:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==e.stateNumber&&void 0!==e.stateNumber)if(null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl,s={stateNumber:e.stateNumber,accountId:u.agentInfo.accountId,agentNumber:u.agentInfo.agentNumber};u.request(n+"/call/api/agent/status/switch",{verb:"POST",body:s,loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(n){n.success?e.success({success:!0}):e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"});else e.fail({success:!1,message:"Parameter stateNumber is required!"})},logout:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){null!==e.toAnswerOffline&&void 0!==e.toAnswerOffline||(e.toAnswerOffline="1");var n=u.initOptions.server||u.callApiUrl,s={toAnswerOffline:e.toAnswerOffline};u.request(n+"/call/api/sdk/agent/logout",{verb:"POST",body:s,loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){n.success?e&&(u.Socketinstance.disconnect(),"WEBRTC"===u.agentInfo.loginType&&u.webPhone.disconnect(),e.success({success:!0})):e&&e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},findIdleAgentsForQueue:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/queue/acountFreeAgent/find",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,accountId:u.agentInfo.accountId,success:function(n){n.success?e&&e.success({success:!0,dataList:n.data||[]}):e&&e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},getAvailableSipNumberList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:u.noop,e.fail=e&&"function"==typeof e.fail?e.fail:u.noop,null!==u.agentInfo&&void 0!==u.agentInfo){var n=u.initOptions.server||u.callApiUrl;u.request(n+"/call/api/sip/avaliable/query",{verb:"POST",body:{},loginToken:u.loginToken,sessionId:u.agentInfo._id,success:function(n){if(n.success&&n.data){var s=[];n.data.forEach((function(e){var n={number:e.id,numberName:e.number};s.push(n)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:n.message,code:n.code})}})}else e.fail({success:!1,message:"initialization not complete!"})}}},this._webPhoneApi=function(){return{accept:function(){u.webPhone.accept()},connect:function(){u.webPhone&&this.isConnected()||u.initWebrtcEvent(u.agentextras)},disconnect:function(){u.webPhone&&this.isConnected()&&u.webPhone.disconnect()},isConnected:function(){return u.webPhone.isConnected()},sendDTMF:function(e){u.webPhone.sendDTMF(e)}}},e.error="function"==typeof e.error?e.error:u.noop,e.success="function"==typeof e.success?e.success:u.noop,null!==e.agentNumber&&void 0!==e.agentNumber?(null!==e.loginType&&void 0!==e.loginType||(e.loginType="PSTN"),this.init(e)):e.error({message:"Invalid agentNumber"})}var u;return e.noop=function(){},e.prototype.init=function(e){if(void 0===e&&(e={}),u.trace=u.noop,u.debug=u.noop,u.log=u.noop,u.warn=u.noop,u.error=u.noop,!0===e.debug||"all"===e.debug)u.trace=console.trace.bind(console),u.debug=console.debug.bind(console),u.log=console.log.bind(console),u.warn=console.warn.bind(console),u.error=console.error.bind(console);else if(Array.isArray(e.debug))for(var n in e.debug){var s=e.debug[n];switch(s){case"trace":u.trace=console.trace.bind(console);break;case"debug":u.debug=console.debug.bind(console);break;case"log":u.log=console.log.bind(console);break;case"warn":u.warn=console.warn.bind(console);break;case"error":u.error=console.error.bind(console);break;default:console.error("Unknown debugging option '"+s+"' (supported: 'trace', 'debug', 'log', warn', 'error')")}}u.log("Initializing library");var o=u.useDefaultDependencies({WebSocket:f});u.newWebSocket=o.newWebSocket,u.request=o.request,this.login(e)},e.prototype.login=function(e){return c(this,void 0,void 0,(function(){var n,c,r,l,f,d,g,p=this;return a(this,(function(a){switch(a.label){case 0:if(n=e.server||u.callApiUrl,c=e.agentNumber+"@"+e.accountId,r=e.loginType,l={loginName:c,loginType:r,loginChannel:"SDK",password:""},f=!0,"WEBRTC"!==r)return[3,4];a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.openMediaAudio("请打开麦克风权限!",f)];case 2:return d=a.sent()||{},[3,4];case 3:return g=a.sent(),console.log(g),[3,4];case 4:return e.password&&(l.password=e.password),u.request(n+"/platform/public/loginPre",{verb:"GET",success:function(c){if(c&&c.success&&c.data){var a=decodeURIComponent(s.decode(c.data.pk)),f=new t;f.setPublicKey(a);var g=o(l.password),m=f.encrypt(g);l.password=m,u.request(n+"/platform/public/login",{verb:"POST",body:l,success:function(s){s.success?u.request(n+"/platform/action/loginInfo",{verb:"GET",loginToken:s.data.loginToken,sessionId:s.data.sessionId,success:function(s){s.success?(s.data.agent&&(u.agentInfo=s.data.agent,u.loginToken=s.data.loginToken,u.initOptions=i(i({},e),{audioInfo:d})),p.initAttachEvent(n,r,s.data.pushServer,s.data.agent,e.success),"WEBRTC"===r&&p.getWebrtcInfo(n,e)):e.error(i(i({},s),d))},error:function(n){e.error(i({error:n},d))}}):e.error(i(i({},s),d))},error:function(n){e.error(i({error:n},d))}})}else e.error(i(i({},c),d))},error:function(n){e.error(i({error:n},d))}}),[2]}}))}))},e.createEventHandle=function(e){var n=this;void 0===e&&(e={}),e.success="function"==typeof e.success?e.success:u.noop,e.error="function"==typeof e.error?e.error:u.noop,e.message="function"==typeof e.message?e.message:u.noop,e.event="function"==typeof e.event?e.event:u.noop,e.server=null===e.serve||void 0===e.serve?"ws://152.136.72.209:3201/phoneBarGateway":e.serve,null!==e.SocketOptions&&void 0!==e.SocketOptions||(e.SocketOptions={},u.error({message:"login response error!"})),this.Socketinstance=u.newWebSocket(e.server,e.SocketOptions),this.Socketinstance.on("connect",(function(){e.success("connect event serve success!")})),this.Socketinstance.on("error",(function(n,s){e.error({type:"socketError",error:n}),s&&"function"==typeof s&&s("error")})),this.Socketinstance.on("message",(function(n,s){e.message({subtype:n.subType,data:n.data}),s&&"function"==typeof s&&s("success")})),this.Socketinstance.on("event",(function(s){if("KICK_OFF"===s.subType){n.Socketinstance.disconnect();try{u.webPhone.disconnect()}catch(e){}console.error({message:"坐席账户在其他地方登录"}),e.event({message:"坐席账户在其他地方登录"})}}))},e.useDefaultDependencies=function(e){var n=e&&e.fetch||fetch,s=e&&e.Promise||Promise,o=e&&e.WebSocket||WebSocket;return{newWebSocket:function(e,n){return new o(e,n)},request:function(e,o){var t={method:o.verb,cache:"no-cache",headers:{"Content-Type":"application/json",loginToken:o.loginToken||"",sessionId:o.sessionId||"",clienttype:0}};o.encryptionFields&&(t.headers["ue-encryption-algorithm"]=o.encryptionAlgorithm||"aes",t.headers["ue-encryption-fields"]=o.encryptionFields),void 0!==o.withCredentials&&(t.credentials=!0===o.withCredentials?"include":o.withCredentials?o.withCredentials:"omit"),void 0!==o.body&&(t.body=JSON.stringify(o.body));var i=n(e,t).catch((function(e){return s.reject({message:"Probably a network error, is the gateway down?",error:e})}));if(void 0!==o.timeout){var c=new s((function(e,n){var s=window.setTimeout((function(){return clearTimeout(s),o.error({message:"Request timed out",timeout:o.timeout}),n({message:"Request timed out",timeout:o.timeout})}),o.timeout)}));i=s.race([i,c])}return i.then((function(e){return e.ok?typeof o.success==typeof u.noop?e.json().then((function(e){o.success(e)})).catch((function(n){return o.error({message:"Failed to parse response body",error:n,response:e}),s.reject({message:"Failed to parse response body",error:n,response:e})})):void 0:(o.error({message:"API call failed",response:e}),s.reject({message:"API call failed",response:e}))})).catch((function(e){typeof o.error==typeof u.noop&&o.error(e.message||"<< internal error >>",e)})),i}}},Object.defineProperty(e.prototype,"agent",{get:function(){return this._agentApi()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"webrtc",{get:function(){return this._webPhoneApi()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"call",{get:function(){return this._callApi()},enumerable:!1,configurable:!0}),u=e,e.callApiUrl="https://app.useasy.cn/api",e.Socketinstance=null,e.initWebrtcEvent=function(e){return c(void 0,void 0,void 0,(function(){return a(u,(function(s){switch(s.label){case 0:return u.webPhone=new n({server:e.wssUrl,sip:e.sip,secret:e.password}),[4,this.webPhone.connect()];case 1:return s.sent(),this.webPhone.register(),[2]}}))}))},e}(),f=function(){function n(n,s){delete s.path,delete s.hostname,delete s.port,this.ws=e.connect("wss://".concat(n),s)}return n.prototype.on=function(e,n){"connect"===e&&this.ws.on(e,n),"error"===e&&(this.ws.on("connect_error",n),this.ws.on("error",n),this.ws.on("disconnect",n),this.ws.on("reconnect_failed",n)),"message"===e&&this.ws.on("call",n),"event"===e&&this.ws.on("event",n)},n.prototype.emit=function(e,n,s){this.ws.emit(e,n,s)},n.prototype.disconnect=function(){this.ws.disconnect()},n}();export{u as default};
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -389,7 +389,8 @@ export default class ueSoftphone {
|
|
|
389
389
|
server,
|
|
390
390
|
loginType,
|
|
391
391
|
loginInfo.data.pushServer,
|
|
392
|
-
loginInfo.data.agent
|
|
392
|
+
loginInfo.data.agent,
|
|
393
|
+
options.success
|
|
393
394
|
);
|
|
394
395
|
if (loginType === "WEBRTC") {
|
|
395
396
|
this.getWebrtcInfo(server, options);
|
|
@@ -598,7 +599,13 @@ export default class ueSoftphone {
|
|
|
598
599
|
// }
|
|
599
600
|
// };
|
|
600
601
|
// 电话条事件回调
|
|
601
|
-
private initAttachEvent = (
|
|
602
|
+
private initAttachEvent = (
|
|
603
|
+
server: any,
|
|
604
|
+
loginType: string,
|
|
605
|
+
options: any,
|
|
606
|
+
userOptions: any,
|
|
607
|
+
success
|
|
608
|
+
) => {
|
|
602
609
|
if (this.attachEventCallbacks) {
|
|
603
610
|
// 每次创建链接的时候,要获取最新的ws token
|
|
604
611
|
ueSoftphone.request(server + "/platform/action/refreshWsToken", {
|
|
@@ -633,6 +640,7 @@ export default class ueSoftphone {
|
|
|
633
640
|
transports: ["websocket"],
|
|
634
641
|
timeout: 5000
|
|
635
642
|
};
|
|
643
|
+
this.attachEventCallbacks.success = success;
|
|
636
644
|
ueSoftphone.createEventHandle(this.attachEventCallbacks);
|
|
637
645
|
}
|
|
638
646
|
},
|