diff --git a/CODEOWNERS b/CODEOWNERS index 5d50d79..922e1bd 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ -* @dlouvton -#ECCN:Open Source \ No newline at end of file +#GUSINFO:Voice Ecosystem,BYOT Partner Developer Experience +* \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..dd44c5f --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2021, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +@Library('sfci-pipeline-sharedlib@master') + +import net.sfdc.dci.BuildUtils +import net.sfdc.dci.CodeCoverageUtils + +env.RELEASE_BRANCHES = ['master'] + +def complianceFlags = [ + enable: true,//For ensuring PR has WI mentiooned + validateCommitsInPR: true // For ensuring all commits have WI mentioned + ] + +def envDef = [ compliance: complianceFlags, buildImage: "331455399823.dkr.ecr.us-east-2.amazonaws.com/sfci/sfci/centos-sfci-nodejs:5f48ebb", maxDaysToKeepBuild: 10 , maxNumToKeepBuild: 100] + +def coverage_config = [ + tool_name : 'clover', + gus_team_name : 'Voice Ecosystem', + test_suite : 'aggregate', + language_type : 'javascript', + aggregate_team_coverage: true, + dev_gus_upload : false, + gus_record_active : true, + report_location : 'coverage/clover.xml' +] + +executePipeline(envDef) { + stage('Init') { + checkout scm + npmInit() + sh 'npm install' + } + stage('NPM Test and Build'){ + sh 'npm run test' + } + + stage('Coverage Report') { + publishHTML([ + allowMissing: false, + alwaysLinkToLastBuild: false, + keepAll: false, + reportDir: 'jest-report', + reportFiles: 'index.html', + reportName: 'JEST Results', + reportTitles: '' + ]) + publishHTML([ + allowMissing: false, + alwaysLinkToLastBuild: false, + keepAll: false, + reportDir: 'coverage/lcov-report', + reportFiles: 'index.html', + reportName: 'JEST Coverage', + reportTitles: '' + ]) + CodeCoverageUtils.uploadReportForGusDashboard(this, coverage_config) + } + + // More information: https://salesforce.quip.com/A7RBA2kk3b74 + stage('GUS Compliance'){ + git2gus() + } + stage('Complete'){ + currentBuild.result = 'SUCCESS' + } +} \ No newline at end of file diff --git a/dist/scv-connector-base.js b/dist/scv-connector-base.js index 1cfbf2f..748449d 100644 --- a/dist/scv-connector-base.js +++ b/dist/scv-connector-base.js @@ -1,3 +1,2 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SCVConnectorBase",[],e):"object"==typeof exports?exports.SCVConnectorBase=e():t.SCVConnectorBase=e()}(this,(function(){return function(t){var e={};function E(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,E),r.l=!0,r.exports}return E.m=t,E.c=e,E.d=function(t,e,n){E.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},E.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},E.t=function(t,e){if(1&e&&(t=E(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(E.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)E.d(n,r,function(e){return t[e]}.bind(null,r));return n},E.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return E.d(e,"a",e),e},E.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},E.p="",E(E.s=12)}([function(t,e){function E(t,e){for(var E=0;E=0;--n){var r=this.tryEntries[n],T=r.completion;if("root"===r.tryLoc)return E("end");if(r.tryLoc<=this.prev){var _=a.call(r,"catchLoc"),o=a.call(r,"finallyLoc");if(_&&o){if(this.prev=0;--E){var n=this.tryEntries[E];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev=0;--e){var E=this.tryEntries[e];if(E.finallyLoc===t)return this.complete(E.completion,E.afterLoc),f(E),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var E=this.tryEntries[e];if(E.tryLoc===t){var n=E.completion;if("throw"===n.type){var r=n.arg;f(E)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,E){return this.delegate={iterator:G(t),resultName:e,nextLoc:E},"next"===this.method&&(this.arg=void 0),l}},e}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){function E(e,n){return t.exports=E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,E(e,n)}t.exports=E,t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.__esModule=!0,t.exports.default=t.exports},function(t,e,E){"use strict";E.r(e),E.d(e,"initializeConnector",(function(){return yt})),E.d(e,"publishEvent",(function(){return kt})),E.d(e,"publishError",(function(){return Mt})),E.d(e,"publishLog",(function(){return mt})),E.d(e,"log",(function(){return G})),E.d(e,"Constants",(function(){return M})),E.d(e,"ActiveCallsResult",(function(){return x})),E.d(e,"AgentConfigResult",(function(){return B})),E.d(e,"AgentConfig",(function(){return j})),E.d(e,"CapabilitiesResult",(function(){return w})),E.d(e,"RecordingToggleResult",(function(){return F})),E.d(e,"ParticipantResult",(function(){return W})),E.d(e,"SignedRecordingUrlResult",(function(){return X})),E.d(e,"PhoneContactsResult",(function(){return Q})),E.d(e,"CallResult",(function(){return K})),E.d(e,"HangupResult",(function(){return q})),E.d(e,"HoldToggleResult",(function(){return J})),E.d(e,"InitResult",(function(){return z})),E.d(e,"GenericResult",(function(){return $})),E.d(e,"MuteToggleResult",(function(){return H})),E.d(e,"LogoutResult",(function(){return Z})),E.d(e,"CallInfo",(function(){return tt})),E.d(e,"PhoneCall",(function(){return nt})),E.d(e,"PhoneCallAttributes",(function(){return Et})),E.d(e,"Contact",(function(){return et})),E.d(e,"Phone",(function(){return k})),E.d(e,"AgentStatusInfo",(function(){return Tt})),E.d(e,"AudioStatsElement",(function(){return Nt})),E.d(e,"AudioStats",(function(){return st})),E.d(e,"StatsInfo",(function(){return At})),E.d(e,"VendorConnector",(function(){return rt})),E.d(e,"SuperviseCallResult",(function(){return lt})),E.d(e,"SupervisorHangupResult",(function(){return ct})),E.d(e,"SupervisedCallInfo",(function(){return it})),E.d(e,"AgentVendorStatusInfo",(function(){return _t})),E.d(e,"StateChangeResult",(function(){return ot}));var n=E(2),r=E.n(n),a=E(5),T=E.n(a),_=E(3),o=E.n(_),i=E(4),s=E.n(i),N={MESSAGE_TYPE:{SETUP_CONNECTOR:"SETUP_CONNECTOR",CONNECTOR_READY:"CONNECTOR_READY",LOG:"LOG",TELEPHONY_EVENT_DISPATCHED:"TELEPHONY_EVENT_DISPATCHED",ACCEPT_CALL:"ACCEPT_CALL",DECLINE_CALL:"DECLINE_CALL",END_CALL:"END_CALL",MUTE:"MUTE",UNMUTE:"UNMUTE",HOLD:"HOLD",RESUME:"RESUME",SET_AGENT_STATUS:"SET_AGENT_STATUS",GET_AGENT_STATUS:"GET_AGENT_STATUS",DIAL:"DIAL",SEND_DIGITS:"SEND_DIGITS",GET_PHONE_CONTACTS:"GET_PHONE_CONTACTS",SWAP_PARTICIPANTS:"SWAP_PARTICIPANTS",ADD_PARTICIPANT:"ADD_PARTICIPANT",CONFERENCE:"CONFERENCE",PAUSE_RECORDING:"PAUSE_RECORDING",RESUME_RECORDING:"RESUME_RECORDING",LOGOUT:"LOGOUT",MESSAGE:"MESSAGE",WRAP_UP_CALL:"WRAP_UP_CALL",AGENT_AVAILABLE:"AGENT_AVAILABLE",SET_AGENT_CONFIG:"SET_AGENT_CONFIG",GET_SIGNED_RECORDING_URL:"GET_SIGNED_RECORDING_URL",DOWNLOAD_VENDOR_LOGS:"DOWNLOAD_VENDOR_LOGS",SUPERVISE_CALL:"SUPERVISE_CALL",SUPERVISOR_BARGE_IN:"SUPERVISOR_BARGE_IN",SUPERVISOR_DISCONNECT:"SUPERVISOR_DISCONNECT"},EVENT_TYPE:{QUEUED_CALL_STARTED:"QUEUED_CALL_STARTED",CALL_STARTED:"CALL_STARTED",CALL_CONNECTED:"CALL_CONNECTED",CALL_FAILED:"CALL_FAILED",MUTE_TOGGLE:"MUTE_TOGGLE",HOLD_TOGGLE:"HOLD_TOGGLE",HANGUP:"HANGUP",ERROR:"ERROR",WARNING:"WARNING",INFO:"INFO",PHONE_CONTACTS:"PHONE_CONTACTS",PARTICIPANT_ADDED:"PARTICIPANT_ADDED",PARTICIPANT_CONNECTED:"PARTICIPANT_CONNECTED",PARTICIPANT_REMOVED:"PARTICIPANT_REMOVED",LOGIN_STARTED:"LOGIN_STARTED",LOGIN_RESULT:"LOGIN_RESULT",LOGOUT_RESULT:"LOGOUT_RESULT",RECORDING_TOGGLE:"RECORDING_TOGGLE",PARTICIPANTS_SWAPPED:"PARTICIPANTS_SWAPPED",PARTICIPANTS_CONFERENCED:"PARTICIPANTS_CONFERENCED",SHOW_LOGIN:"SHOW_LOGIN",SET_AGENT_STATUS_RESULT:"SET_AGENT_STATUS_RESULT",GET_AGENT_STATUS_RESULT:"GET_AGENT_STATUS_RESULT",WRAP_UP_ENDED:"WRAP_UP_ENDED",MESSAGE:"MESSAGE",AFTER_CALL_WORK_STARTED:"AFTER_CALL_WORK_STARTED",AGENT_CONFIG_UPDATED:"AGENT_CONFIG_UPDATED",AGENT_ERROR:"AGENT_ERROR",SOFTPHONE_ERROR:"SOFTPHONE_ERROR",SIGNED_RECORDING_URL:"SIGNED_RECORDING_URL",UPDATE_AUDIO_STATS:"UPDATE_AUDIO_STATS",UPDATE_AUDIO_STATS_COMPLETED:"UPDATE_AUDIO_STATS_COMPLETED",SUPERVISOR_BARGED_IN:"SUPERVISOR_BARGED_IN",SUPERVISOR_CALL_STARTED:"SUPERVISOR_CALL_STARTED",SUPERVISOR_CALL_CONNECTED:"SUPERVISOR_CALL_CONNECTED",SUPERVISOR_HANGUP:"SUPERVISOR_HANGUP",CALL_BARGED_IN:"CALL_BARGED_IN",SET_AGENT_STATUS:"SET_AGENT_STATUS",GET_AGENT_STATUS:"GET_AGENT_STATUS",STATE_CHANGE:"STATE_CHANGE"},INFO_TYPE:{CAN_NOT_ACCEPT_THE_CALL:"CAN_NOT_ACCEPT_THE_CALL"},ERROR_TYPE:{GENERIC_ERROR:"GENERIC_ERROR",AGENT_ERROR:"AGENT_ERROR",MICROPHONE_NOT_SHARED:"MICROPHONE_NOT_SHARED",UNSUPPORTED_BROWSER:"UNSUPPORTED_BROWSER",AUTHENTICATION_ERROR:"AUTHENTICATION_ERROR",INVALID_AGENT_STATUS:"INVALID_AGENT_STATUS",CAN_NOT_SET_AGENT_STATUS:"CAN_NOT_SET_AGENT_STATUS",LOGIN_REQUIRED:"LOGIN_REQUIRED",CAN_NOT_DECLINE_THE_CALL:"CAN_NOT_DECLINE_THE_CALL",CAN_NOT_END_THE_CALL:"CAN_NOT_END_THE_CALL",CAN_NOT_HOLD_CALL:"CAN_NOT_HOLD_CALL",CAN_NOT_RESUME_CALL:"CAN_NOT_RESUME_CALL",CAN_NOT_MUTE_CALL:"CAN_NOT_MUTE_CALL",CAN_NOT_UNMUTE_CALL:"CAN_NOT_UNMUTE_CALL",CAN_NOT_TOGGLE_MUTE:"CAN_NOT_TOGGLE_MUTE",CAN_NOT_TOGGLE_HOLD:"CAN_NOT_TOGGLE_HOLD",CAN_NOT_TOGGLE_RECORD:"CAN_NOT_TOGGLE_RECORD",INVALID_PARTICIPANT:"INVALID_PARTICIPANT",CAN_NOT_LOG_IN:"CAN_NOT_LOG_IN",CAN_NOT_LOG_OUT:"CAN_NOT_LOG_OUT",INVALID_PARAMS:"INVALID_PARAMS",CAN_NOT_GET_PHONE_CONTACTS:"CAN_NOT_GET_PHONE_CONTACTS",CAN_NOT_SWAP_PARTICIPANTS:"CAN_NOT_SWAP_PARTICIPANTS",CAN_NOT_CONFERENCE:"CAN_NOT_CONFERENCE",INVALID_DESTINATION:"INVALID_DESTINATION",INVALID_PHONE_NUMBER:"INVALID_PHONE_NUMBER",CAN_NOT_HANGUP_PARTICIPANT:"CAN_NOT_HANGUP_PARTICIPANT",CAN_NOT_ADD_PARTICIPANT:"CAN_NOT_ADD_PARTICIPANT",CAN_NOT_CONNECT_PARTICIPANT:"CAN_NOT_CONNECT_PARTICIPANT",CAN_NOT_START_THE_CALL:"CAN_NOT_START_THE_CALL",CAN_NOT_PAUSE_RECORDING:"CAN_NOT_PAUSE_RECORDING",CAN_NOT_RESUME_RECORDING:"CAN_NOT_RESUME_RECORDING",CAN_NOT_SET_AGENT_CONFIG:"CAN_NOT_SET_AGENT_CONFIG",CAN_NOT_SET_CAPABILITIES:"CAN_NOT_SET_CAPABILITIES",CAN_NOT_UPDATE_PHONE_NUMBER:"CAN_NOT_UPDATE_PHONE_NUMBER",CAN_NOT_GET_SIGNED_RECORDING_URL:"CAN_NOT_GET_SIGNED_RECORDING_URL",CAN_NOT_SUPERVISE_CALL:"CAN_NOT_SUPERVISE_CALL",CAN_NOT_DISCONNECT_SUPERVISOR:"CAN_NOT_DISCONNECT_SUPERVISOR",CAN_NOT_BARGE_IN_SUPERVISOR:"CAN_NOT_BARGE_IN_SUPERVISOR",CAN_NOT_BARGE_IN_CALL:"CAN_NOT_BARGE_IN_CALL",CAN_NOT_GET_AGENT_STATUS:"CAN_NOT_GET_AGENT_STATUS",INVALID_STATE_CHANGE_RESULT:"INVALID_STATE_CHANGE_RESULT"},AGENT_STATUS:{ONLINE:"Online",OFFLINE:"Offline",ACW:"AfterCallWork",CALLBACK_MISSED_OR_REJECTED:"CallbackMissedOrRejected"},PARTICIPANT_TYPE:{AGENT:"Agent",INITIAL_CALLER:"Initial_Caller",THIRD_PARTY:"Third_Party",SUPERVISOR:"Supervisor"},CALL_TYPE:{INBOUND:"Inbound",OUTBOUND:"Outbound",CALLBACK:"Callback",ADD_PARTICIPANT:"AddParticipant",TRANSFER:"Transfer"},DIALER_TYPE:{OUTBOUND_PREVIEW:"OutboundPreview",NONE:"None"},CONTACT_TYPE:{PHONEBOOK:"PhoneBook",QUEUE:"Queue",PHONENUMBER:"PhoneNumber",AGENT:"Agent",FLOW:"Flow"},AGENT_CONFIG_TYPE:{SHOW_AGENT_SETTINGS:"SHOW_AGENT_SETTINGS",PHONES:"PHONES",SELECTED_PHONE:"SELECTED_PHONE"},CAPABILITIES_TYPE:{MUTE:"MUTE",RECORD:"RECORD",MERGE:"MERGE",SWAP:"SWAP",SIGNED_RECORDING_URL:"SIGNED_RECORDING_URL",DEBUG_ENABLED:"DEBUG_ENABLED",CONTACT_SEARCH:"CONTACT_SEARCH",VENDOR_PROVIDED_AVAILABILITY:"VENDOR_PROVIDED_AVAILABILITY",SUPERVISOR_LISTEN_IN:"SUPERVISOR_LISTEN_IN",SUPERVISOR_BARGE_IN:"SUPERVISOR_BARGE_IN",MOS:"MOS",BLIND_TRANSFER:"BLIND_TRANSFER",TRANSFER_TO_OMNI_FLOW:"TRANSFER_TO_OMNI_FLOW",PENDING_STATUS_CHANGE:"PENDING_STATUS_CHANGE"},CALL_STATE:{RINGING:"ringing",CONNECTED:"connected",TRANSFERRING:"transferring",TRANSFERRED:"transferred",ENDED:"ended"},PHONE_TYPE:{DESK_PHONE:"DESK_PHONE",SOFT_PHONE:"SOFT_PHONE"},HANGUP_REASON:{PHONE_CALL_ERROR:"error",PHONE_CALL_ENDED:"ended"},AGENT_AVAILABILITY:{AVAILABLE:"AVAILABLE",BUSY:"BUSY",OFFLINE:"OFFLINE"},REMOVE_PARTICIPANT_VARIANT:{ALWAYS:"ALWAYS",NEVER:"NEVER",ALWAYS_EXCEPT_ON_HOLD:"ALWAYS_EXCEPT_ON_HOLD"},LOG_LEVEL:{ERROR:"ERROR",INFO:"INFO"},LOG_SOURCE:{SYSTEM:"SYSTEM",PARTNER:"PARTNER"},CONTACTS_FILTER_TYPES:{AGENT:"AGENT",QUEUE:"QUEUE",CONTACT:"CONTACT",DIRECTORY:"DIRECTORY",FLOW:"FLOW",AVAILABLE:"AVAILABLE"}},A=["/internalNameLabel","/reqGeneralInfo/reqAdapterUrl","/reqGeneralInfo/reqVendorInfoApiName","isACWAllowed","isHVSEnabled","orgDomainName","phoneServiceChannelId","telephonySettingsComponentFqn"],l=["/reqHvcc"],c=E(7),u=E.n(c),R=E(8),O=E.n(R),P=E(6),C=E.n(P),S=E(0),I=E.n(S),d=E(1),p=E.n(d);var L=function(t){return"string"==typeof t?t:JSON.stringify(t)},f=0,h=[];function G(t,e,E){!function(t,e,E){if(!e)throw new Error("Log Message required");t=t||N.LOG_LEVEL.INFO,E=E||N.LOG_SOURCE.PARTNER;var n=[(new Date).toISOString(),L(t),L(E),"".concat(L(e),"\n")].join("|");f+n.length>=75e5&&(h=[],f=0),f+=n.length,h.push(n)}(e,t,E)}function v(){return JSON.parse(JSON.stringify(h))}function D(){!function(t,e,E){if(document&&t){var n="string"==typeof t?t:JSON.stringify(t),r=new Blob([n],{type:E}),a=document.createElement("a"),T=URL.createObjectURL(r);a.download=e,a.href=T,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(T)}}(h.join(""),"log-".concat((new Date).getTime(),".txt"),"text/plain")}function b(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var E,n=C()(t);if(e){var r=C()(this).constructor;E=Reflect.construct(n,arguments,r)}else E=n.apply(this,arguments);return O()(this,E)}}function Y(t,e){var E=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),E.push.apply(E,n)}return E}function U(t){for(var e=1;e0&&n.forEach((function(t){at.validateClassObject(t,nt)})),this.activeCalls=n})),w=I()((function t(e){var E=e.hasMute,n=void 0===E||E,r=e.hasRecord,a=void 0===r||r,T=e.hasMerge,_=void 0===T||T,o=e.hasSwap,i=void 0===o||o,s=e.hasSignedRecordingUrl,N=void 0!==s&&s,A=e.debugEnabled,l=void 0===A||A,c=e.hasContactSearch,u=void 0!==c&&c,R=e.hasAgentAvailability,O=void 0!==R&&R,P=e.supportsMos,C=void 0!==P&&P,S=e.hasSupervisorListenIn,I=void 0!==S&&S,d=e.hasSupervisorBargeIn,L=void 0!==d&&d,f=e.hasBlindTransfer,h=void 0!==f&&f,G=e.hasTransferToOmniFlow,v=void 0!==G&&G,D=e.hasPendingStatusChange,b=void 0!==D&&D;p()(this,t),at.validateBoolean(n),at.validateBoolean(a),at.validateBoolean(_),at.validateBoolean(i),at.validateBoolean(N),at.validateBoolean(l),at.validateBoolean(u),at.validateBoolean(O),at.validateBoolean(C),at.validateBoolean(I),at.validateBoolean(L),at.validateBoolean(h),at.validateBoolean(v),at.validateBoolean(b),this.hasMute=n,this.hasRecord=a,this.hasMerge=_,this.hasSwap=i,this.hasSignedRecordingUrl=N,this.debugEnabled=l,this.hasContactSearch=u,this.hasAgentAvailability=O,this.supportsMos=C,this.hasSupervisorListenIn=I,this.hasSupervisorBargeIn=L,this.hasBlindTransfer=h,this.hasTransferToOmniFlow=v,this.hasPendingStatusChange=b})),B=I()((function t(e){var E=e.phones,n=void 0===E?[N.PHONE_TYPE.SOFT_PHONE]:E,r=e.selectedPhone,a=void 0===r?new k({type:N.PHONE_TYPE.SOFT_PHONE}):r;p()(this,t),at.validateClassObject(n,Array),at.validateClassObject(a,k),this.phones=n,this.selectedPhone=a})),j=I()((function t(e){var E=e.selectedPhone;p()(this,t),at.validateClassObject(E,k),this.selectedPhone=E})),F=I()((function t(e){var E=e.isRecordingPaused,n=e.contactId,r=void 0===n?null:n,a=e.initialContactId,T=void 0===a?null:a,_=e.instanceId,o=void 0===_?null:_,i=e.region,s=void 0===i?null:i;p()(this,t),this.isRecordingPaused=E,this.contactId=r,this.initialContactId=T,this.instanceId=o,this.region=s})),W=I()((function t(e){var E=e.initialCallHasEnded,n=e.callInfo,r=e.phoneNumber,a=e.callId;p()(this,t),at.validateClassObject(n,tt),this.initialCallHasEnded=E,this.callInfo=n,this.phoneNumber=r,this.callId=a})),Q=I()((function t(e){var E=e.contacts,n=void 0===E?[]:E,r=e.contactTypes,a=void 0===r?[]:r;p()(this,t),n.length>0&&n.forEach((function(t){at.validateClassObject(t,et)})),a.length>0&&a.forEach((function(t){at.validateEnum(t,Object.values(N.CONTACT_TYPE))})),this.contacts=n,this.contactTypes=a})),K=I()((function t(e){var E=e.call;p()(this,t),void 0!==E&&at.validateClassObject(E,nt),this.call=E})),q=I()((function t(e){var E=e.calls;p()(this,t),E instanceof Array?(E.forEach((function(t){return at.validateClassObject(t,nt)})),this.calls=E):(at.validateClassObject(E,nt),this.calls=[E])})),J=I()((function t(e){var E=e.isThirdPartyOnHold,n=e.isCustomerOnHold,r=e.calls;p()(this,t),r&&(Object.values(r).forEach((function(t){at.validateClassObject(t,nt)})),this.calls=r),this.isThirdPartyOnHold=E,this.isCustomerOnHold=n})),X=I()((function t(e){var E=e.success,n=e.url,r=e.duration,a=e.callId;p()(this,t),E&&(at.validateString(n),at.validateString(a),r&&at.validateNumber(r)),this.success=E,this.url=n,this.duration=r,this.callId=a})),z=I()((function t(e){var E=e.showLogin,n=void 0!==E&&E,r=e.loginFrameHeight,a=void 0===r?350:r;p()(this,t),this.showLogin=n,this.loginFrameHeight=a})),$=I()((function t(e){var E=e.success;p()(this,t),this.success=E})),Z=I()((function t(e){var E=e.success,n=e.loginFrameHeight,r=void 0===n?350:n;p()(this,t),this.success=E,this.loginFrameHeight=r})),tt=I()((function t(e){var E=e.callStateTimestamp,n=void 0===E?null:E,r=e.isOnHold,a=e.isMuted,T=void 0!==a&&a,_=e.isRecordingPaused,o=void 0!==_&&_,i=e.initialCallId,s=e.isSoftphoneCall,A=void 0===s||s,l=e.acceptEnabled,c=void 0===l||l,u=e.declineEnabled,R=void 0===u||u,O=e.muteEnabled,P=void 0===O||O,C=e.swapEnabled,S=void 0===C||C,I=e.conferenceEnabled,d=void 0===I||I,L=e.holdEnabled,f=void 0===L||L,h=e.recordEnabled,G=void 0===h||h,v=e.addCallerEnabled,D=void 0===v||v,b=e.extensionEnabled,Y=void 0===b||b,U=e.isReplayable,V=void 0===U||U,g=e.isBargeable,y=void 0!==g&&g,m=e.isExternalTransfer,k=e.removeParticipantVariant,H=void 0===k?M.REMOVE_PARTICIPANT_VARIANT.ALWAYS:k;p()(this,t),n&&at.validateDate(n),at.validateBoolean(o),at.validateBoolean(T),at.validateBoolean(A),at.validateBoolean(c),at.validateBoolean(R),at.validateBoolean(P),at.validateBoolean(S),at.validateBoolean(d),at.validateBoolean(f),at.validateBoolean(G),at.validateBoolean(D),at.validateBoolean(Y),at.validateBoolean(y),void 0!==m&&at.validateBoolean(m),at.validateEnum(H,Object.values(N.REMOVE_PARTICIPANT_VARIANT)),this.callStateTimestamp=n,this.isRecordingPaused=o,this.isMuted=T,this.isOnHold=r,this.initialCallId=i,this.isSoftphoneCall=A,this.acceptEnabled=c,this.declineEnabled=R,this.muteEnabled=P,this.swapEnabled=S,this.conferenceEnabled=d,this.holdEnabled=f,this.recordEnabled=G,this.addCallerEnabled=D,this.extensionEnabled=Y,this.isReplayable=V,this.isBargeable=y,this.isExternalTransfer=m,this.removeParticipantVariant=H})),et=I()((function t(e){var E=e.phoneNumber,n=e.id,r=e.type,a=e.name,T=e.prefix,_=e.extension,o=e.endpointARN,i=e.queue,s=e.availability,A=e.recordId,l=e.description;p()(this,t),E&&at.validateString(E),r&&at.validateEnum(r,Object.values(N.CONTACT_TYPE)),n&&at.validateString(n),a&&at.validateString(a),T&&at.validateString(T),_&&at.validateString(_),s&&at.validateEnum(s,Object.values(N.AGENT_AVAILABILITY)),A&&at.validateString(A),l&&at.validateString(l),this.phoneNumber=E,this.id=n,this.type=r,this.name=a,this.prefix=T,this.extension=_,this.endpointARN=o,this.queue=i,N.CONTACT_TYPE.AGENT===this.type?this.availability=s:this.availability=null,this.recordId=A,this.description=l})),Et=I()((function t(e){var E=e.voiceCallId,n=e.participantType,r=e.dialerType,a=void 0===r?M.DIALER_TYPE.NONE:r,T=e.parentId,_=e.isOnHold,o=e.hasSupervisorBargedIn,i=void 0!==o&&o;p()(this,t),E&&at.validateString(E),n&&at.validateEnum(n,Object.values(N.PARTICIPANT_TYPE)),T&&at.validateString(T),void 0!==_&&at.validateBoolean(_),at.validateBoolean(i),at.validateEnum(a,Object.values(N.DIALER_TYPE)),this.voiceCallId=E,this.participantType=n,this.parentId=T,this.isOnHold=_,this.dialerType=a,this.hasSupervisorBargedIn=i})),nt=I()((function t(e){var E=e.callId,n=e.callType,r=e.contact,a=e.state,T=e.callAttributes,_=e.phoneNumber,o=e.callInfo,i=e.reason,s=e.closeCallOnError,A=e.agentStatus;p()(this,t),E&&(at.validateString(E),this.callId=E),n&&(at.validateEnum(n,Object.values(N.CALL_TYPE)),this.callType=n),_&&(at.validateString(_),this.phoneNumber=_),o&&(at.validateClassObject(o,tt),this.callInfo=o),r&&(at.validateClassObject(r,et),this.contact=r),i&&(this.reason=i),s&&(this.closeCallOnError=s),A&&(this.agentStatus=A),this.state=a,this.callAttributes=T})),rt=function(){function t(){p()(this,t)}return I()(t,[{key:"init",value:function(t){throw new Error("Not implemented")}},{key:"getActiveCalls",value:function(){throw new Error("Not implemented")}},{key:"acceptCall",value:function(t){throw new Error("Not implemented")}},{key:"declineCall",value:function(t){throw new Error("Not implemented")}},{key:"endCall",value:function(t,e){throw new Error("Not implemented")}},{key:"mute",value:function(){throw new Error("Not implemented")}},{key:"unmute",value:function(){throw new Error("Not implemented")}},{key:"hold",value:function(t){throw new Error("Not implemented")}},{key:"resume",value:function(t){throw new Error("Not implemented")}},{key:"setAgentStatus",value:function(t,e,E){throw new Error("Not implemented")}},{key:"getAgentStatus",value:function(){this.logMessageToVendor(N.LOG_LEVEL.INFO,"getAgentStatus API is NOT Implemented")}},{key:"dial",value:function(t){throw new Error("Not implemented")}},{key:"sendDigits",value:function(t){throw new Error("Not implemented")}},{key:"getPhoneContacts",value:function(){throw new Error("Not implemented")}},{key:"swap",value:function(t,e){throw new Error("Not implemented")}},{key:"conference",value:function(t){throw new Error("Not implemented")}},{key:"addParticipant",value:function(t,e,E){throw new Error("Not implemented")}},{key:"pauseRecording",value:function(t){throw new Error("Not implemented")}},{key:"resumeRecording",value:function(t){throw new Error("Not implemented")}},{key:"getAgentConfig",value:function(){throw new Error("Not implemented")}},{key:"setAgentConfig",value:function(t){throw new Error("Not implemented")}},{key:"getCapabilities",value:function(){throw new Error("Not implemented")}},{key:"logout",value:function(){throw new Error("Not implemented")}},{key:"handleMessage",value:function(t){throw new Error("Not implemented")}},{key:"wrapUpCall",value:function(t){throw new Error("Not implemented")}},{key:"getSignedRecordingUrl",value:function(t,e,E){throw new Error("Not implemented")}},{key:"downloadLogs",value:function(t){D()}},{key:"logMessageToVendor",value:function(t,e,E){}},{key:"superviseCall",value:function(t){throw new Error("Not implemented")}},{key:"supervisorDisconnect",value:function(t){throw new Error("Not implemented")}},{key:"supervisorBargeIn",value:function(t){throw new Error("Not implemented")}}]),t}(),at=function(){function t(){p()(this,t)}return I()(t,null,[{key:"validateString",value:function(t){if("string"!=typeof t)throw new Error("Invalid argument. Expecting a string but got ".concat(o()(t)));return this}},{key:"validateNumber",value:function(t){if("number"!=typeof t)throw new Error("Invalid argument. Expecting a number but got ".concat(o()(t)));return this}},{key:"validateBoolean",value:function(t){if("boolean"!=typeof t)throw new Error("Invalid argument. Expecting a boolean but got ".concat(o()(t)));return this}},{key:"validateEnum",value:function(t,e){if(!new RegExp(e.join("|"),"i").test(t))throw new Error("Invalid argument. Expecting a value from ".concat(JSON.stringify(e)," but got ").concat(t));return this}},{key:"validateDate",value:function(t){if(!(t instanceof Date))throw new Error("Invalid argument. Expecting a Date object but got ".concat(o()(t)));return this}},{key:"validateClassObject",value:function(t,e){if(!(t instanceof e))throw new Error("Invalid className. Expecting object of class ".concat(e," but got ").concat(o()(t)));return this}}]),t}(),Tt=I()((function t(e){var E=e.statusId,n=e.statusApiName,r=e.statusName;p()(this,t),at.validateString(E),n&&at.validateString(n),r&&at.validateString(r),this.statusId=E,this.statusApiName=n,this.statusName=r})),_t=I()((function t(e){var E=e.statusId,n=e.statusType,r=e.statusName;p()(this,t),E&&at.validateString(E),n&&at.validateString(n),r&&at.validateString(r),this.statusId=E,this.statusType=n,this.statusName=r})),ot=I()((function t(e){var E=e.newVendorStateInfo,n=e.oldVendorStateInfo;p()(this,t),at.validateClassObject(E,_t),at.validateString(E.statusName),n&&at.validateClassObject(n,_t),this.newVendorStateInfo=E,this.oldVendorStateInfo=n})),it=I()((function t(e){var E=e.callId,n=e.voiceCallId,r=e.callType,a=e.from,T=e.to,_=e.supervisorName,o=e.isBargedIn;p()(this,t),at.validateString(E),this.callId=E,this.voiceCallId=n,this.callType=r,this.from=a,this.to=T,this.supervisorName=_,this.isBargedIn=o})),st=I()((function t(e){var E=e.callId,n=e.stats,r=e.isAudioStatsCompleted;p()(this,t),E&&(at.validateString(E),this.callId=E),n&&(at.validateClassObject(n,Array),n.forEach((function(t){return at.validateClassObject(t,Nt)})),this.stats=n),r&&(at.validateBoolean(r),this.isAudioStatsCompleted=r)})),Nt=I()((function t(e){var E=e.inputChannelStats,n=e.outputChannelStats;p()(this,t),E&&at.validateClassObject(E,At),n&&at.validateClassObject(n,At),this.inputChannelStats=E,this.outputChannelStats=n})),At=I()((function t(e){var E=e.packetsCount,n=e.packetsLost,r=e.jitterBufferMillis,a=e.roundTripTimeMillis;p()(this,t),E=null==E||E<0?0:E,n=null==n||n<0?0:n,r=null==r||r<0?0:r,a=null==a||a<0?0:a,this.statsCount=0,this.packetsCount=E,this.packetsLost=n,this.jitterBufferMillis=r,this.roundTripTimeMillis=a})),lt=I()((function t(e){var E=e.call;p()(this,t),at.validateClassObject(E,nt),this.call=E})),ct=function(t){u()(E,t);var e=b(E);function E(t){var n=t.calls;return p()(this,E),e.call(this,{calls:n})}return I()(E)}(q),ut=!1;function Rt(t){var e=function(t){var e=V[t];return{packetsCount:e.packetsCount/e.statsCount,packetsLost:e.packetsLost/e.statsCount,jitterBufferMillis:e.jitterBufferMillis/e.statsCount,roundTripTimeMillis:e.roundTripTimeMillis/e.statsCount}}(t),E=e.roundTripTimeMillis+2*e.jitterBufferMillis+10,n=0;return n=E<160?93.2-E/40:93.2-(E-120)/10,1+.035*(n-=e.packetsLost/e.packetsCount*2.5)+7e-6*n*(n-60)*(100-n)}function Ot(){ut=!0}function Pt(){if(ut&&V){var t=Rt("inputChannelStats"),e=Rt("outputChannelStats");return V=null,isNaN(e)&&isNaN(t)?0:isNaN(e)?t:isNaN(t)?e:Math.min(t,e)}}function Ct(){V=new Nt({inputChannelStats:new At({packetsCount:0,packetsLost:0,jitterBufferMillis:0,roundTripTimeMillis:0}),outputChannelStats:new At({packetsCount:0,packetsLost:0,jitterBufferMillis:0,roundTripTimeMillis:0})})}function St(t){V&&t.forEach((function(t){t.inputChannelStats&&(V.inputChannelStats.statsCount++,V.inputChannelStats.packetsCount+=0|t.inputChannelStats.packetsCount,V.inputChannelStats.packetsLost+=0|t.inputChannelStats.packetsLost,V.inputChannelStats.jitterBufferMillis+=0|t.inputChannelStats.jitterBufferMillis,V.inputChannelStats.roundTripTimeMillis+=0|t.inputChannelStats.roundTripTimeMillis),t.outputChannelStats&&(V.outputChannelStats.statsCount++,V.outputChannelStats.packetsCount+=0|t.outputChannelStats.packetsCount,V.outputChannelStats.packetsLost+=0|t.outputChannelStats.packetsLost,V.outputChannelStats.jitterBufferMillis+=0|t.outputChannelStats.jitterBufferMillis,V.outputChannelStats.roundTripTimeMillis+=0|t.outputChannelStats.roundTripTimeMillis)}))}function It(t){return t&&t.type?t.type:t}function dt(t){return t&&t.message?t.message:t}function pt(t,e,E){var n=function t(e){if(e){if("function"==typeof e)return;if("object"===o()(e)){var E=Array.isArray(e),n=E?[]:{};if(E)e.forEach((function(e){n.push(t(e))}));else for(var r in e)"phoneNumber"!==r&&"number"!==r&&"name"!==r&&"callAttributes"!==r&&(n[r]=t(e[r]));return n}}return e}(e);G({eventType:t,payload:e},E?N.LOG_LEVEL.ERROR:N.LOG_LEVEL.INFO,N.LOG_SOURCE.SYSTEM),g.postMessage({type:N.MESSAGE_TYPE.LOG,payload:{eventType:t,payload:n,isError:E}})}function Lt(t,e){var E=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];g.postMessage({type:N.MESSAGE_TYPE.TELEPHONY_EVENT_DISPATCHED,payload:{telephonyEventType:t,telephonyEventPayload:e}}),E&&pt(t,e,!1)}function ft(t,e,E){console.error("SCV dispatched error ".concat(t," for eventType ").concat(E),e),Lt(N.EVENT_TYPE.ERROR,{message:N.ERROR_TYPE[t]},!1),pt(E,{errorType:t,error:e},!0)}function ht(t,e){console.info("SCV info message dispatched for eventType ".concat(t," with payload ").concat(JSON.stringify(e))),Lt(N.EVENT_TYPE.INFO,{message:N.INFO_TYPE[t]},!1),pt(t,e,!1)}function Gt(){return vt.apply(this,arguments)}function vt(){return(vt=T()(s.a.mark((function t(){var e,E,n,a,T,_,o,i;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,y.getAgentConfig();case 3:return n=t.sent,t.next=6,y.getCapabilities();case 6:return a=t.sent,at.validateClassObject(n,B),at.validateClassObject(a,w),a.supportsMos&&Ot(),t.next=12,y.getActiveCalls();case 12:T=t.sent,at.validateClassObject(T,x),_=T.activeCalls,o=N.MESSAGE_TYPE.CONNECTOR_READY,i={agentConfig:(e={},r()(e,N.AGENT_CONFIG_TYPE.PHONES,n.phones),r()(e,N.AGENT_CONFIG_TYPE.SELECTED_PHONE,n.selectedPhone),e),capabilities:(E={},r()(E,N.CAPABILITIES_TYPE.MUTE,a.hasMute),r()(E,N.CAPABILITIES_TYPE.RECORD,a.hasRecord),r()(E,N.CAPABILITIES_TYPE.MERGE,a.hasMerge),r()(E,N.CAPABILITIES_TYPE.SWAP,a.hasSwap),r()(E,N.CAPABILITIES_TYPE.SIGNED_RECORDING_URL,a.hasSignedRecordingUrl),r()(E,N.CAPABILITIES_TYPE.DEBUG_ENABLED,a.debugEnabled),r()(E,N.CAPABILITIES_TYPE.CONTACT_SEARCH,a.hasContactSearch),r()(E,N.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY,a.hasAgentAvailability),r()(E,N.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN,a.hasSupervisorListenIn),r()(E,N.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN,a.hasSupervisorBargeIn),r()(E,N.CAPABILITIES_TYPE.MOS,a.supportsMos),r()(E,N.CAPABILITIES_TYPE.BLIND_TRANSFER,a.hasBlindTransfer),r()(E,N.CAPABILITIES_TYPE.TRANSFER_TO_OMNI_FLOW,a.hasTransferToOmniFlow),r()(E,N.CAPABILITIES_TYPE.PENDING_STATUS_CHANGE,a.hasPendingStatusChange),E),callInProgress:_.length>0?_[0]:null},g.postMessage({type:o,payload:i}),pt(o,i,!1),t.next=25;break;case 21:t.prev=21,t.t0=t.catch(0),g.postMessage({type:N.MESSAGE_TYPE.CONNECTOR_READY,payload:{}}),pt(N.MESSAGE_TYPE.CONNECTOR_READY,{},!1);case 25:case"end":return t.stop()}}),t,null,[[0,21]])})))).apply(this,arguments)}function Dt(t){return bt.apply(this,arguments)}function bt(){return(bt=T()(s.a.mark((function t(e){var E,n,r,a,T,_,o,i,A,l,c,u,R,O,P,C,S,I,d,p,L,f,h,G,D,b,Y,U,V,g,M,k,H,w,B,j,F,W,J,z,tt,Et,nt,rt,Tt,ot,it,st,Nt,At,ut,Rt;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:(E=e.data.type)!==N.MESSAGE_TYPE.LOG&&pt(E,e.data,!1),t.t0=E,t.next=t.t0===N.MESSAGE_TYPE.ACCEPT_CALL?5:t.t0===N.MESSAGE_TYPE.DECLINE_CALL?29:t.t0===N.MESSAGE_TYPE.END_CALL?42:t.t0===N.MESSAGE_TYPE.MUTE?60:t.t0===N.MESSAGE_TYPE.UNMUTE?71:t.t0===N.MESSAGE_TYPE.HOLD?82:t.t0===N.MESSAGE_TYPE.RESUME?99:t.t0===N.MESSAGE_TYPE.SET_AGENT_STATUS?116:t.t0===N.MESSAGE_TYPE.GET_AGENT_STATUS?137:t.t0===N.MESSAGE_TYPE.DIAL?149:t.t0===N.MESSAGE_TYPE.SEND_DIGITS?171:t.t0===N.MESSAGE_TYPE.GET_PHONE_CONTACTS?180:t.t0===N.MESSAGE_TYPE.SWAP_PARTICIPANTS?193:t.t0===N.MESSAGE_TYPE.CONFERENCE?204:t.t0===N.MESSAGE_TYPE.ADD_PARTICIPANT?215:t.t0===N.MESSAGE_TYPE.PAUSE_RECORDING?234:t.t0===N.MESSAGE_TYPE.RESUME_RECORDING?245:t.t0===N.MESSAGE_TYPE.LOGOUT?256:t.t0===N.MESSAGE_TYPE.MESSAGE?269:t.t0===N.MESSAGE_TYPE.WRAP_UP_CALL?271:t.t0===N.MESSAGE_TYPE.AGENT_AVAILABLE?273:t.t0===N.MESSAGE_TYPE.SET_AGENT_CONFIG?313:t.t0===N.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL?325:t.t0===N.MESSAGE_TYPE.DOWNLOAD_VENDOR_LOGS?340:t.t0===N.MESSAGE_TYPE.LOG?342:t.t0===N.MESSAGE_TYPE.SUPERVISE_CALL?345:t.t0===N.MESSAGE_TYPE.SUPERVISOR_DISCONNECT?362:t.t0===N.MESSAGE_TYPE.SUPERVISOR_BARGE_IN?375:387;break;case 5:if(t.prev=5,!e.data.call||!e.data.call.callType||e.data.call.callType.toLowerCase()!==N.CALL_TYPE.OUTBOUND.toLowerCase()){t.next=8;break}return t.abrupt("return");case 8:if(Ct(),!m){t.next=16;break}return t.next=12,y.supervisorDisconnect();case 12:n=t.sent,at.validateClassObject(n,ct),m=!1,Lt(N.EVENT_TYPE.SUPERVISOR_HANGUP,n.calls);case 16:return t.next=18,y.acceptCall(e.data.call);case 18:r=t.sent,at.validateClassObject(r,K),Lt((a=r.call).callType.toLowerCase()===N.CALL_TYPE.CALLBACK.toLowerCase()?N.EVENT_TYPE.CALL_STARTED:N.EVENT_TYPE.CALL_CONNECTED,a),t.next=28;break;case 24:t.prev=24,t.t1=t.catch(5),m=!1,ht(N.INFO_TYPE.CAN_NOT_ACCEPT_THE_CALL,{messagetype:N.MESSAGE_TYPE.ACCEPT_CALL,additionalInfo:t.t1});case 28:return t.abrupt("break",388);case 29:return t.prev=29,t.next=32,y.declineCall(e.data.call);case 32:T=t.sent,at.validateClassObject(T,K),_=T.call,Lt(N.EVENT_TYPE.HANGUP,_),t.next=41;break;case 38:t.prev=38,t.t2=t.catch(29),ft(N.ERROR_TYPE.CAN_NOT_DECLINE_THE_CALL,t.t2,N.MESSAGE_TYPE.DECLINE_CALL);case 41:return t.abrupt("break",388);case 42:return t.prev=42,t.next=45,y.endCall(e.data.call,e.data.agentStatus);case 45:return o=t.sent,at.validateClassObject(o,q),t.next=49,y.getActiveCalls();case 49:i=t.sent,at.validateClassObject(i,x),A=i.activeCalls,l=o.calls,0===A.length?Lt(N.EVENT_TYPE.HANGUP,l):Lt(N.EVENT_TYPE.PARTICIPANT_REMOVED,l.length>0&&l[0]),t.next=59;break;case 56:t.prev=56,t.t3=t.catch(42),ft(N.ERROR_TYPE.CAN_NOT_END_THE_CALL,t.t3,N.MESSAGE_TYPE.END_CALL);case 59:return t.abrupt("break",388);case 60:return t.prev=60,t.next=63,y.mute();case 63:c=t.sent,kt({eventType:N.EVENT_TYPE.MUTE_TOGGLE,payload:c}),t.next=70;break;case 67:t.prev=67,t.t4=t.catch(60),ft(N.ERROR_TYPE.CAN_NOT_MUTE_CALL,t.t4,N.MESSAGE_TYPE.MUTE);case 70:return t.abrupt("break",388);case 71:return t.prev=71,t.next=74,y.unmute();case 74:u=t.sent,kt({eventType:N.EVENT_TYPE.MUTE_TOGGLE,payload:u}),t.next=81;break;case 78:t.prev=78,t.t5=t.catch(71),ft(N.ERROR_TYPE.CAN_NOT_UNMUTE_CALL,t.t5,N.MESSAGE_TYPE.UNMUTE);case 81:return t.abrupt("break",388);case 82:return t.prev=82,t.next=85,y.hold(e.data.call);case 85:R=t.sent,kt({eventType:N.EVENT_TYPE.HOLD_TOGGLE,payload:R}),t.next=98;break;case 89:t.prev=89,t.t6=t.catch(82),t.t7=It(t.t6),t.next=t.t7===N.ERROR_TYPE.INVALID_PARTICIPANT?94:96;break;case 94:return ft(N.ERROR_TYPE.INVALID_PARTICIPANT,dt(t.t6),N.MESSAGE_TYPE.HOLD),t.abrupt("break",98);case 96:return ft(N.ERROR_TYPE.CAN_NOT_HOLD_CALL,dt(t.t6),N.MESSAGE_TYPE.HOLD),t.abrupt("break",98);case 98:return t.abrupt("break",388);case 99:return t.prev=99,t.next=102,y.resume(e.data.call);case 102:O=t.sent,kt({eventType:N.EVENT_TYPE.HOLD_TOGGLE,payload:O}),t.next=115;break;case 106:t.prev=106,t.t8=t.catch(99),t.t9=It(t.t8),t.next=t.t9===N.ERROR_TYPE.INVALID_PARTICIPANT?111:113;break;case 111:return ft(N.ERROR_TYPE.INVALID_PARTICIPANT,dt(t.t8),N.MESSAGE_TYPE.RESUME),t.abrupt("break",115);case 113:return ft(N.ERROR_TYPE.CAN_NOT_RESUME_CALL,dt(t.t8),N.MESSAGE_TYPE.RESUME),t.abrupt("break",115);case 115:return t.abrupt("break",388);case 116:return t.prev=116,P=e.data.statusInfo||{},C=e.data.enqueueNextState||!1,t.next=121,y.setAgentStatus(e.data.agentStatus,P,C);case 121:S=t.sent,at.validateClassObject(S,$),I=S.success,Lt(N.EVENT_TYPE.SET_AGENT_STATUS_RESULT,{success:I}),t.next=136;break;case 127:t.prev=127,t.t10=t.catch(116),t.t11=It(t.t10),t.next=t.t11===N.ERROR_TYPE.INVALID_AGENT_STATUS?132:134;break;case 132:return ft(N.ERROR_TYPE.INVALID_AGENT_STATUS,dt(t.t10),N.MESSAGE_TYPE.SET_AGENT_STATUS),t.abrupt("break",136);case 134:return ft(N.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS,dt(t.t10),N.MESSAGE_TYPE.SET_AGENT_STATUS),t.abrupt("break",136);case 136:return t.abrupt("break",388);case 137:return t.prev=137,t.next=140,y.getAgentStatus();case 140:d=t.sent,at.validateClassObject(d,_t),Lt(N.EVENT_TYPE.GET_AGENT_STATUS_RESULT,d),t.next=148;break;case 145:t.prev=145,t.t12=t.catch(137),ft(N.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS,dt(t.t12),N.MESSAGE_TYPE.GET_AGENT_STATUS);case 148:return t.abrupt("break",388);case 149:return t.prev=149,t.next=152,y.dial(new et(e.data.contact));case 152:p=t.sent,at.validateClassObject(p,K),L=p.call,Lt(N.EVENT_TYPE.CALL_STARTED,L),t.next=170;break;case 158:t.prev=158,t.t13=t.catch(149),Lt(N.EVENT_TYPE.CALL_FAILED),t.t14=It(t.t13),t.next=t.t14===N.ERROR_TYPE.INVALID_DESTINATION?164:t.t14===N.ERROR_TYPE.GENERIC_ERROR?166:168;break;case 164:return ft(N.ERROR_TYPE.INVALID_DESTINATION,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",170);case 166:return ft(N.ERROR_TYPE.GENERIC_ERROR,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",170);case 168:return ft(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",170);case 170:return t.abrupt("break",388);case 171:return t.prev=171,t.next=174,y.sendDigits(e.data.digits);case 174:t.next=179;break;case 176:t.prev=176,t.t15=t.catch(171),pt(N.MESSAGE_TYPE.SEND_DIGITS,e.data.digits,!0);case 179:return t.abrupt("break",388);case 180:return t.prev=180,t.next=183,y.getPhoneContacts(e.data.filter);case 183:f=t.sent,at.validateClassObject(f,Q),h=f.contacts.map((function(t){return{id:t.id,type:t.type,name:t.name,phoneNumber:t.phoneNumber,prefix:t.prefix,extension:t.extension,endpointARN:t.endpointARN,queue:t.queue,availability:t.availability,recordId:t.recordId,description:t.description}})),Lt(N.EVENT_TYPE.PHONE_CONTACTS,{contacts:h,contactTypes:f.contactTypes}),t.next=192;break;case 189:t.prev=189,t.t16=t.catch(180),ft(N.ERROR_TYPE.CAN_NOT_GET_PHONE_CONTACTS,t.t16,N.MESSAGE_TYPE.GET_PHONE_CONTACTS);case 192:return t.abrupt("break",388);case 193:return t.prev=193,t.next=196,y.swap(e.data.callToHold,e.data.callToResume);case 196:G=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANTS_SWAPPED,payload:G}),t.next=203;break;case 200:t.prev=200,t.t17=t.catch(193),ft(N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,t.t17,N.MESSAGE_TYPE.SWAP_PARTICIPANTS);case 203:return t.abrupt("break",388);case 204:return t.prev=204,t.next=207,y.conference(e.data.calls);case 207:D=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANTS_CONFERENCED,payload:D}),t.next=214;break;case 211:t.prev=211,t.t18=t.catch(204),ft(N.ERROR_TYPE.CAN_NOT_CONFERENCE,t.t18,N.MESSAGE_TYPE.CONFERENCE);case 214:return t.abrupt("break",388);case 215:return t.prev=215,t.next=218,y.addParticipant(new et(e.data.contact),e.data.call,e.data.isBlindTransfer);case 218:b=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANT_ADDED,payload:b}),e.data.isBlindTransfer&&Lt(N.EVENT_TYPE.HANGUP,e.data.call),t.next=233;break;case 223:t.prev=223,t.t19=t.catch(215),Lt(N.EVENT_TYPE.PARTICIPANT_REMOVED,{reason:N.EVENT_TYPE.ERROR.toLowerCase()}),t.t20=It(t.t19),t.next=t.t20===N.ERROR_TYPE.INVALID_DESTINATION?229:231;break;case 229:return ft(N.ERROR_TYPE.INVALID_DESTINATION,dt(t.t19),N.MESSAGE_TYPE.ADD_PARTICIPANT),t.abrupt("break",233);case 231:return ft(N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,dt(t.t19),N.MESSAGE_TYPE.ADD_PARTICIPANT),t.abrupt("break",233);case 233:return t.abrupt("break",388);case 234:return t.prev=234,t.next=237,y.pauseRecording(e.data.call);case 237:Y=t.sent,kt({eventType:N.EVENT_TYPE.RECORDING_TOGGLE,payload:Y}),t.next=244;break;case 241:t.prev=241,t.t21=t.catch(234),ft(N.ERROR_TYPE.CAN_NOT_PAUSE_RECORDING,t.t21,N.MESSAGE_TYPE.PAUSE_RECORDING);case 244:return t.abrupt("break",388);case 245:return t.prev=245,t.next=248,y.resumeRecording(e.data.call);case 248:U=t.sent,kt({eventType:N.EVENT_TYPE.RECORDING_TOGGLE,payload:U}),t.next=255;break;case 252:t.prev=252,t.t22=t.catch(245),ft(N.ERROR_TYPE.CAN_NOT_RESUME_RECORDING,t.t22,N.MESSAGE_TYPE.RESUME_RECORDING);case 255:return t.abrupt("break",388);case 256:return t.prev=256,t.next=259,y.logout();case 259:V=t.sent,at.validateClassObject(V,Z),g=V.success,M=V.loginFrameHeight,Lt(N.EVENT_TYPE.LOGOUT_RESULT,{success:g,loginFrameHeight:M}),t.next=268;break;case 265:t.prev=265,t.t23=t.catch(256),ft(N.ERROR_TYPE.CAN_NOT_LOG_OUT,t.t23,N.MESSAGE_TYPE.LOGOUT);case 268:return t.abrupt("break",388);case 269:return y.handleMessage(e.data.message),t.abrupt("break",388);case 271:return y.wrapUpCall(e.data.call),t.abrupt("break",388);case 273:if(!e.data.isAvailable){t.next=312;break}return t.next=277,y.getActiveCalls();case 277:k=t.sent,at.validateClassObject(k,x),H=k.activeCalls,t.t24=s.a.keys(H);case 281:if((t.t25=t.t24()).done){t.next=312;break}if(w=t.t25.value,B=H[w],j=!B.callInfo||B.callInfo.isReplayable,F=B.callAttributes&&B.callAttributes.participantType===N.PARTICIPANT_TYPE.SUPERVISOR,W=F&&B.callAttributes&&B.callAttributes.hasSupervisorBargedIn,!j){t.next=310;break}B.isReplayedCall=!0,t.t26=B.state,t.next=t.t26===N.CALL_STATE.CONNECTED?292:t.t26===N.CALL_STATE.RINGING?299:t.t26===N.CALL_STATE.TRANSFERRING?305:t.t26===N.CALL_STATE.TRANSFERRED?307:309;break;case 292:if(!F){t.next=297;break}return m=!0,Lt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,B),W&&Lt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,B),t.abrupt("break",310);case 297:return Lt(N.EVENT_TYPE.CALL_CONNECTED,B),t.abrupt("break",310);case 299:if(!F){t.next=303;break}return m=!0,Lt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,B),t.abrupt("break",310);case 303:return Lt(N.EVENT_TYPE.CALL_STARTED,B),t.abrupt("break",310);case 305:return Lt(N.EVENT_TYPE.PARTICIPANT_ADDED,{phoneNumber:B.contact.phoneNumber,callInfo:B.callInfo,initialCallHasEnded:B.callAttributes.initialCallHasEnded,callId:B.callId}),t.abrupt("break",310);case 307:return Lt(N.EVENT_TYPE.PARTICIPANT_CONNECTED,{phoneNumber:B.contact.phoneNumber,callInfo:B.callInfo,initialCallHasEnded:B.callAttributes.initialCallHasEnded,callId:B.callId}),t.abrupt("break",310);case 309:return t.abrupt("break",310);case 310:t.next=281;break;case 312:return t.abrupt("break",388);case 313:return t.prev=313,t.next=316,y.setAgentConfig(e.data.config);case 316:J=t.sent,at.validateClassObject(J,$),Lt(N.EVENT_TYPE.AGENT_CONFIG_UPDATED,J),t.next=324;break;case 321:t.prev=321,t.t27=t.catch(313),ft(It(t.t27)===N.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER?N.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER:N.ERROR_TYPE.CAN_NOT_SET_AGENT_CONFIG,dt(t.t27),N.MESSAGE_TYPE.SET_AGENT_CONFIG);case 324:return t.abrupt("break",388);case 325:return t.prev=325,z=e.data,tt=z.recordingUrl,Et=z.vendorCallKey,nt=z.callId,t.next=329,y.getSignedRecordingUrl(tt,Et,nt);case 329:rt=t.sent,at.validateClassObject(rt,X),Lt(N.EVENT_TYPE.SIGNED_RECORDING_URL,rt),t.next=339;break;case 334:t.prev=334,t.t28=t.catch(325),Tt=new X({success:!1}),Lt(N.EVENT_TYPE.SIGNED_RECORDING_URL,Tt,!1),pt(N.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL,Tt,!0);case 339:return t.abrupt("break",388);case 340:return y.downloadLogs(v()),t.abrupt("break",388);case 342:return ot=e.data,it=ot.logLevel,st=ot.logMessage,Nt=ot.payload,y.logMessageToVendor(it,st,Nt),t.abrupt("break",388);case 345:return t.prev=345,m=!0,t.next=349,y.superviseCall(e.data.call);case 349:return At=t.sent,at.validateClassObject(At,lt),t.next=353,y.getAgentConfig();case 353:t.sent.selectedPhone.type===N.PHONE_TYPE.SOFT_PHONE?Lt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,At.call):Lt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,At.call),t.next=361;break;case 357:t.prev=357,t.t29=t.catch(345),m=!1,ft(N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,t.t29,N.MESSAGE_TYPE.SUPERVISE_CALL);case 361:return t.abrupt("break",388);case 362:return t.prev=362,t.next=365,y.supervisorDisconnect(e.data.call);case 365:ut=t.sent,at.validateClassObject(ut,ct),m=!1,Lt(N.EVENT_TYPE.SUPERVISOR_HANGUP,ut.calls),t.next=374;break;case 371:t.prev=371,t.t30=t.catch(362),ft(N.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR,t.t30,N.MESSAGE_TYPE.SUPERVISOR_DISCONNECT);case 374:return t.abrupt("break",388);case 375:return t.prev=375,t.next=378,y.supervisorBargeIn(e.data.call);case 378:Rt=t.sent,at.validateClassObject(Rt,lt),Lt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,Rt.call),t.next=386;break;case 383:t.prev=383,t.t31=t.catch(375),ft(N.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR,t.t31,N.MESSAGE_TYPE.SUPERVISOR_BARGE_IN);case 386:case 387:return t.abrupt("break",388);case 388:case"end":return t.stop()}}),t,null,[[5,24],[29,38],[42,56],[60,67],[71,78],[82,89],[99,106],[116,127],[137,145],[149,158],[171,176],[180,189],[193,200],[204,211],[215,223],[234,241],[245,252],[256,265],[313,321],[325,334],[345,357],[362,371],[375,383]])})))).apply(this,arguments)}function Yt(t){return Ut.apply(this,arguments)}function Ut(){return(Ut=T()(s.a.mark((function t(e){var E,n,r,a;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e.data.type,t.next=t.t0===N.MESSAGE_TYPE.SETUP_CONNECTOR?3:29;break;case 3:if(E=/^https:\/\/[\w-.]+(\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/,n=new URL(e.origin),r=n.protocol+"//"+n.hostname,!E.test(r)){t.next=27;break}return(g=e.ports[0]).onmessage=Dt,pt(N.MESSAGE_TYPE.SETUP_CONNECTOR,Vt(e.data.connectorConfig),!1),t.prev=10,t.next=13,y.init(e.data.connectorConfig);case 13:a=t.sent,at.validateClassObject(a,z),a.showLogin?Lt(N.EVENT_TYPE.SHOW_LOGIN,{loginFrameHeight:a.loginFrameHeight}):Gt(),t.next=27;break;case 18:t.prev=18,t.t1=t.catch(10),t.t2=It(t.t1),t.next=t.t2===N.ERROR_TYPE.INVALID_PARAMS?23:25;break;case 23:return ft(N.ERROR_TYPE.INVALID_PARAMS,dt(t.t1),N.MESSAGE_TYPE.SETUP_CONNECTOR),t.abrupt("break",27);case 25:return ft(N.ERROR_TYPE.CAN_NOT_LOG_IN,dt(t.t1),N.MESSAGE_TYPE.SETUP_CONNECTOR),t.abrupt("break",27);case 27:return window.removeEventListener("message",Yt),t.abrupt("break",30);case 29:return t.abrupt("break",30);case 30:case"end":return t.stop()}}),t,null,[[10,18]])})))).apply(this,arguments)}function Vt(t){t=t||{};var e={};return A.forEach((function(E){t.hasOwnProperty(E)&&(e[E]=t[E])})),l.forEach((function(E){Object.keys(t).forEach((function(n){n.startsWith(E)&&(e[n]=t[n])}))})),e}function gt(t,e,E,n){try{return at.validateClassObject(t,e),!0}catch(t){return E&&ft(E,t,n),!1}}function yt(t){y=t,window.addEventListener("message",Yt)}function mt(t){pt(t.eventType,t.payload,t.isError)}function Mt(t){var e=t.eventType,E=t.error;switch(e){case N.EVENT_TYPE.LOGIN_RESULT:ft(N.ERROR_TYPE.CAN_NOT_LOG_IN,E,N.EVENT_TYPE.LOGIN_RESULT);break;case N.EVENT_TYPE.LOGOUT_RESULT:ft(N.ERROR_TYPE.CAN_NOT_LOG_OUT,E,N.EVENT_TYPE.LOGOUT_RESULT);break;case N.EVENT_TYPE.CALL_STARTED:ft(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.CALL_STARTED);break;case N.EVENT_TYPE.QUEUED_CALL_STARTED:ft(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.QUEUED_CALL_STARTED);break;case N.EVENT_TYPE.CALL_CONNECTED:ft(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.CALL_CONNECTED);break;case N.EVENT_TYPE.HANGUP:ft(N.ERROR_TYPE.CAN_NOT_END_THE_CALL,E,N.EVENT_TYPE.HANGUP);break;case N.EVENT_TYPE.PARTICIPANT_ADDED:ft(It(E)===N.ERROR_TYPE.INVALID_PARTICIPANT?N.ERROR_TYPE.INVALID_PARTICIPANT:N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_ADDED);break;case N.EVENT_TYPE.PARTICIPANT_CONNECTED:ft(N.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_CONNECTED);break;case N.EVENT_TYPE.PARTICIPANT_REMOVED:ft(N.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_REMOVED);break;case N.EVENT_TYPE.MUTE_TOGGLE:ft(N.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE,E,N.EVENT_TYPE.MUTE_TOGGLE);break;case N.EVENT_TYPE.HOLD_TOGGLE:ft(It(E)===N.ERROR_TYPE.INVALID_PARTICIPANT?N.ERROR_TYPE.INVALID_PARTICIPANT:N.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD,E,N.EVENT_TYPE.HOLD_TOGGLE);break;case N.EVENT_TYPE.RECORDING_TOGGLE:ft(N.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD,E,N.EVENT_TYPE.RECORDING_TOGGLE);break;case N.EVENT_TYPE.PARTICIPANTS_SWAPPED:ft(N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,E,N.EVENT_TYPE.PARTICIPANTS_SWAPPED);break;case N.EVENT_TYPE.PARTICIPANTS_CONFERENCED:ft(N.ERROR_TYPE.CAN_NOT_CONFERENCE,E,N.EVENT_TYPE.PARTICIPANTS_CONFERENCED);break;case N.EVENT_TYPE.AGENT_ERROR:ft(N.ERROR_TYPE.AGENT_ERROR,E,N.EVENT_TYPE.AGENT_ERROR);break;case N.EVENT_TYPE.SOFTPHONE_ERROR:switch(It(E)){case N.ERROR_TYPE.UNSUPPORTED_BROWSER:ft(N.ERROR_TYPE.UNSUPPORTED_BROWSER,E,N.EVENT_TYPE.SOFTPHONE_ERROR);break;case N.ERROR_TYPE.MICROPHONE_NOT_SHARED:ft(N.ERROR_TYPE.MICROPHONE_NOT_SHARED,E,N.EVENT_TYPE.SOFTPHONE_ERROR);break;default:ft(N.ERROR_TYPE.GENERIC_ERROR,E,N.EVENT_TYPE.SOFTPHONE_ERROR)}break;default:console.error("Unhandled error scenario with arguments ",arguments)}}function kt(t){return Ht.apply(this,arguments)}function Ht(){return(Ht=T()(s.a.mark((function t(e){var E,n,r,a,T,_,o,i,A,l,c,u,R,O,P,C,S,I,d,p,L,f,h,G,v,D,b,Y,U,V,g,M,k;return s.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:E=e.eventType,n=e.payload,r=e.registerLog,a=void 0===r||r,t.t0=E,t.next=t.t0===N.EVENT_TYPE.LOGIN_RESULT?4:t.t0===N.EVENT_TYPE.LOGOUT_RESULT?6:t.t0===N.EVENT_TYPE.CALL_STARTED?8:t.t0===N.EVENT_TYPE.QUEUED_CALL_STARTED?10:t.t0===N.EVENT_TYPE.CALL_CONNECTED?12:t.t0===N.EVENT_TYPE.HANGUP?25:t.t0===N.EVENT_TYPE.PARTICIPANT_ADDED?27:t.t0===N.EVENT_TYPE.PARTICIPANT_CONNECTED?29:t.t0===N.EVENT_TYPE.PARTICIPANT_REMOVED?31:t.t0===N.EVENT_TYPE.MESSAGE?38:t.t0===N.EVENT_TYPE.AFTER_CALL_WORK_STARTED?40:t.t0===N.EVENT_TYPE.WRAP_UP_ENDED?42:t.t0===N.EVENT_TYPE.REMOTE_CONTROLLER?44:t.t0===N.EVENT_TYPE.MUTE_TOGGLE?46:t.t0===N.EVENT_TYPE.HOLD_TOGGLE?48:t.t0===N.EVENT_TYPE.RECORDING_TOGGLE?51:t.t0===N.EVENT_TYPE.PARTICIPANTS_SWAPPED?54:t.t0===N.EVENT_TYPE.PARTICIPANTS_CONFERENCED?56:t.t0===N.EVENT_TYPE.UPDATE_AUDIO_STATS?58:t.t0===N.EVENT_TYPE.SUPERVISOR_BARGED_IN?60:t.t0===N.EVENT_TYPE.CALL_BARGED_IN?62:t.t0===N.EVENT_TYPE.SUPERVISOR_CALL_STARTED?64:t.t0===N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED?66:t.t0===N.EVENT_TYPE.SUPERVISOR_HANGUP?68:t.t0===N.EVENT_TYPE.SET_AGENT_STATUS?70:t.t0===N.EVENT_TYPE.GET_AGENT_STATUS?72:t.t0===N.EVENT_TYPE.STATE_CHANGE?74:76;break;case 4:return gt(n,$,N.ERROR_TYPE.CAN_NOT_LOG_IN,N.EVENT_TYPE.LOGIN_RESULT)&&(Lt(N.EVENT_TYPE.LOGIN_RESULT,n,a),n.success&&Gt()),t.abrupt("break",76);case 6:return gt(n,Z,N.ERROR_TYPE.CAN_NOT_LOG_OUT,N.EVENT_TYPE.LOGOUT_RESULT)&&Lt(N.EVENT_TYPE.LOGOUT_RESULT,{success:n.success,loginFrameHeight:n.loginFrameHeight},a),t.abrupt("break",76);case 8:return gt(n,K,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.CALL_STARTED)&&Lt(N.EVENT_TYPE.CALL_STARTED,n.call,a),t.abrupt("break",76);case 10:return gt(n,K,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.QUEUED_CALL_STARTED)&&Lt(N.EVENT_TYPE.QUEUED_CALL_STARTED,n.call,a),t.abrupt("break",76);case 12:if(!gt(n,K,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.CALL_CONNECTED)){t.next=24;break}if(Ct(),!m){t.next=23;break}return t.next=17,y.supervisorDisconnect();case 17:return T=t.sent,at.validateClassObject(T,ct),m=!1,Lt(N.EVENT_TYPE.SUPERVISOR_HANGUP,T,a),Lt(N.EVENT_TYPE.CALL_CONNECTED,n.call,a),t.abrupt("break",76);case 23:Lt(N.EVENT_TYPE.CALL_CONNECTED,n.call,a);case 24:return t.abrupt("break",76);case 25:return gt(n,q,N.ERROR_TYPE.CAN_NOT_END_THE_CALL,N.EVENT_TYPE.HANGUP)&&Lt(N.EVENT_TYPE.HANGUP,n.calls,a),t.abrupt("break",76);case 27:return gt(n,W,N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_ADDED)&&(_=n.initialCallHasEnded,o=n.callInfo,i=n.phoneNumber,A=n.callId,Lt(N.EVENT_TYPE.PARTICIPANT_ADDED,{initialCallHasEnded:_,callInfo:o,phoneNumber:i,callId:A},a)),t.abrupt("break",76);case 29:return gt(n,W,N.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_CONNECTED)&&(l=n.initialCallHasEnded,c=n.callInfo,u=n.phoneNumber,R=n.callId,Lt(N.EVENT_TYPE.PARTICIPANT_CONNECTED,{initialCallHasEnded:l,callInfo:c,phoneNumber:u,callId:R},a)),t.abrupt("break",76);case 31:if(!gt(n,K,N.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_REMOVED)){t.next=37;break}return O=n.call,t.next=35,y.getActiveCalls();case 35:gt(P=t.sent,x)&&(0===(C=P.activeCalls).length?Lt(N.EVENT_TYPE.HANGUP,O,a):O&&O.callAttributes&&O.callAttributes.participantType===N.PARTICIPANT_TYPE.INITIAL_CALLER?(S=Object.values(C).filter((function(t){return t.callType===N.CALL_TYPE.ADD_PARTICIPANT})).pop(),Lt(S.state===N.CALL_STATE.TRANSFERRING?N.EVENT_TYPE.PARTICIPANT_ADDED:N.EVENT_TYPE.PARTICIPANT_CONNECTED,{initialCallHasEnded:!0})):Lt(N.EVENT_TYPE.PARTICIPANT_REMOVED,{reason:O?O.reason:null},a));case 37:return t.abrupt("break",76);case 38:return Lt(N.EVENT_TYPE.MESSAGE,n,a),t.abrupt("break",76);case 40:return Lt(N.EVENT_TYPE.AFTER_CALL_WORK_STARTED,n,a),t.abrupt("break",76);case 42:return Lt(N.EVENT_TYPE.WRAP_UP_ENDED,n,a),t.abrupt("break",76);case 44:return Dt(n),t.abrupt("break",76);case 46:return gt(n,H,N.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE,N.EVENT_TYPE.MUTE_TOGGLE)&&Lt(N.EVENT_TYPE.MUTE_TOGGLE,n,a),t.abrupt("break",76);case 48:return I=n.isThirdPartyOnHold,d=n.isCustomerOnHold,p=n.calls,gt(n,J,N.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD,N.EVENT_TYPE.HOLD_TOGGLE)&&Lt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:I,isCustomerOnHold:d,calls:p},a),t.abrupt("break",76);case 51:return L=n.isRecordingPaused,f=n.contactId,h=n.initialContactId,G=n.instanceId,v=n.region,gt(n,F,N.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD,N.EVENT_TYPE.RECORDING_TOGGLE)&&Lt(N.EVENT_TYPE.RECORDING_TOGGLE,{isRecordingPaused:L,contactId:f,initialContactId:h,instanceId:G,region:v},a),t.abrupt("break",76);case 54:return gt(n,J,N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,N.EVENT_TYPE.PARTICIPANTS_SWAPPED)&&(D=n.isThirdPartyOnHold,b=n.isCustomerOnHold,Y=n.calls,Lt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:D,isCustomerOnHold:b,calls:Y},a)),t.abrupt("break",76);case 56:return gt(n,J,N.ERROR_TYPE.CAN_NOT_CONFERENCE,N.EVENT_TYPE.PARTICIPANTS_CONFERENCED)&&(U=n.isThirdPartyOnHold,V=n.isCustomerOnHold,Lt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:U,isCustomerOnHold:V},a)),t.abrupt("break",76);case 58:return gt(n,st)&&(n.stats&&St(n.stats),n.isAudioStatsCompleted&&n.callId&&(g=n.callId,M=Pt(),Lt(N.EVENT_TYPE.UPDATE_AUDIO_STATS_COMPLETED,{callId:g,mos:M},a))),t.abrupt("break",76);case 60:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR,N.EVENT_TYPE.SUPERVISOR_BARGED_IN)&&Lt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,n.call,a),t.abrupt("break",76);case 62:return gt(n,it,N.ERROR_TYPE.GENERIC_ERROR,N.EVENT_TYPE.CALL_BARGED_IN)&&Lt(N.EVENT_TYPE.CALL_BARGED_IN,n,a),t.abrupt("break",76);case 64:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,N.EVENT_TYPE.SUPERVISOR_CALL_STARTED)&&(m=!0,Lt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,n.call,a)),t.abrupt("break",76);case 66:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED)&&(m=!0,Lt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,n.call,a)),t.abrupt("break",76);case 68:return gt(n,ct,N.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR,N.EVENT_TYPE.SUPERVISOR_HANGUP)&&(m=!1,Lt(N.EVENT_TYPE.SUPERVISOR_HANGUP,n.calls,a)),t.abrupt("break",76);case 70:return gt(n,Tt,N.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS,N.EVENT_TYPE.SET_AGENT_STATUS)&&(k=n.statusId,Lt(N.EVENT_TYPE.SET_AGENT_STATUS,{statusId:k},a)),t.abrupt("break",76);case 72:return gt(n,_t,N.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS,N.EVENT_TYPE.GET_AGENT_STATUS)&&Lt(N.EVENT_TYPE.GET_AGENT_STATUS,n),t.abrupt("break",76);case 74:return gt(n,ot,N.ERROR_TYPE.INVALID_STATE_CHANGE_RESULT,N.EVENT_TYPE.STATE_CHANGE)&&Lt(N.EVENT_TYPE.STATE_CHANGE,n),t.abrupt("break",76);case 76:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}])})); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SCVConnectorBase",[],e):"object"==typeof exports?exports.SCVConnectorBase=e():t.SCVConnectorBase=e()}(this,(function(){return function(t){var e={};function E(n){if(e[n])return e[n].exports;var a=e[n]={i:n,l:!1,exports:{}};return t[n].call(a.exports,a,a.exports,E),a.l=!0,a.exports}return E.m=t,E.c=e,E.d=function(t,e,n){E.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},E.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},E.t=function(t,e){if(1&e&&(t=E(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(E.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)E.d(n,a,function(e){return t[e]}.bind(null,a));return n},E.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return E.d(e,"a",e),e},E.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},E.p="",E(E.s=12)}([function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e){t.exports=function(t,e,E){return e in t?Object.defineProperty(t,e,{value:E,enumerable:!0,configurable:!0,writable:!0}):t[e]=E,t}},function(t,e,E){t.exports=E(9)},function(t,e){function E(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=E=function(t){return typeof t}:t.exports=E=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},E(e)}t.exports=E},function(t,e){function E(t,e,E,n,a,r,T){try{var _=t[r](T),i=_.value}catch(t){return void E(t)}_.done?e(i):Promise.resolve(i).then(n,a)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(a,r){var T=t.apply(e,n);function _(t){E(T,a,r,_,i,"next",t)}function i(t){E(T,a,r,_,i,"throw",t)}_(void 0)}))}}},function(t,e){function E(e){return t.exports=E=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},E(e)}t.exports=E},function(t,e){function E(t,e){for(var E=0;E=0;--a){var r=this.tryEntries[a],T=r.completion;if("root"===r.tryLoc)return n("end");if(r.tryLoc<=this.prev){var _=E.call(r,"catchLoc"),i=E.call(r,"finallyLoc");if(_&&i){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&E.call(a,"finallyLoc")&&this.prev=0;--e){var E=this.tryEntries[e];if(E.finallyLoc===t)return this.complete(E.completion,E.afterLoc),d(E),s}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var E=this.tryEntries[e];if(E.tryLoc===t){var n=E.completion;if("throw"===n.type){var a=n.arg;d(E)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,E){return this.delegate={iterator:p(t),resultName:e,nextLoc:E},"next"===this.method&&(this.arg=void 0),s}},t}(t.exports);try{regeneratorRuntime=n}catch(t){Function("r","regeneratorRuntime = r")(n)}},function(t,e){function E(e,n){return t.exports=E=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},E(e,n)}t.exports=E},function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},function(t,e,E){"use strict";E.r(e),E.d(e,"initializeConnector",(function(){return yt})),E.d(e,"publishEvent",(function(){return kt})),E.d(e,"publishError",(function(){return Mt})),E.d(e,"publishLog",(function(){return mt})),E.d(e,"log",(function(){return v})),E.d(e,"Constants",(function(){return M})),E.d(e,"ActiveCallsResult",(function(){return w})),E.d(e,"AgentConfigResult",(function(){return x})),E.d(e,"AgentConfig",(function(){return j})),E.d(e,"CapabilitiesResult",(function(){return B})),E.d(e,"RecordingToggleResult",(function(){return F})),E.d(e,"ParticipantResult",(function(){return W})),E.d(e,"SignedRecordingUrlResult",(function(){return X})),E.d(e,"PhoneContactsResult",(function(){return Q})),E.d(e,"CallResult",(function(){return q})),E.d(e,"HangupResult",(function(){return K})),E.d(e,"HoldToggleResult",(function(){return J})),E.d(e,"InitResult",(function(){return z})),E.d(e,"GenericResult",(function(){return $})),E.d(e,"MuteToggleResult",(function(){return H})),E.d(e,"LogoutResult",(function(){return Z})),E.d(e,"CallInfo",(function(){return tt})),E.d(e,"PhoneCall",(function(){return nt})),E.d(e,"PhoneCallAttributes",(function(){return Et})),E.d(e,"Contact",(function(){return et})),E.d(e,"Phone",(function(){return k})),E.d(e,"AgentStatusInfo",(function(){return Tt})),E.d(e,"AudioStatsElement",(function(){return Nt})),E.d(e,"AudioStats",(function(){return st})),E.d(e,"StatsInfo",(function(){return At})),E.d(e,"VendorConnector",(function(){return at})),E.d(e,"SuperviseCallResult",(function(){return lt})),E.d(e,"SupervisorHangupResult",(function(){return ct})),E.d(e,"SupervisedCallInfo",(function(){return ot})),E.d(e,"AgentVendorStatusInfo",(function(){return _t})),E.d(e,"StateChangeResult",(function(){return it}));var n=E(2),a=E.n(n),r=E(1),T=E.n(r),_=E(4),i=E.n(_),o=E(3),s=E.n(o),N={MESSAGE_TYPE:{SETUP_CONNECTOR:"SETUP_CONNECTOR",CONNECTOR_READY:"CONNECTOR_READY",LOG:"LOG",TELEPHONY_EVENT_DISPATCHED:"TELEPHONY_EVENT_DISPATCHED",ACCEPT_CALL:"ACCEPT_CALL",DECLINE_CALL:"DECLINE_CALL",END_CALL:"END_CALL",MUTE:"MUTE",UNMUTE:"UNMUTE",HOLD:"HOLD",RESUME:"RESUME",SET_AGENT_STATUS:"SET_AGENT_STATUS",GET_AGENT_STATUS:"GET_AGENT_STATUS",DIAL:"DIAL",SEND_DIGITS:"SEND_DIGITS",GET_PHONE_CONTACTS:"GET_PHONE_CONTACTS",SWAP_PARTICIPANTS:"SWAP_PARTICIPANTS",ADD_PARTICIPANT:"ADD_PARTICIPANT",CONFERENCE:"CONFERENCE",PAUSE_RECORDING:"PAUSE_RECORDING",RESUME_RECORDING:"RESUME_RECORDING",LOGOUT:"LOGOUT",MESSAGE:"MESSAGE",WRAP_UP_CALL:"WRAP_UP_CALL",AGENT_AVAILABLE:"AGENT_AVAILABLE",SET_AGENT_CONFIG:"SET_AGENT_CONFIG",GET_SIGNED_RECORDING_URL:"GET_SIGNED_RECORDING_URL",DOWNLOAD_VENDOR_LOGS:"DOWNLOAD_VENDOR_LOGS",SUPERVISE_CALL:"SUPERVISE_CALL",SUPERVISOR_BARGE_IN:"SUPERVISOR_BARGE_IN",SUPERVISOR_DISCONNECT:"SUPERVISOR_DISCONNECT"},EVENT_TYPE:{QUEUED_CALL_STARTED:"QUEUED_CALL_STARTED",CALL_STARTED:"CALL_STARTED",CALL_CONNECTED:"CALL_CONNECTED",CALL_FAILED:"CALL_FAILED",MUTE_TOGGLE:"MUTE_TOGGLE",HOLD_TOGGLE:"HOLD_TOGGLE",HANGUP:"HANGUP",ERROR:"ERROR",WARNING:"WARNING",INFO:"INFO",PHONE_CONTACTS:"PHONE_CONTACTS",PARTICIPANT_ADDED:"PARTICIPANT_ADDED",PARTICIPANT_CONNECTED:"PARTICIPANT_CONNECTED",PARTICIPANT_REMOVED:"PARTICIPANT_REMOVED",LOGIN_STARTED:"LOGIN_STARTED",LOGIN_RESULT:"LOGIN_RESULT",LOGOUT_RESULT:"LOGOUT_RESULT",RECORDING_TOGGLE:"RECORDING_TOGGLE",PARTICIPANTS_SWAPPED:"PARTICIPANTS_SWAPPED",PARTICIPANTS_CONFERENCED:"PARTICIPANTS_CONFERENCED",SHOW_LOGIN:"SHOW_LOGIN",SET_AGENT_STATUS_RESULT:"SET_AGENT_STATUS_RESULT",GET_AGENT_STATUS_RESULT:"GET_AGENT_STATUS_RESULT",WRAP_UP_ENDED:"WRAP_UP_ENDED",MESSAGE:"MESSAGE",AFTER_CALL_WORK_STARTED:"AFTER_CALL_WORK_STARTED",AGENT_CONFIG_UPDATED:"AGENT_CONFIG_UPDATED",AGENT_ERROR:"AGENT_ERROR",SOFTPHONE_ERROR:"SOFTPHONE_ERROR",SIGNED_RECORDING_URL:"SIGNED_RECORDING_URL",UPDATE_AUDIO_STATS:"UPDATE_AUDIO_STATS",UPDATE_AUDIO_STATS_COMPLETED:"UPDATE_AUDIO_STATS_COMPLETED",SUPERVISOR_BARGED_IN:"SUPERVISOR_BARGED_IN",SUPERVISOR_CALL_STARTED:"SUPERVISOR_CALL_STARTED",SUPERVISOR_CALL_CONNECTED:"SUPERVISOR_CALL_CONNECTED",SUPERVISOR_HANGUP:"SUPERVISOR_HANGUP",CALL_BARGED_IN:"CALL_BARGED_IN",SET_AGENT_STATUS:"SET_AGENT_STATUS",GET_AGENT_STATUS:"GET_AGENT_STATUS",STATE_CHANGE:"STATE_CHANGE"},INFO_TYPE:{CAN_NOT_ACCEPT_THE_CALL:"CAN_NOT_ACCEPT_THE_CALL"},ERROR_TYPE:{GENERIC_ERROR:"GENERIC_ERROR",AGENT_ERROR:"AGENT_ERROR",MICROPHONE_NOT_SHARED:"MICROPHONE_NOT_SHARED",UNSUPPORTED_BROWSER:"UNSUPPORTED_BROWSER",AUTHENTICATION_ERROR:"AUTHENTICATION_ERROR",INVALID_AGENT_STATUS:"INVALID_AGENT_STATUS",CAN_NOT_SET_AGENT_STATUS:"CAN_NOT_SET_AGENT_STATUS",LOGIN_REQUIRED:"LOGIN_REQUIRED",CAN_NOT_DECLINE_THE_CALL:"CAN_NOT_DECLINE_THE_CALL",CAN_NOT_END_THE_CALL:"CAN_NOT_END_THE_CALL",CAN_NOT_HOLD_CALL:"CAN_NOT_HOLD_CALL",CAN_NOT_RESUME_CALL:"CAN_NOT_RESUME_CALL",CAN_NOT_MUTE_CALL:"CAN_NOT_MUTE_CALL",CAN_NOT_UNMUTE_CALL:"CAN_NOT_UNMUTE_CALL",CAN_NOT_TOGGLE_MUTE:"CAN_NOT_TOGGLE_MUTE",CAN_NOT_TOGGLE_HOLD:"CAN_NOT_TOGGLE_HOLD",CAN_NOT_TOGGLE_RECORD:"CAN_NOT_TOGGLE_RECORD",INVALID_PARTICIPANT:"INVALID_PARTICIPANT",CAN_NOT_LOG_IN:"CAN_NOT_LOG_IN",CAN_NOT_LOG_OUT:"CAN_NOT_LOG_OUT",INVALID_PARAMS:"INVALID_PARAMS",CAN_NOT_GET_PHONE_CONTACTS:"CAN_NOT_GET_PHONE_CONTACTS",CAN_NOT_SWAP_PARTICIPANTS:"CAN_NOT_SWAP_PARTICIPANTS",CAN_NOT_CONFERENCE:"CAN_NOT_CONFERENCE",INVALID_DESTINATION:"INVALID_DESTINATION",INVALID_PHONE_NUMBER:"INVALID_PHONE_NUMBER",CAN_NOT_HANGUP_PARTICIPANT:"CAN_NOT_HANGUP_PARTICIPANT",CAN_NOT_ADD_PARTICIPANT:"CAN_NOT_ADD_PARTICIPANT",CAN_NOT_CONNECT_PARTICIPANT:"CAN_NOT_CONNECT_PARTICIPANT",CAN_NOT_START_THE_CALL:"CAN_NOT_START_THE_CALL",CAN_NOT_PAUSE_RECORDING:"CAN_NOT_PAUSE_RECORDING",CAN_NOT_RESUME_RECORDING:"CAN_NOT_RESUME_RECORDING",CAN_NOT_SET_AGENT_CONFIG:"CAN_NOT_SET_AGENT_CONFIG",CAN_NOT_SET_CAPABILITIES:"CAN_NOT_SET_CAPABILITIES",CAN_NOT_UPDATE_PHONE_NUMBER:"CAN_NOT_UPDATE_PHONE_NUMBER",CAN_NOT_GET_SIGNED_RECORDING_URL:"CAN_NOT_GET_SIGNED_RECORDING_URL",CAN_NOT_SUPERVISE_CALL:"CAN_NOT_SUPERVISE_CALL",CAN_NOT_DISCONNECT_SUPERVISOR:"CAN_NOT_DISCONNECT_SUPERVISOR",CAN_NOT_BARGE_IN_SUPERVISOR:"CAN_NOT_BARGE_IN_SUPERVISOR",CAN_NOT_BARGE_IN_CALL:"CAN_NOT_BARGE_IN_CALL",CAN_NOT_GET_AGENT_STATUS:"CAN_NOT_GET_AGENT_STATUS",INVALID_STATE_CHANGE_RESULT:"INVALID_STATE_CHANGE_RESULT"},AGENT_STATUS:{ONLINE:"Online",OFFLINE:"Offline",ACW:"AfterCallWork",CALLBACK_MISSED_OR_REJECTED:"CallbackMissedOrRejected"},PARTICIPANT_TYPE:{AGENT:"Agent",INITIAL_CALLER:"Initial_Caller",THIRD_PARTY:"Third_Party",SUPERVISOR:"Supervisor"},CALL_TYPE:{INBOUND:"Inbound",OUTBOUND:"Outbound",CALLBACK:"Callback",ADD_PARTICIPANT:"AddParticipant",TRANSFER:"Transfer"},DIALER_TYPE:{OUTBOUND_PREVIEW:"OutboundPreview",NONE:"None"},CONTACT_TYPE:{PHONEBOOK:"PhoneBook",QUEUE:"Queue",PHONENUMBER:"PhoneNumber",AGENT:"Agent",FLOW:"Flow"},AGENT_CONFIG_TYPE:{SHOW_AGENT_SETTINGS:"SHOW_AGENT_SETTINGS",PHONES:"PHONES",SELECTED_PHONE:"SELECTED_PHONE"},CAPABILITIES_TYPE:{MUTE:"MUTE",RECORD:"RECORD",MERGE:"MERGE",SWAP:"SWAP",SIGNED_RECORDING_URL:"SIGNED_RECORDING_URL",DEBUG_ENABLED:"DEBUG_ENABLED",CONTACT_SEARCH:"CONTACT_SEARCH",VENDOR_PROVIDED_AVAILABILITY:"VENDOR_PROVIDED_AVAILABILITY",VENDOR_PROVIDED_QUEUE_WAIT_TIME:"VENDOR_PROVIDED_QUEUE_WAIT_TIME",SUPERVISOR_LISTEN_IN:"SUPERVISOR_LISTEN_IN",SUPERVISOR_BARGE_IN:"SUPERVISOR_BARGE_IN",MOS:"MOS",BLIND_TRANSFER:"BLIND_TRANSFER",TRANSFER_TO_OMNI_FLOW:"TRANSFER_TO_OMNI_FLOW",PENDING_STATUS_CHANGE:"PENDING_STATUS_CHANGE"},CALL_STATE:{RINGING:"ringing",CONNECTED:"connected",TRANSFERRING:"transferring",TRANSFERRED:"transferred",ENDED:"ended"},PHONE_TYPE:{DESK_PHONE:"DESK_PHONE",SOFT_PHONE:"SOFT_PHONE"},HANGUP_REASON:{PHONE_CALL_ERROR:"error",PHONE_CALL_ENDED:"ended"},AGENT_AVAILABILITY:{AVAILABLE:"AVAILABLE",BUSY:"BUSY",OFFLINE:"OFFLINE"},REMOVE_PARTICIPANT_VARIANT:{ALWAYS:"ALWAYS",NEVER:"NEVER",ALWAYS_EXCEPT_ON_HOLD:"ALWAYS_EXCEPT_ON_HOLD"},LOG_LEVEL:{ERROR:"ERROR",INFO:"INFO"},LOG_SOURCE:{SYSTEM:"SYSTEM",PARTNER:"PARTNER"},CONTACTS_FILTER_TYPES:{AGENT:"AGENT",QUEUE:"QUEUE",CONTACT:"CONTACT",DIRECTORY:"DIRECTORY",FLOW:"FLOW",AVAILABLE:"AVAILABLE"}},A=["/internalNameLabel","/reqGeneralInfo/reqAdapterUrl","/reqGeneralInfo/reqVendorInfoApiName","isACWAllowed","isHVSEnabled","orgDomainName","phoneServiceChannelId","telephonySettingsComponentFqn"],l=["/reqHvcc"],c=E(7),u=E.n(c),R=E(8),O=E.n(R),P=E(5),C=E.n(P),S=E(6),I=E.n(S),d=E(0),L=E.n(d);var p=function(t){return"string"==typeof t?t:JSON.stringify(t)},h=0,f=[];function v(t,e,E){!function(t,e,E){if(!e)throw new Error("Log Message required");t=t||N.LOG_LEVEL.INFO,E=E||N.LOG_SOURCE.PARTNER;var n=[(new Date).toISOString(),p(t),p(E),"".concat(p(e),"\n")].join("|");h+n.length>=75e5&&(f=[],h=0),h+=n.length,f.push(n)}(e,t,E)}function G(){return JSON.parse(JSON.stringify(f))}function D(){!function(t,e,E){if(document&&t){var n="string"==typeof t?t:JSON.stringify(t),a=new Blob([n],{type:E}),r=document.createElement("a"),T=URL.createObjectURL(a);r.download=e,r.href=T,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(T)}}(f.join(""),"log-".concat((new Date).getTime(),".txt"),"text/plain")}function b(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var E,n=C()(t);if(e){var a=C()(this).constructor;E=Reflect.construct(n,arguments,a)}else E=n.apply(this,arguments);return O()(this,E)}}function Y(t,e){var E=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),E.push.apply(E,n)}return E}function U(t){for(var e=1;e0&&n.forEach((function(t){rt.validateClassObject(t,nt)})),this.activeCalls=n},B=function t(e){var E=e.hasMute,n=void 0===E||E,a=e.hasRecord,r=void 0===a||a,T=e.hasMerge,_=void 0===T||T,i=e.hasSwap,o=void 0===i||i,s=e.hasSignedRecordingUrl,N=void 0!==s&&s,A=e.debugEnabled,l=void 0===A||A,c=e.hasContactSearch,u=void 0!==c&&c,R=e.hasAgentAvailability,O=void 0!==R&&R,P=e.hasQueueWaitTime,C=void 0!==P&&P,S=e.supportsMos,I=void 0!==S&&S,d=e.hasSupervisorListenIn,p=void 0!==d&&d,h=e.hasSupervisorBargeIn,f=void 0!==h&&h,v=e.hasBlindTransfer,G=void 0!==v&&v,D=e.hasTransferToOmniFlow,b=void 0!==D&&D,Y=e.hasPendingStatusChange,U=void 0!==Y&&Y;L()(this,t),rt.validateBoolean(n),rt.validateBoolean(r),rt.validateBoolean(_),rt.validateBoolean(o),rt.validateBoolean(N),rt.validateBoolean(l),rt.validateBoolean(u),rt.validateBoolean(O),rt.validateBoolean(C),rt.validateBoolean(I),rt.validateBoolean(p),rt.validateBoolean(f),rt.validateBoolean(G),rt.validateBoolean(b),rt.validateBoolean(U),this.hasMute=n,this.hasRecord=r,this.hasMerge=_,this.hasSwap=o,this.hasSignedRecordingUrl=N,this.debugEnabled=l,this.hasContactSearch=u,this.hasAgentAvailability=O,this.hasQueueWaitTime=C,this.supportsMos=I,this.hasSupervisorListenIn=p,this.hasSupervisorBargeIn=f,this.hasBlindTransfer=G,this.hasTransferToOmniFlow=b,this.hasPendingStatusChange=U},x=function t(e){var E=e.phones,n=void 0===E?[N.PHONE_TYPE.SOFT_PHONE]:E,a=e.selectedPhone,r=void 0===a?new k({type:N.PHONE_TYPE.SOFT_PHONE}):a;L()(this,t),rt.validateClassObject(n,Array),rt.validateClassObject(r,k),this.phones=n,this.selectedPhone=r},j=function t(e){var E=e.selectedPhone;L()(this,t),rt.validateClassObject(E,k),this.selectedPhone=E},F=function t(e){var E=e.isRecordingPaused,n=e.contactId,a=void 0===n?null:n,r=e.initialContactId,T=void 0===r?null:r,_=e.instanceId,i=void 0===_?null:_,o=e.region,s=void 0===o?null:o;L()(this,t),this.isRecordingPaused=E,this.contactId=a,this.initialContactId=T,this.instanceId=i,this.region=s},W=function t(e){var E=e.initialCallHasEnded,n=e.callInfo,a=e.phoneNumber,r=e.callId;L()(this,t),rt.validateClassObject(n,tt),this.initialCallHasEnded=E,this.callInfo=n,this.phoneNumber=a,this.callId=r},Q=function t(e){var E=e.contacts,n=void 0===E?[]:E,a=e.contactTypes,r=void 0===a?[]:a;L()(this,t),n.length>0&&n.forEach((function(t){rt.validateClassObject(t,et)})),r.length>0&&r.forEach((function(t){rt.validateEnum(t,Object.values(N.CONTACT_TYPE))})),this.contacts=n,this.contactTypes=r},q=function t(e){var E=e.call;L()(this,t),void 0!==E&&rt.validateClassObject(E,nt),this.call=E},K=function t(e){var E=e.calls;L()(this,t),E instanceof Array?(E.forEach((function(t){return rt.validateClassObject(t,nt)})),this.calls=E):(rt.validateClassObject(E,nt),this.calls=[E])},J=function t(e){var E=e.isThirdPartyOnHold,n=e.isCustomerOnHold,a=e.calls;L()(this,t),a&&(Object.values(a).forEach((function(t){rt.validateClassObject(t,nt)})),this.calls=a),this.isThirdPartyOnHold=E,this.isCustomerOnHold=n},X=function t(e){var E=e.success,n=e.url,a=e.duration,r=e.callId;L()(this,t),E&&(rt.validateString(n),rt.validateString(r),a&&rt.validateNumber(a)),this.success=E,this.url=n,this.duration=a,this.callId=r},z=function t(e){var E=e.showLogin,n=void 0!==E&&E,a=e.loginFrameHeight,r=void 0===a?350:a;L()(this,t),this.showLogin=n,this.loginFrameHeight=r},$=function t(e){var E=e.success;L()(this,t),this.success=E},Z=function t(e){var E=e.success,n=e.loginFrameHeight,a=void 0===n?350:n;L()(this,t),this.success=E,this.loginFrameHeight=a},tt=function t(e){var E=e.callStateTimestamp,n=void 0===E?null:E,a=e.isOnHold,r=e.isMuted,T=void 0!==r&&r,_=e.isRecordingPaused,i=void 0!==_&&_,o=e.initialCallId,s=e.isSoftphoneCall,A=void 0===s||s,l=e.acceptEnabled,c=void 0===l||l,u=e.declineEnabled,R=void 0===u||u,O=e.muteEnabled,P=void 0===O||O,C=e.swapEnabled,S=void 0===C||C,I=e.conferenceEnabled,d=void 0===I||I,p=e.holdEnabled,h=void 0===p||p,f=e.recordEnabled,v=void 0===f||f,G=e.addCallerEnabled,D=void 0===G||G,b=e.extensionEnabled,Y=void 0===b||b,U=e.isReplayable,V=void 0===U||U,g=e.isBargeable,y=void 0!==g&&g,m=e.isExternalTransfer,k=e.showMuteButton,H=void 0===k||k,w=e.showRecordButton,B=void 0===w||w,x=e.showAddCallerButton,j=void 0===x||x,F=e.showAddBlindTransferButton,W=void 0===F||F,Q=e.showMergeButton,q=void 0===Q||Q,K=e.showSwapButton,J=void 0===K||K,X=e.removeParticipantVariant,z=void 0===X?M.REMOVE_PARTICIPANT_VARIANT.ALWAYS:X;L()(this,t),n&&rt.validateDate(n),rt.validateBoolean(i),rt.validateBoolean(T),rt.validateBoolean(A),rt.validateBoolean(c),rt.validateBoolean(R),rt.validateBoolean(P),rt.validateBoolean(S),rt.validateBoolean(d),rt.validateBoolean(h),rt.validateBoolean(v),rt.validateBoolean(D),rt.validateBoolean(Y),rt.validateBoolean(y),rt.validateBoolean(H),rt.validateBoolean(B),rt.validateBoolean(j),rt.validateBoolean(W),rt.validateBoolean(q),rt.validateBoolean(J),void 0!==m&&rt.validateBoolean(m),rt.validateEnum(z,Object.values(N.REMOVE_PARTICIPANT_VARIANT)),this.callStateTimestamp=n,this.isRecordingPaused=i,this.isMuted=T,this.isOnHold=a,this.initialCallId=o,this.isSoftphoneCall=A,this.acceptEnabled=c,this.declineEnabled=R,this.muteEnabled=P,this.swapEnabled=S,this.conferenceEnabled=d,this.holdEnabled=h,this.recordEnabled=v,this.addCallerEnabled=D,this.extensionEnabled=Y,this.isReplayable=V,this.isBargeable=y,this.isExternalTransfer=m,this.removeParticipantVariant=z,this.showMuteButton=H,this.showRecordButton=B,this.showAddCallerButton=j,this.showAddBlindTransferButton=W,this.showMergeButton=q,this.showSwapButton=J},et=function t(e){var E=e.phoneNumber,n=e.id,a=e.type,r=e.name,T=e.prefix,_=e.extension,i=e.endpointARN,o=e.queue,s=e.availability,A=e.recordId,l=e.description,c=e.queueWaitTime;L()(this,t),E&&rt.validateString(E),a&&rt.validateEnum(a,Object.values(N.CONTACT_TYPE)),n&&rt.validateString(n),r&&rt.validateString(r),T&&rt.validateString(T),_&&rt.validateString(_),s&&rt.validateEnum(s,Object.values(N.AGENT_AVAILABILITY)),A&&rt.validateString(A),l&&rt.validateString(l),c&&rt.validateString(c),this.phoneNumber=E,this.id=n,this.type=a,this.name=r,this.prefix=T,this.extension=_,this.endpointARN=i,this.queue=o,N.CONTACT_TYPE.AGENT===this.type?this.availability=s:this.availability=null,this.queueWaitTime=c,this.recordId=A,this.description=l},Et=function t(e){var E=e.voiceCallId,n=e.participantType,a=e.dialerType,r=void 0===a?M.DIALER_TYPE.NONE:a,T=e.parentId,_=e.isOnHold,i=e.hasSupervisorBargedIn,o=void 0!==i&&i;L()(this,t),E&&rt.validateString(E),n&&rt.validateEnum(n,Object.values(N.PARTICIPANT_TYPE)),T&&rt.validateString(T),void 0!==_&&rt.validateBoolean(_),rt.validateBoolean(o),rt.validateEnum(r,Object.values(N.DIALER_TYPE)),this.voiceCallId=E,this.participantType=n,this.parentId=T,this.isOnHold=_,this.dialerType=r,this.hasSupervisorBargedIn=o},nt=function t(e){var E=e.callId,n=e.callType,a=e.contact,r=e.state,T=e.callAttributes,_=e.phoneNumber,i=e.callInfo,o=e.reason,s=e.closeCallOnError,A=e.agentStatus;L()(this,t),E&&(rt.validateString(E),this.callId=E),n&&(rt.validateEnum(n,Object.values(N.CALL_TYPE)),this.callType=n),_&&(rt.validateString(_),this.phoneNumber=_),i&&(rt.validateClassObject(i,tt),this.callInfo=i),a&&(rt.validateClassObject(a,et),this.contact=a),o&&(this.reason=o),s&&(this.closeCallOnError=s),A&&(this.agentStatus=A),this.state=r,this.callAttributes=T},at=function(){function t(){L()(this,t)}return I()(t,[{key:"init",value:function(t){throw new Error("Not implemented")}},{key:"getActiveCalls",value:function(){throw new Error("Not implemented")}},{key:"acceptCall",value:function(t){throw new Error("Not implemented")}},{key:"declineCall",value:function(t){throw new Error("Not implemented")}},{key:"endCall",value:function(t,e){throw new Error("Not implemented")}},{key:"mute",value:function(){throw new Error("Not implemented")}},{key:"unmute",value:function(){throw new Error("Not implemented")}},{key:"hold",value:function(t){throw new Error("Not implemented")}},{key:"resume",value:function(t){throw new Error("Not implemented")}},{key:"setAgentStatus",value:function(t,e,E){throw new Error("Not implemented")}},{key:"getAgentStatus",value:function(){this.logMessageToVendor(N.LOG_LEVEL.INFO,"getAgentStatus API is NOT Implemented")}},{key:"dial",value:function(t){throw new Error("Not implemented")}},{key:"sendDigits",value:function(t){throw new Error("Not implemented")}},{key:"getPhoneContacts",value:function(){throw new Error("Not implemented")}},{key:"swap",value:function(t,e){throw new Error("Not implemented")}},{key:"conference",value:function(t){throw new Error("Not implemented")}},{key:"addParticipant",value:function(t,e){throw new Error("Not implemented")}},{key:"pauseRecording",value:function(t){throw new Error("Not implemented")}},{key:"resumeRecording",value:function(t){throw new Error("Not implemented")}},{key:"getAgentConfig",value:function(){throw new Error("Not implemented")}},{key:"setAgentConfig",value:function(t){throw new Error("Not implemented")}},{key:"getCapabilities",value:function(){throw new Error("Not implemented")}},{key:"logout",value:function(){throw new Error("Not implemented")}},{key:"handleMessage",value:function(t){throw new Error("Not implemented")}},{key:"wrapUpCall",value:function(t){throw new Error("Not implemented")}},{key:"getSignedRecordingUrl",value:function(t,e,E){throw new Error("Not implemented")}},{key:"downloadLogs",value:function(t){D()}},{key:"logMessageToVendor",value:function(t,e,E){}},{key:"superviseCall",value:function(t){throw new Error("Not implemented")}},{key:"supervisorDisconnect",value:function(t){throw new Error("Not implemented")}},{key:"supervisorBargeIn",value:function(t){throw new Error("Not implemented")}}]),t}(),rt=function(){function t(){L()(this,t)}return I()(t,null,[{key:"validateString",value:function(t){if("string"!=typeof t)throw new Error("Invalid argument. Expecting a string but got ".concat(s()(t)));return this}},{key:"validateNumber",value:function(t){if("number"!=typeof t)throw new Error("Invalid argument. Expecting a number but got ".concat(s()(t)));return this}},{key:"validateBoolean",value:function(t){if("boolean"!=typeof t)throw new Error("Invalid argument. Expecting a boolean but got ".concat(s()(t)));return this}},{key:"validateEnum",value:function(t,e){if(!new RegExp(e.join("|"),"i").test(t))throw new Error("Invalid argument. Expecting a value from ".concat(JSON.stringify(e)," but got ").concat(t));return this}},{key:"validateDate",value:function(t){if(!(t instanceof Date))throw new Error("Invalid argument. Expecting a Date object but got ".concat(s()(t)));return this}},{key:"validateClassObject",value:function(t,e){if(!(t instanceof e))throw new Error("Invalid className. Expecting object of class ".concat(e," but got ").concat(s()(t)));return this}}]),t}(),Tt=function t(e){var E=e.statusId,n=e.statusApiName,a=e.statusName;L()(this,t),rt.validateString(E),n&&rt.validateString(n),a&&rt.validateString(a),this.statusId=E,this.statusApiName=n,this.statusName=a},_t=function t(e){var E=e.statusId,n=e.statusType,a=e.statusName;L()(this,t),E&&rt.validateString(E),n&&rt.validateString(n),a&&rt.validateString(a),this.statusId=E,this.statusType=n,this.statusName=a},it=function t(e){var E=e.newVendorStateInfo,n=e.oldVendorStateInfo;L()(this,t),rt.validateClassObject(E,_t),rt.validateString(E.statusName),n&&rt.validateClassObject(n,_t),this.newVendorStateInfo=E,this.oldVendorStateInfo=n},ot=function t(e){var E=e.callId,n=e.voiceCallId,a=e.callType,r=e.from,T=e.to,_=e.supervisorName,i=e.isBargedIn;L()(this,t),rt.validateString(E),this.callId=E,this.voiceCallId=n,this.callType=a,this.from=r,this.to=T,this.supervisorName=_,this.isBargedIn=i},st=function t(e){var E=e.callId,n=e.stats,a=e.isAudioStatsCompleted;L()(this,t),E&&(rt.validateString(E),this.callId=E),n&&(rt.validateClassObject(n,Array),n.forEach((function(t){return rt.validateClassObject(t,Nt)})),this.stats=n),a&&(rt.validateBoolean(a),this.isAudioStatsCompleted=a)},Nt=function t(e){var E=e.inputChannelStats,n=e.outputChannelStats;L()(this,t),E&&rt.validateClassObject(E,At),n&&rt.validateClassObject(n,At),this.inputChannelStats=E,this.outputChannelStats=n},At=function t(e){var E=e.packetsCount,n=e.packetsLost,a=e.jitterBufferMillis,r=e.roundTripTimeMillis;L()(this,t),E=null==E||E<0?0:E,n=null==n||n<0?0:n,a=null==a||a<0?0:a,r=null==r||r<0?0:r,this.statsCount=0,this.packetsCount=E,this.packetsLost=n,this.jitterBufferMillis=a,this.roundTripTimeMillis=r},lt=function t(e){var E=e.call;L()(this,t),rt.validateClassObject(E,nt),this.call=E},ct=function(t){u()(E,t);var e=b(E);function E(t){var n=t.calls;return L()(this,E),e.call(this,{calls:n})}return E}(K),ut=!1;function Rt(t){var e=function(t){var e=V[t];return{packetsCount:e.packetsCount/e.statsCount,packetsLost:e.packetsLost/e.statsCount,jitterBufferMillis:e.jitterBufferMillis/e.statsCount,roundTripTimeMillis:e.roundTripTimeMillis/e.statsCount}}(t),E=e.roundTripTimeMillis+2*e.jitterBufferMillis+10,n=0;return n=E<160?93.2-E/40:93.2-(E-120)/10,1+.035*(n-=e.packetsLost/e.packetsCount*2.5)+7e-6*n*(n-60)*(100-n)}function Ot(){ut=!0}function Pt(){if(ut&&V){var t=Rt("inputChannelStats"),e=Rt("outputChannelStats");return V=null,isNaN(e)&&isNaN(t)?0:isNaN(e)?t:isNaN(t)?e:Math.min(t,e)}}function Ct(){V=new Nt({inputChannelStats:new At({packetsCount:0,packetsLost:0,jitterBufferMillis:0,roundTripTimeMillis:0}),outputChannelStats:new At({packetsCount:0,packetsLost:0,jitterBufferMillis:0,roundTripTimeMillis:0})})}function St(t){V&&t.forEach((function(t){t.inputChannelStats&&(V.inputChannelStats.statsCount++,V.inputChannelStats.packetsCount+=0|t.inputChannelStats.packetsCount,V.inputChannelStats.packetsLost+=0|t.inputChannelStats.packetsLost,V.inputChannelStats.jitterBufferMillis+=0|t.inputChannelStats.jitterBufferMillis,V.inputChannelStats.roundTripTimeMillis+=0|t.inputChannelStats.roundTripTimeMillis),t.outputChannelStats&&(V.outputChannelStats.statsCount++,V.outputChannelStats.packetsCount+=0|t.outputChannelStats.packetsCount,V.outputChannelStats.packetsLost+=0|t.outputChannelStats.packetsLost,V.outputChannelStats.jitterBufferMillis+=0|t.outputChannelStats.jitterBufferMillis,V.outputChannelStats.roundTripTimeMillis+=0|t.outputChannelStats.roundTripTimeMillis)}))}function It(t){return t&&t.type?t.type:t}function dt(t){return t&&t.message?t.message:t}function Lt(t,e,E){var n=function t(e){if(e){if("function"==typeof e)return;if("object"===s()(e)){var E=Array.isArray(e),n=E?[]:{};if(E)e.forEach((function(e){n.push(t(e))}));else for(var a in e)"phoneNumber"!==a&&"number"!==a&&"name"!==a&&"callAttributes"!==a&&(n[a]=t(e[a]));return n}}return e}(e);v({eventType:t,payload:e},E?N.LOG_LEVEL.ERROR:N.LOG_LEVEL.INFO,N.LOG_SOURCE.SYSTEM),g.postMessage({type:N.MESSAGE_TYPE.LOG,payload:{eventType:t,payload:n,isError:E}})}function pt(t,e){var E=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];g.postMessage({type:N.MESSAGE_TYPE.TELEPHONY_EVENT_DISPATCHED,payload:{telephonyEventType:t,telephonyEventPayload:e}}),E&&Lt(t,e,!1)}function ht(t,e,E){console.error("SCV dispatched error ".concat(t," for eventType ").concat(E),e),pt(N.EVENT_TYPE.ERROR,{message:N.ERROR_TYPE[t]},!1),Lt(E,{errorType:t,error:e},!0)}function ft(t,e){console.info("SCV info message dispatched for eventType ".concat(t," with payload ").concat(JSON.stringify(e))),pt(N.EVENT_TYPE.INFO,{message:N.INFO_TYPE[t]},!1),Lt(t,e,!1)}function vt(){return Gt.apply(this,arguments)}function Gt(){return(Gt=i()(a.a.mark((function t(){var e,E,n,r,_,i,o,s;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,y.getAgentConfig();case 3:return n=t.sent,t.next=6,y.getCapabilities();case 6:return r=t.sent,rt.validateClassObject(n,x),rt.validateClassObject(r,B),r.supportsMos&&Ot(),t.next=12,y.getActiveCalls();case 12:_=t.sent,rt.validateClassObject(_,w),i=_.activeCalls,o=N.MESSAGE_TYPE.CONNECTOR_READY,s={agentConfig:(e={},T()(e,N.AGENT_CONFIG_TYPE.PHONES,n.phones),T()(e,N.AGENT_CONFIG_TYPE.SELECTED_PHONE,n.selectedPhone),e),capabilities:(E={},T()(E,N.CAPABILITIES_TYPE.MUTE,r.hasMute),T()(E,N.CAPABILITIES_TYPE.RECORD,r.hasRecord),T()(E,N.CAPABILITIES_TYPE.MERGE,r.hasMerge),T()(E,N.CAPABILITIES_TYPE.SWAP,r.hasSwap),T()(E,N.CAPABILITIES_TYPE.SIGNED_RECORDING_URL,r.hasSignedRecordingUrl),T()(E,N.CAPABILITIES_TYPE.DEBUG_ENABLED,r.debugEnabled),T()(E,N.CAPABILITIES_TYPE.CONTACT_SEARCH,r.hasContactSearch),T()(E,N.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY,r.hasAgentAvailability),T()(E,N.CAPABILITIES_TYPE.VENDOR_PROVIDED_QUEUE_WAIT_TIME,r.hasQueueWaitTime),T()(E,N.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN,r.hasSupervisorListenIn),T()(E,N.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN,r.hasSupervisorBargeIn),T()(E,N.CAPABILITIES_TYPE.MOS,r.supportsMos),T()(E,N.CAPABILITIES_TYPE.BLIND_TRANSFER,r.hasBlindTransfer),T()(E,N.CAPABILITIES_TYPE.TRANSFER_TO_OMNI_FLOW,r.hasTransferToOmniFlow),T()(E,N.CAPABILITIES_TYPE.PENDING_STATUS_CHANGE,r.hasPendingStatusChange),E),callInProgress:i.length>0?i[0]:null},g.postMessage({type:o,payload:s}),Lt(o,s,!1),t.next=25;break;case 21:t.prev=21,t.t0=t.catch(0),g.postMessage({type:N.MESSAGE_TYPE.CONNECTOR_READY,payload:{}}),Lt(N.MESSAGE_TYPE.CONNECTOR_READY,{},!1);case 25:case"end":return t.stop()}}),t,null,[[0,21]])})))).apply(this,arguments)}function Dt(t){return bt.apply(this,arguments)}function bt(){return(bt=i()(a.a.mark((function t(e){var E,n,r,T,_,i,o,s,A,l,c,u,R,O,P,C,S,I,d,L,p,h,f,v,D,b,Y,U,V,g,M,k,H,B,x,j,F,W,J,z,tt,Et,nt,at,Tt,it,ot,st,Nt,At,ut,Rt;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:(E=e.data.type)!==N.MESSAGE_TYPE.LOG&&Lt(E,e.data,!1),t.t0=E,t.next=t.t0===N.MESSAGE_TYPE.ACCEPT_CALL?5:t.t0===N.MESSAGE_TYPE.DECLINE_CALL?29:t.t0===N.MESSAGE_TYPE.END_CALL?42:t.t0===N.MESSAGE_TYPE.MUTE?60:t.t0===N.MESSAGE_TYPE.UNMUTE?71:t.t0===N.MESSAGE_TYPE.HOLD?82:t.t0===N.MESSAGE_TYPE.RESUME?99:t.t0===N.MESSAGE_TYPE.SET_AGENT_STATUS?116:t.t0===N.MESSAGE_TYPE.GET_AGENT_STATUS?138:t.t0===N.MESSAGE_TYPE.DIAL?150:t.t0===N.MESSAGE_TYPE.SEND_DIGITS?172:t.t0===N.MESSAGE_TYPE.GET_PHONE_CONTACTS?181:t.t0===N.MESSAGE_TYPE.SWAP_PARTICIPANTS?194:t.t0===N.MESSAGE_TYPE.CONFERENCE?205:t.t0===N.MESSAGE_TYPE.ADD_PARTICIPANT?216:t.t0===N.MESSAGE_TYPE.PAUSE_RECORDING?235:t.t0===N.MESSAGE_TYPE.RESUME_RECORDING?246:t.t0===N.MESSAGE_TYPE.LOGOUT?257:t.t0===N.MESSAGE_TYPE.MESSAGE?270:t.t0===N.MESSAGE_TYPE.WRAP_UP_CALL?272:t.t0===N.MESSAGE_TYPE.AGENT_AVAILABLE?274:t.t0===N.MESSAGE_TYPE.SET_AGENT_CONFIG?314:t.t0===N.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL?326:t.t0===N.MESSAGE_TYPE.DOWNLOAD_VENDOR_LOGS?341:t.t0===N.MESSAGE_TYPE.LOG?343:t.t0===N.MESSAGE_TYPE.SUPERVISE_CALL?346:t.t0===N.MESSAGE_TYPE.SUPERVISOR_DISCONNECT?363:t.t0===N.MESSAGE_TYPE.SUPERVISOR_BARGE_IN?376:388;break;case 5:if(t.prev=5,!e.data.call||!e.data.call.callType||e.data.call.callType.toLowerCase()!==N.CALL_TYPE.OUTBOUND.toLowerCase()){t.next=8;break}return t.abrupt("return");case 8:if(Ct(),!m){t.next=16;break}return t.next=12,y.supervisorDisconnect();case 12:n=t.sent,rt.validateClassObject(n,ct),m=!1,pt(N.EVENT_TYPE.SUPERVISOR_HANGUP,n.calls);case 16:return t.next=18,y.acceptCall(e.data.call);case 18:r=t.sent,rt.validateClassObject(r,q),pt((T=r.call).callType.toLowerCase()===N.CALL_TYPE.CALLBACK.toLowerCase()?N.EVENT_TYPE.CALL_STARTED:N.EVENT_TYPE.CALL_CONNECTED,T),t.next=28;break;case 24:t.prev=24,t.t1=t.catch(5),m=!1,ft(N.INFO_TYPE.CAN_NOT_ACCEPT_THE_CALL,{messagetype:N.MESSAGE_TYPE.ACCEPT_CALL,additionalInfo:t.t1});case 28:return t.abrupt("break",389);case 29:return t.prev=29,t.next=32,y.declineCall(e.data.call);case 32:_=t.sent,rt.validateClassObject(_,q),i=_.call,pt(N.EVENT_TYPE.HANGUP,i),t.next=41;break;case 38:t.prev=38,t.t2=t.catch(29),ht(N.ERROR_TYPE.CAN_NOT_DECLINE_THE_CALL,t.t2,N.MESSAGE_TYPE.DECLINE_CALL);case 41:return t.abrupt("break",389);case 42:return t.prev=42,t.next=45,y.endCall(e.data.call,e.data.agentStatus);case 45:return o=t.sent,rt.validateClassObject(o,K),t.next=49,y.getActiveCalls();case 49:s=t.sent,rt.validateClassObject(s,w),A=s.activeCalls,l=o.calls,0===A.length?pt(N.EVENT_TYPE.HANGUP,l):pt(N.EVENT_TYPE.PARTICIPANT_REMOVED,l.length>0&&l[0]),t.next=59;break;case 56:t.prev=56,t.t3=t.catch(42),ht(N.ERROR_TYPE.CAN_NOT_END_THE_CALL,t.t3,N.MESSAGE_TYPE.END_CALL);case 59:return t.abrupt("break",389);case 60:return t.prev=60,t.next=63,y.mute();case 63:c=t.sent,kt({eventType:N.EVENT_TYPE.MUTE_TOGGLE,payload:c}),t.next=70;break;case 67:t.prev=67,t.t4=t.catch(60),ht(N.ERROR_TYPE.CAN_NOT_MUTE_CALL,t.t4,N.MESSAGE_TYPE.MUTE);case 70:return t.abrupt("break",389);case 71:return t.prev=71,t.next=74,y.unmute();case 74:u=t.sent,kt({eventType:N.EVENT_TYPE.MUTE_TOGGLE,payload:u}),t.next=81;break;case 78:t.prev=78,t.t5=t.catch(71),ht(N.ERROR_TYPE.CAN_NOT_UNMUTE_CALL,t.t5,N.MESSAGE_TYPE.UNMUTE);case 81:return t.abrupt("break",389);case 82:return t.prev=82,t.next=85,y.hold(e.data.call);case 85:R=t.sent,kt({eventType:N.EVENT_TYPE.HOLD_TOGGLE,payload:R}),t.next=98;break;case 89:t.prev=89,t.t6=t.catch(82),t.t7=It(t.t6),t.next=t.t7===N.ERROR_TYPE.INVALID_PARTICIPANT?94:96;break;case 94:return ht(N.ERROR_TYPE.INVALID_PARTICIPANT,dt(t.t6),N.MESSAGE_TYPE.HOLD),t.abrupt("break",98);case 96:return ht(N.ERROR_TYPE.CAN_NOT_HOLD_CALL,dt(t.t6),N.MESSAGE_TYPE.HOLD),t.abrupt("break",98);case 98:return t.abrupt("break",389);case 99:return t.prev=99,t.next=102,y.resume(e.data.call);case 102:O=t.sent,kt({eventType:N.EVENT_TYPE.HOLD_TOGGLE,payload:O}),t.next=115;break;case 106:t.prev=106,t.t8=t.catch(99),t.t9=It(t.t8),t.next=t.t9===N.ERROR_TYPE.INVALID_PARTICIPANT?111:113;break;case 111:return ht(N.ERROR_TYPE.INVALID_PARTICIPANT,dt(t.t8),N.MESSAGE_TYPE.RESUME),t.abrupt("break",115);case 113:return ht(N.ERROR_TYPE.CAN_NOT_RESUME_CALL,dt(t.t8),N.MESSAGE_TYPE.RESUME),t.abrupt("break",115);case 115:return t.abrupt("break",389);case 116:return t.prev=116,P=e.data.statusInfo||{},C=e.data.enqueueNextState||!1,t.next=121,y.setAgentStatus(e.data.agentStatus,P,C);case 121:S=t.sent,rt.validateClassObject(S,$),I=S.success,pt(N.EVENT_TYPE.SET_AGENT_STATUS_RESULT,{success:I}),t.next=137;break;case 127:t.prev=127,t.t10=t.catch(116),e.data.statusInfo&&pt(N.EVENT_TYPE.SET_AGENT_STATUS_RESULT,{success:!1}),t.t11=It(t.t10),t.next=t.t11===N.ERROR_TYPE.INVALID_AGENT_STATUS?133:135;break;case 133:return ht(N.ERROR_TYPE.INVALID_AGENT_STATUS,dt(t.t10),N.MESSAGE_TYPE.SET_AGENT_STATUS),t.abrupt("break",137);case 135:return ht(N.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS,dt(t.t10),N.MESSAGE_TYPE.SET_AGENT_STATUS),t.abrupt("break",137);case 137:return t.abrupt("break",389);case 138:return t.prev=138,t.next=141,y.getAgentStatus();case 141:d=t.sent,rt.validateClassObject(d,_t),pt(N.EVENT_TYPE.GET_AGENT_STATUS_RESULT,d),t.next=149;break;case 146:t.prev=146,t.t12=t.catch(138),ht(N.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS,dt(t.t12),N.MESSAGE_TYPE.GET_AGENT_STATUS);case 149:return t.abrupt("break",389);case 150:return t.prev=150,t.next=153,y.dial(new et(e.data.contact));case 153:L=t.sent,rt.validateClassObject(L,q),p=L.call,pt(N.EVENT_TYPE.CALL_STARTED,p),t.next=171;break;case 159:t.prev=159,t.t13=t.catch(150),pt(N.EVENT_TYPE.CALL_FAILED),t.t14=It(t.t13),t.next=t.t14===N.ERROR_TYPE.INVALID_DESTINATION?165:t.t14===N.ERROR_TYPE.GENERIC_ERROR?167:169;break;case 165:return ht(N.ERROR_TYPE.INVALID_DESTINATION,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",171);case 167:return ht(N.ERROR_TYPE.GENERIC_ERROR,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",171);case 169:return ht(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,dt(t.t13),N.MESSAGE_TYPE.DIAL),t.abrupt("break",171);case 171:return t.abrupt("break",389);case 172:return t.prev=172,t.next=175,y.sendDigits(e.data.digits);case 175:t.next=180;break;case 177:t.prev=177,t.t15=t.catch(172),Lt(N.MESSAGE_TYPE.SEND_DIGITS,e.data.digits,!0);case 180:return t.abrupt("break",389);case 181:return t.prev=181,t.next=184,y.getPhoneContacts(e.data.filter);case 184:h=t.sent,rt.validateClassObject(h,Q),f=h.contacts.map((function(t){return{id:t.id,type:t.type,name:t.name,phoneNumber:t.phoneNumber,prefix:t.prefix,extension:t.extension,endpointARN:t.endpointARN,queue:t.queue,availability:t.availability,queueWaitTime:t.queueWaitTime,recordId:t.recordId,description:t.description}})),pt(N.EVENT_TYPE.PHONE_CONTACTS,{contacts:f,contactTypes:h.contactTypes}),t.next=193;break;case 190:t.prev=190,t.t16=t.catch(181),ht(N.ERROR_TYPE.CAN_NOT_GET_PHONE_CONTACTS,t.t16,N.MESSAGE_TYPE.GET_PHONE_CONTACTS);case 193:return t.abrupt("break",389);case 194:return t.prev=194,t.next=197,y.swap(e.data.callToHold,e.data.callToResume);case 197:v=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANTS_SWAPPED,payload:v}),t.next=204;break;case 201:t.prev=201,t.t17=t.catch(194),ht(N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,t.t17,N.MESSAGE_TYPE.SWAP_PARTICIPANTS);case 204:return t.abrupt("break",389);case 205:return t.prev=205,t.next=208,y.conference(e.data.calls);case 208:D=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANTS_CONFERENCED,payload:D}),t.next=215;break;case 212:t.prev=212,t.t18=t.catch(205),ht(N.ERROR_TYPE.CAN_NOT_CONFERENCE,t.t18,N.MESSAGE_TYPE.CONFERENCE);case 215:return t.abrupt("break",389);case 216:return t.prev=216,t.next=219,y.addParticipant(new et(e.data.contact),e.data.call,e.data.isBlindTransfer);case 219:b=t.sent,kt({eventType:N.EVENT_TYPE.PARTICIPANT_ADDED,payload:b}),e.data.isBlindTransfer&&pt(N.EVENT_TYPE.HANGUP,e.data.call),t.next=234;break;case 224:t.prev=224,t.t19=t.catch(216),pt(N.EVENT_TYPE.PARTICIPANT_REMOVED,{reason:N.EVENT_TYPE.ERROR.toLowerCase()}),t.t20=It(t.t19),t.next=t.t20===N.ERROR_TYPE.INVALID_DESTINATION?230:232;break;case 230:return ht(N.ERROR_TYPE.INVALID_DESTINATION,dt(t.t19),N.MESSAGE_TYPE.ADD_PARTICIPANT),t.abrupt("break",234);case 232:return ht(N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,dt(t.t19),N.MESSAGE_TYPE.ADD_PARTICIPANT),t.abrupt("break",234);case 234:return t.abrupt("break",389);case 235:return t.prev=235,t.next=238,y.pauseRecording(e.data.call);case 238:Y=t.sent,kt({eventType:N.EVENT_TYPE.RECORDING_TOGGLE,payload:Y}),t.next=245;break;case 242:t.prev=242,t.t21=t.catch(235),ht(N.ERROR_TYPE.CAN_NOT_PAUSE_RECORDING,t.t21,N.MESSAGE_TYPE.PAUSE_RECORDING);case 245:return t.abrupt("break",389);case 246:return t.prev=246,t.next=249,y.resumeRecording(e.data.call);case 249:U=t.sent,kt({eventType:N.EVENT_TYPE.RECORDING_TOGGLE,payload:U}),t.next=256;break;case 253:t.prev=253,t.t22=t.catch(246),ht(N.ERROR_TYPE.CAN_NOT_RESUME_RECORDING,t.t22,N.MESSAGE_TYPE.RESUME_RECORDING);case 256:return t.abrupt("break",389);case 257:return t.prev=257,t.next=260,y.logout();case 260:V=t.sent,rt.validateClassObject(V,Z),g=V.success,M=V.loginFrameHeight,pt(N.EVENT_TYPE.LOGOUT_RESULT,{success:g,loginFrameHeight:M}),t.next=269;break;case 266:t.prev=266,t.t23=t.catch(257),ht(N.ERROR_TYPE.CAN_NOT_LOG_OUT,t.t23,N.MESSAGE_TYPE.LOGOUT);case 269:return t.abrupt("break",389);case 270:return y.handleMessage(e.data.message),t.abrupt("break",389);case 272:return y.wrapUpCall(e.data.call),t.abrupt("break",389);case 274:if(!e.data.isAvailable){t.next=313;break}return t.next=278,y.getActiveCalls();case 278:k=t.sent,rt.validateClassObject(k,w),H=k.activeCalls,t.t24=a.a.keys(H);case 282:if((t.t25=t.t24()).done){t.next=313;break}if(B=t.t25.value,x=H[B],j=!x.callInfo||x.callInfo.isReplayable,F=x.callAttributes&&x.callAttributes.participantType===N.PARTICIPANT_TYPE.SUPERVISOR,W=F&&x.callAttributes&&x.callAttributes.hasSupervisorBargedIn,!j){t.next=311;break}x.isReplayedCall=!0,t.t26=x.state,t.next=t.t26===N.CALL_STATE.CONNECTED?293:t.t26===N.CALL_STATE.RINGING?300:t.t26===N.CALL_STATE.TRANSFERRING?306:t.t26===N.CALL_STATE.TRANSFERRED?308:310;break;case 293:if(!F){t.next=298;break}return m=!0,pt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,x),W&&pt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,x),t.abrupt("break",311);case 298:return pt(N.EVENT_TYPE.CALL_CONNECTED,x),t.abrupt("break",311);case 300:if(!F){t.next=304;break}return m=!0,pt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,x),t.abrupt("break",311);case 304:return pt(N.EVENT_TYPE.CALL_STARTED,x),t.abrupt("break",311);case 306:return pt(N.EVENT_TYPE.PARTICIPANT_ADDED,{phoneNumber:x.contact.phoneNumber,callInfo:x.callInfo,initialCallHasEnded:x.callAttributes.initialCallHasEnded,callId:x.callId}),t.abrupt("break",311);case 308:return pt(N.EVENT_TYPE.PARTICIPANT_CONNECTED,{phoneNumber:x.contact.phoneNumber,callInfo:x.callInfo,initialCallHasEnded:x.callAttributes.initialCallHasEnded,callId:x.callId}),t.abrupt("break",311);case 310:return t.abrupt("break",311);case 311:t.next=282;break;case 313:return t.abrupt("break",389);case 314:return t.prev=314,t.next=317,y.setAgentConfig(e.data.config);case 317:J=t.sent,rt.validateClassObject(J,$),pt(N.EVENT_TYPE.AGENT_CONFIG_UPDATED,J),t.next=325;break;case 322:t.prev=322,t.t27=t.catch(314),ht(It(t.t27)===N.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER?N.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER:N.ERROR_TYPE.CAN_NOT_SET_AGENT_CONFIG,dt(t.t27),N.MESSAGE_TYPE.SET_AGENT_CONFIG);case 325:return t.abrupt("break",389);case 326:return t.prev=326,z=e.data,tt=z.recordingUrl,Et=z.vendorCallKey,nt=z.callId,t.next=330,y.getSignedRecordingUrl(tt,Et,nt);case 330:at=t.sent,rt.validateClassObject(at,X),pt(N.EVENT_TYPE.SIGNED_RECORDING_URL,at),t.next=340;break;case 335:t.prev=335,t.t28=t.catch(326),Tt=new X({success:!1}),pt(N.EVENT_TYPE.SIGNED_RECORDING_URL,Tt,!1),Lt(N.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL,Tt,!0);case 340:return t.abrupt("break",389);case 341:return y.downloadLogs(G()),t.abrupt("break",389);case 343:return it=e.data,ot=it.logLevel,st=it.logMessage,Nt=it.payload,y.logMessageToVendor(ot,st,Nt),t.abrupt("break",389);case 346:return t.prev=346,m=!0,t.next=350,y.superviseCall(e.data.call);case 350:return At=t.sent,rt.validateClassObject(At,lt),t.next=354,y.getAgentConfig();case 354:t.sent.selectedPhone.type===N.PHONE_TYPE.SOFT_PHONE?pt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,At.call):pt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,At.call),t.next=362;break;case 358:t.prev=358,t.t29=t.catch(346),m=!1,ht(N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,t.t29,N.MESSAGE_TYPE.SUPERVISE_CALL);case 362:return t.abrupt("break",389);case 363:return t.prev=363,t.next=366,y.supervisorDisconnect(e.data.call);case 366:ut=t.sent,rt.validateClassObject(ut,ct),m=!1,pt(N.EVENT_TYPE.SUPERVISOR_HANGUP,ut.calls),t.next=375;break;case 372:t.prev=372,t.t30=t.catch(363),ht(N.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR,t.t30,N.MESSAGE_TYPE.SUPERVISOR_DISCONNECT);case 375:return t.abrupt("break",389);case 376:return t.prev=376,t.next=379,y.supervisorBargeIn(e.data.call);case 379:Rt=t.sent,rt.validateClassObject(Rt,lt),pt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,Rt.call),t.next=387;break;case 384:t.prev=384,t.t31=t.catch(376),ht(N.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR,t.t31,N.MESSAGE_TYPE.SUPERVISOR_BARGE_IN);case 387:case 388:return t.abrupt("break",389);case 389:case"end":return t.stop()}}),t,null,[[5,24],[29,38],[42,56],[60,67],[71,78],[82,89],[99,106],[116,127],[138,146],[150,159],[172,177],[181,190],[194,201],[205,212],[216,224],[235,242],[246,253],[257,266],[314,322],[326,335],[346,358],[363,372],[376,384]])})))).apply(this,arguments)}function Yt(t){return Ut.apply(this,arguments)}function Ut(){return(Ut=i()(a.a.mark((function t(e){var E,n,r,T;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.t0=e.data.type,t.next=t.t0===N.MESSAGE_TYPE.SETUP_CONNECTOR?3:29;break;case 3:if(E=/^https:\/\/[\w-.]+(lightning\.[\w]+\.soma\.force\.com|\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/,n=new URL(e.origin),r=n.protocol+"//"+n.hostname,!E.test(r)){t.next=27;break}return(g=e.ports[0]).onmessage=Dt,Lt(N.MESSAGE_TYPE.SETUP_CONNECTOR,Vt(e.data.connectorConfig),!1),t.prev=10,t.next=13,y.init(e.data.connectorConfig);case 13:T=t.sent,rt.validateClassObject(T,z),T.showLogin?pt(N.EVENT_TYPE.SHOW_LOGIN,{loginFrameHeight:T.loginFrameHeight}):vt(),t.next=27;break;case 18:t.prev=18,t.t1=t.catch(10),t.t2=It(t.t1),t.next=t.t2===N.ERROR_TYPE.INVALID_PARAMS?23:25;break;case 23:return ht(N.ERROR_TYPE.INVALID_PARAMS,dt(t.t1),N.MESSAGE_TYPE.SETUP_CONNECTOR),t.abrupt("break",27);case 25:return ht(N.ERROR_TYPE.CAN_NOT_LOG_IN,dt(t.t1),N.MESSAGE_TYPE.SETUP_CONNECTOR),t.abrupt("break",27);case 27:return window.removeEventListener("message",Yt),t.abrupt("break",30);case 29:return t.abrupt("break",30);case 30:case"end":return t.stop()}}),t,null,[[10,18]])})))).apply(this,arguments)}function Vt(t){t=t||{};var e={};return A.forEach((function(E){t.hasOwnProperty(E)&&(e[E]=t[E])})),l.forEach((function(E){Object.keys(t).forEach((function(n){n.startsWith(E)&&(e[n]=t[n])}))})),e}function gt(t,e,E,n){try{return rt.validateClassObject(t,e),!0}catch(t){return E&&ht(E,t,n),!1}}function yt(t){y=t,window.addEventListener("message",Yt)}function mt(t){Lt(t.eventType,t.payload,t.isError)}function Mt(t){var e=t.eventType,E=t.error;switch(e){case N.EVENT_TYPE.LOGIN_RESULT:ht(N.ERROR_TYPE.CAN_NOT_LOG_IN,E,N.EVENT_TYPE.LOGIN_RESULT);break;case N.EVENT_TYPE.LOGOUT_RESULT:ht(N.ERROR_TYPE.CAN_NOT_LOG_OUT,E,N.EVENT_TYPE.LOGOUT_RESULT);break;case N.EVENT_TYPE.CALL_STARTED:ht(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.CALL_STARTED);break;case N.EVENT_TYPE.QUEUED_CALL_STARTED:ht(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.QUEUED_CALL_STARTED);break;case N.EVENT_TYPE.CALL_CONNECTED:ht(N.ERROR_TYPE.CAN_NOT_START_THE_CALL,E,N.EVENT_TYPE.CALL_CONNECTED);break;case N.EVENT_TYPE.HANGUP:ht(N.ERROR_TYPE.CAN_NOT_END_THE_CALL,E,N.EVENT_TYPE.HANGUP);break;case N.EVENT_TYPE.PARTICIPANT_ADDED:ht(It(E)===N.ERROR_TYPE.INVALID_PARTICIPANT?N.ERROR_TYPE.INVALID_PARTICIPANT:N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_ADDED);break;case N.EVENT_TYPE.PARTICIPANT_CONNECTED:ht(N.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_CONNECTED);break;case N.EVENT_TYPE.PARTICIPANT_REMOVED:ht(N.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT,E,N.EVENT_TYPE.PARTICIPANT_REMOVED);break;case N.EVENT_TYPE.MUTE_TOGGLE:ht(N.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE,E,N.EVENT_TYPE.MUTE_TOGGLE);break;case N.EVENT_TYPE.HOLD_TOGGLE:ht(It(E)===N.ERROR_TYPE.INVALID_PARTICIPANT?N.ERROR_TYPE.INVALID_PARTICIPANT:N.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD,E,N.EVENT_TYPE.HOLD_TOGGLE);break;case N.EVENT_TYPE.RECORDING_TOGGLE:ht(N.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD,E,N.EVENT_TYPE.RECORDING_TOGGLE);break;case N.EVENT_TYPE.PARTICIPANTS_SWAPPED:ht(N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,E,N.EVENT_TYPE.PARTICIPANTS_SWAPPED);break;case N.EVENT_TYPE.PARTICIPANTS_CONFERENCED:ht(N.ERROR_TYPE.CAN_NOT_CONFERENCE,E,N.EVENT_TYPE.PARTICIPANTS_CONFERENCED);break;case N.EVENT_TYPE.AGENT_ERROR:ht(N.ERROR_TYPE.AGENT_ERROR,E,N.EVENT_TYPE.AGENT_ERROR);break;case N.EVENT_TYPE.SOFTPHONE_ERROR:switch(It(E)){case N.ERROR_TYPE.UNSUPPORTED_BROWSER:ht(N.ERROR_TYPE.UNSUPPORTED_BROWSER,E,N.EVENT_TYPE.SOFTPHONE_ERROR);break;case N.ERROR_TYPE.MICROPHONE_NOT_SHARED:ht(N.ERROR_TYPE.MICROPHONE_NOT_SHARED,E,N.EVENT_TYPE.SOFTPHONE_ERROR);break;default:ht(N.ERROR_TYPE.GENERIC_ERROR,E,N.EVENT_TYPE.SOFTPHONE_ERROR)}break;default:console.error("Unhandled error scenario with arguments ",arguments)}}function kt(t){return Ht.apply(this,arguments)}function Ht(){return(Ht=i()(a.a.mark((function t(e){var E,n,r,T,_,i,o,s,A,l,c,u,R,O,P,C,S,I,d,L,p,h,f,v,G,D,b,Y,U,V,g,M,k;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:E=e.eventType,n=e.payload,r=e.registerLog,T=void 0===r||r,t.t0=E,t.next=t.t0===N.EVENT_TYPE.LOGIN_RESULT?4:t.t0===N.EVENT_TYPE.LOGOUT_RESULT?6:t.t0===N.EVENT_TYPE.CALL_STARTED?8:t.t0===N.EVENT_TYPE.QUEUED_CALL_STARTED?10:t.t0===N.EVENT_TYPE.CALL_CONNECTED?12:t.t0===N.EVENT_TYPE.HANGUP?25:t.t0===N.EVENT_TYPE.PARTICIPANT_ADDED?27:t.t0===N.EVENT_TYPE.PARTICIPANT_CONNECTED?29:t.t0===N.EVENT_TYPE.PARTICIPANT_REMOVED?31:t.t0===N.EVENT_TYPE.MESSAGE?38:t.t0===N.EVENT_TYPE.AFTER_CALL_WORK_STARTED?40:t.t0===N.EVENT_TYPE.WRAP_UP_ENDED?42:t.t0===N.EVENT_TYPE.REMOTE_CONTROLLER?44:t.t0===N.EVENT_TYPE.MUTE_TOGGLE?46:t.t0===N.EVENT_TYPE.HOLD_TOGGLE?48:t.t0===N.EVENT_TYPE.RECORDING_TOGGLE?51:t.t0===N.EVENT_TYPE.PARTICIPANTS_SWAPPED?54:t.t0===N.EVENT_TYPE.PARTICIPANTS_CONFERENCED?56:t.t0===N.EVENT_TYPE.UPDATE_AUDIO_STATS?58:t.t0===N.EVENT_TYPE.SUPERVISOR_BARGED_IN?60:t.t0===N.EVENT_TYPE.CALL_BARGED_IN?62:t.t0===N.EVENT_TYPE.SUPERVISOR_CALL_STARTED?64:t.t0===N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED?66:t.t0===N.EVENT_TYPE.SUPERVISOR_HANGUP?68:t.t0===N.EVENT_TYPE.SET_AGENT_STATUS?70:t.t0===N.EVENT_TYPE.GET_AGENT_STATUS?72:t.t0===N.EVENT_TYPE.STATE_CHANGE?74:76;break;case 4:return gt(n,$,N.ERROR_TYPE.CAN_NOT_LOG_IN,N.EVENT_TYPE.LOGIN_RESULT)&&(pt(N.EVENT_TYPE.LOGIN_RESULT,n,T),n.success&&vt()),t.abrupt("break",76);case 6:return gt(n,Z,N.ERROR_TYPE.CAN_NOT_LOG_OUT,N.EVENT_TYPE.LOGOUT_RESULT)&&pt(N.EVENT_TYPE.LOGOUT_RESULT,{success:n.success,loginFrameHeight:n.loginFrameHeight},T),t.abrupt("break",76);case 8:return gt(n,q,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.CALL_STARTED)&&pt(N.EVENT_TYPE.CALL_STARTED,n.call,T),t.abrupt("break",76);case 10:return gt(n,q,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.QUEUED_CALL_STARTED)&&pt(N.EVENT_TYPE.QUEUED_CALL_STARTED,n.call,T),t.abrupt("break",76);case 12:if(!gt(n,q,N.ERROR_TYPE.CAN_NOT_START_THE_CALL,N.EVENT_TYPE.CALL_CONNECTED)){t.next=24;break}if(Ct(),!m){t.next=23;break}return t.next=17,y.supervisorDisconnect();case 17:return _=t.sent,rt.validateClassObject(_,ct),m=!1,pt(N.EVENT_TYPE.SUPERVISOR_HANGUP,_,T),pt(N.EVENT_TYPE.CALL_CONNECTED,n.call,T),t.abrupt("break",76);case 23:pt(N.EVENT_TYPE.CALL_CONNECTED,n.call,T);case 24:return t.abrupt("break",76);case 25:return gt(n,K,N.ERROR_TYPE.CAN_NOT_END_THE_CALL,N.EVENT_TYPE.HANGUP)&&pt(N.EVENT_TYPE.HANGUP,n.calls,T),t.abrupt("break",76);case 27:return gt(n,W,N.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_ADDED)&&(i=n.initialCallHasEnded,o=n.callInfo,s=n.phoneNumber,A=n.callId,pt(N.EVENT_TYPE.PARTICIPANT_ADDED,{initialCallHasEnded:i,callInfo:o,phoneNumber:s,callId:A},T)),t.abrupt("break",76);case 29:return gt(n,W,N.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_CONNECTED)&&(l=n.initialCallHasEnded,c=n.callInfo,u=n.phoneNumber,R=n.callId,pt(N.EVENT_TYPE.PARTICIPANT_CONNECTED,{initialCallHasEnded:l,callInfo:c,phoneNumber:u,callId:R},T)),t.abrupt("break",76);case 31:if(!gt(n,q,N.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT,N.EVENT_TYPE.PARTICIPANT_REMOVED)){t.next=37;break}return O=n.call,t.next=35,y.getActiveCalls();case 35:gt(P=t.sent,w)&&(0===(C=P.activeCalls).length?pt(N.EVENT_TYPE.HANGUP,O,T):O&&O.callAttributes&&O.callAttributes.participantType===N.PARTICIPANT_TYPE.INITIAL_CALLER?(S=Object.values(C).filter((function(t){return t.callType===N.CALL_TYPE.ADD_PARTICIPANT})).pop(),pt(S.state===N.CALL_STATE.TRANSFERRING?N.EVENT_TYPE.PARTICIPANT_ADDED:N.EVENT_TYPE.PARTICIPANT_CONNECTED,{initialCallHasEnded:!0})):pt(N.EVENT_TYPE.PARTICIPANT_REMOVED,{reason:O?O.reason:null},T));case 37:return t.abrupt("break",76);case 38:return pt(N.EVENT_TYPE.MESSAGE,n,T),t.abrupt("break",76);case 40:return pt(N.EVENT_TYPE.AFTER_CALL_WORK_STARTED,n,T),t.abrupt("break",76);case 42:return pt(N.EVENT_TYPE.WRAP_UP_ENDED,n,T),t.abrupt("break",76);case 44:return Dt(n),t.abrupt("break",76);case 46:return gt(n,H,N.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE,N.EVENT_TYPE.MUTE_TOGGLE)&&pt(N.EVENT_TYPE.MUTE_TOGGLE,n,T),t.abrupt("break",76);case 48:return I=n.isThirdPartyOnHold,d=n.isCustomerOnHold,L=n.calls,gt(n,J,N.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD,N.EVENT_TYPE.HOLD_TOGGLE)&&pt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:I,isCustomerOnHold:d,calls:L},T),t.abrupt("break",76);case 51:return p=n.isRecordingPaused,h=n.contactId,f=n.initialContactId,v=n.instanceId,G=n.region,gt(n,F,N.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD,N.EVENT_TYPE.RECORDING_TOGGLE)&&pt(N.EVENT_TYPE.RECORDING_TOGGLE,{isRecordingPaused:p,contactId:h,initialContactId:f,instanceId:v,region:G},T),t.abrupt("break",76);case 54:return gt(n,J,N.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS,N.EVENT_TYPE.PARTICIPANTS_SWAPPED)&&(D=n.isThirdPartyOnHold,b=n.isCustomerOnHold,Y=n.calls,pt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:D,isCustomerOnHold:b,calls:Y},T)),t.abrupt("break",76);case 56:return gt(n,J,N.ERROR_TYPE.CAN_NOT_CONFERENCE,N.EVENT_TYPE.PARTICIPANTS_CONFERENCED)&&(U=n.isThirdPartyOnHold,V=n.isCustomerOnHold,pt(N.EVENT_TYPE.HOLD_TOGGLE,{isThirdPartyOnHold:U,isCustomerOnHold:V},T)),t.abrupt("break",76);case 58:return gt(n,st)&&(n.stats&&St(n.stats),n.isAudioStatsCompleted&&n.callId&&(g=n.callId,M=Pt(),pt(N.EVENT_TYPE.UPDATE_AUDIO_STATS_COMPLETED,{callId:g,mos:M},T))),t.abrupt("break",76);case 60:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR,N.EVENT_TYPE.SUPERVISOR_BARGED_IN)&&pt(N.EVENT_TYPE.SUPERVISOR_BARGED_IN,n.call,T),t.abrupt("break",76);case 62:return gt(n,ot,N.ERROR_TYPE.GENERIC_ERROR,N.EVENT_TYPE.CALL_BARGED_IN)&&pt(N.EVENT_TYPE.CALL_BARGED_IN,n,T),t.abrupt("break",76);case 64:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,N.EVENT_TYPE.SUPERVISOR_CALL_STARTED)&&(m=!0,pt(N.EVENT_TYPE.SUPERVISOR_CALL_STARTED,n.call,T)),t.abrupt("break",76);case 66:return gt(n,lt,N.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL,N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED)&&(m=!0,pt(N.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,n.call,T)),t.abrupt("break",76);case 68:return gt(n,ct,N.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR,N.EVENT_TYPE.SUPERVISOR_HANGUP)&&(m=!1,pt(N.EVENT_TYPE.SUPERVISOR_HANGUP,n.calls,T)),t.abrupt("break",76);case 70:return gt(n,Tt,N.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS,N.EVENT_TYPE.SET_AGENT_STATUS)&&(k=n.statusId,pt(N.EVENT_TYPE.SET_AGENT_STATUS,{statusId:k},T)),t.abrupt("break",76);case 72:return gt(n,_t,N.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS,N.EVENT_TYPE.GET_AGENT_STATUS)&&pt(N.EVENT_TYPE.GET_AGENT_STATUS,n),t.abrupt("break",76);case 74:return gt(n,it,N.ERROR_TYPE.INVALID_STATE_CHANGE_RESULT,N.EVENT_TYPE.STATE_CHANGE)&&pt(N.EVENT_TYPE.STATE_CHANGE,n),t.abrupt("break",76);case 76:case"end":return t.stop()}}),t)})))).apply(this,arguments)}}])})); //# sourceMappingURL=scv-connector-base.js.map \ No newline at end of file diff --git a/dist/scv-connector-base.js.map b/dist/scv-connector-base.js.map index 541ae46..18661e3 100644 --- a/dist/scv-connector-base.js.map +++ b/dist/scv-connector-base.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://SCVConnectorBase/webpack/universalModuleDefinition","webpack://SCVConnectorBase/webpack/bootstrap","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/createClass.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/typeof.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/regenerator/index.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/inherits.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://SCVConnectorBase/./src/main/constants.js","webpack://SCVConnectorBase/./src/main/logger.js","webpack://SCVConnectorBase/./src/main/downloadData.js","webpack://SCVConnectorBase/./src/main/types.js","webpack://SCVConnectorBase/./src/main/mosUtil.js","webpack://SCVConnectorBase/./src/main/baseConnector.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_defineProperties","target","props","length","descriptor","configurable","writable","Constructor","protoProps","staticProps","instance","TypeError","obj","_typeof","iterator","constructor","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","fn","self","args","arguments","apply","err","undefined","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","assertThisInitialized","_regeneratorRuntime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","result","__await","unwrapped","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","_setPrototypeOf","ReferenceError","MESSAGE_TYPE","SETUP_CONNECTOR","CONNECTOR_READY","LOG","TELEPHONY_EVENT_DISPATCHED","ACCEPT_CALL","DECLINE_CALL","END_CALL","MUTE","UNMUTE","HOLD","RESUME","SET_AGENT_STATUS","GET_AGENT_STATUS","DIAL","SEND_DIGITS","GET_PHONE_CONTACTS","SWAP_PARTICIPANTS","ADD_PARTICIPANT","CONFERENCE","PAUSE_RECORDING","RESUME_RECORDING","LOGOUT","MESSAGE","WRAP_UP_CALL","AGENT_AVAILABLE","SET_AGENT_CONFIG","GET_SIGNED_RECORDING_URL","DOWNLOAD_VENDOR_LOGS","SUPERVISE_CALL","SUPERVISOR_BARGE_IN","SUPERVISOR_DISCONNECT","EVENT_TYPE","QUEUED_CALL_STARTED","CALL_STARTED","CALL_CONNECTED","CALL_FAILED","MUTE_TOGGLE","HOLD_TOGGLE","HANGUP","ERROR","WARNING","INFO","PHONE_CONTACTS","PARTICIPANT_ADDED","PARTICIPANT_CONNECTED","PARTICIPANT_REMOVED","LOGIN_STARTED","LOGIN_RESULT","LOGOUT_RESULT","RECORDING_TOGGLE","PARTICIPANTS_SWAPPED","PARTICIPANTS_CONFERENCED","SHOW_LOGIN","SET_AGENT_STATUS_RESULT","GET_AGENT_STATUS_RESULT","WRAP_UP_ENDED","AFTER_CALL_WORK_STARTED","AGENT_CONFIG_UPDATED","AGENT_ERROR","SOFTPHONE_ERROR","SIGNED_RECORDING_URL","UPDATE_AUDIO_STATS","UPDATE_AUDIO_STATS_COMPLETED","SUPERVISOR_BARGED_IN","SUPERVISOR_CALL_STARTED","SUPERVISOR_CALL_CONNECTED","SUPERVISOR_HANGUP","CALL_BARGED_IN","STATE_CHANGE","INFO_TYPE","CAN_NOT_ACCEPT_THE_CALL","ERROR_TYPE","GENERIC_ERROR","MICROPHONE_NOT_SHARED","UNSUPPORTED_BROWSER","AUTHENTICATION_ERROR","INVALID_AGENT_STATUS","CAN_NOT_SET_AGENT_STATUS","LOGIN_REQUIRED","CAN_NOT_DECLINE_THE_CALL","CAN_NOT_END_THE_CALL","CAN_NOT_HOLD_CALL","CAN_NOT_RESUME_CALL","CAN_NOT_MUTE_CALL","CAN_NOT_UNMUTE_CALL","CAN_NOT_TOGGLE_MUTE","CAN_NOT_TOGGLE_HOLD","CAN_NOT_TOGGLE_RECORD","INVALID_PARTICIPANT","CAN_NOT_LOG_IN","CAN_NOT_LOG_OUT","INVALID_PARAMS","CAN_NOT_GET_PHONE_CONTACTS","CAN_NOT_SWAP_PARTICIPANTS","CAN_NOT_CONFERENCE","INVALID_DESTINATION","INVALID_PHONE_NUMBER","CAN_NOT_HANGUP_PARTICIPANT","CAN_NOT_ADD_PARTICIPANT","CAN_NOT_CONNECT_PARTICIPANT","CAN_NOT_START_THE_CALL","CAN_NOT_PAUSE_RECORDING","CAN_NOT_RESUME_RECORDING","CAN_NOT_SET_AGENT_CONFIG","CAN_NOT_SET_CAPABILITIES","CAN_NOT_UPDATE_PHONE_NUMBER","CAN_NOT_GET_SIGNED_RECORDING_URL","CAN_NOT_SUPERVISE_CALL","CAN_NOT_DISCONNECT_SUPERVISOR","CAN_NOT_BARGE_IN_SUPERVISOR","CAN_NOT_BARGE_IN_CALL","CAN_NOT_GET_AGENT_STATUS","INVALID_STATE_CHANGE_RESULT","AGENT_STATUS","ONLINE","OFFLINE","ACW","CALLBACK_MISSED_OR_REJECTED","PARTICIPANT_TYPE","AGENT","INITIAL_CALLER","THIRD_PARTY","SUPERVISOR","CALL_TYPE","INBOUND","OUTBOUND","CALLBACK","TRANSFER","DIALER_TYPE","OUTBOUND_PREVIEW","NONE","CONTACT_TYPE","PHONEBOOK","QUEUE","PHONENUMBER","FLOW","AGENT_CONFIG_TYPE","SHOW_AGENT_SETTINGS","PHONES","SELECTED_PHONE","CAPABILITIES_TYPE","RECORD","MERGE","SWAP","DEBUG_ENABLED","CONTACT_SEARCH","VENDOR_PROVIDED_AVAILABILITY","SUPERVISOR_LISTEN_IN","MOS","BLIND_TRANSFER","TRANSFER_TO_OMNI_FLOW","PENDING_STATUS_CHANGE","CALL_STATE","RINGING","CONNECTED","TRANSFERRING","TRANSFERRED","ENDED","PHONE_TYPE","DESK_PHONE","SOFT_PHONE","HANGUP_REASON","PHONE_CALL_ERROR","PHONE_CALL_ENDED","AGENT_AVAILABILITY","AVAILABLE","BUSY","REMOVE_PARTICIPANT_VARIANT","ALWAYS","NEVER","ALWAYS_EXCEPT_ON_HOLD","LOG_LEVEL","LOG_SOURCE","SYSTEM","PARTNER","CONTACTS_FILTER_TYPES","CONNECTOR_CONFIG_EXPOSED_FIELDS","CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH","_strify","JSON","stringify","LOGS_SIZE","logs","log","logMessage","logLevel","logSource","constants","logStr","Date","toISOString","join","_log","getLogs","parse","downloadLogs","data","fileName","fileType","document","dataStr","file","Blob","a","createElement","blobURL","URL","createObjectURL","download","href","body","appendChild","click","removeChild","revokeObjectURL","downloadData","getTime","audioStatus","channelPort","vendorConnector","isSupervisorConnected","Constants","Phone","number","Validator","validateEnum","validateString","MuteToggleResult","isMuted","ActiveCallsResult","activeCalls","activeCall","validateClassObject","PhoneCall","CapabilitiesResult","hasMute","hasRecord","hasMerge","hasSwap","hasSignedRecordingUrl","debugEnabled","hasContactSearch","hasAgentAvailability","supportsMos","hasSupervisorListenIn","hasSupervisorBargeIn","hasBlindTransfer","hasTransferToOmniFlow","hasPendingStatusChange","validateBoolean","AgentConfigResult","phones","selectedPhone","Array","AgentConfig","RecordingToggleResult","isRecordingPaused","contactId","initialContactId","instanceId","region","ParticipantResult","initialCallHasEnded","callInfo","phoneNumber","callId","CallInfo","PhoneContactsResult","contacts","contactTypes","contact","Contact","filterType","CallResult","HangupResult","calls","HoldToggleResult","isThirdPartyOnHold","isCustomerOnHold","SignedRecordingUrlResult","success","url","duration","validateNumber","InitResult","showLogin","loginFrameHeight","GenericResult","LogoutResult","callStateTimestamp","isOnHold","initialCallId","isSoftphoneCall","acceptEnabled","declineEnabled","muteEnabled","swapEnabled","conferenceEnabled","holdEnabled","recordEnabled","addCallerEnabled","extensionEnabled","isReplayable","isBargeable","isExternalTransfer","removeParticipantVariant","validateDate","id","prefix","extension","endpointARN","queue","availability","recordId","description","PhoneCallAttributes","voiceCallId","participantType","dialerType","parentId","hasSupervisorBargedIn","callType","callAttributes","reason","closeCallOnError","agentStatus","VendorConnector","config","statusInfo","enqueueNextState","logMessageToVendor","digits","call1","call2","isBlindTransfer","message","recordingUrl","vendorCallKey","payload","supervisedCallInfo","enumValues","RegExp","test","className","AgentStatusInfo","statusId","statusApiName","statusName","AgentVendorStatusInfo","statusType","StateChangeResult","newVendorStateInfo","oldVendorStateInfo","SupervisedCallInfo","from","to","supervisorName","isBargedIn","AudioStats","stats","isAudioStatsCompleted","audioStatsElement","AudioStatsElement","inputChannelStats","outputChannelStats","StatsInfo","packetsCount","packetsLost","jitterBufferMillis","roundTripTimeMillis","statsCount","SuperviseCallResult","SupervisorHangupResult","getMOSByStream","streamType","avgStats","getAvgStats","effectiveLatency","R","enableMos","getMOS","inputChannelMOS","ouputChannelMOS","Math","min","initAudioStats","updateAudioStats","statsArray","getErrorType","e","getErrorMessage","dispatchEventLog","eventType","isError","sanitizedPayload","sanitizePayload","isArray","element","postMessage","dispatchEvent","registerLog","telephonyEventType","telephonyEventPayload","dispatchError","errorType","console","dispatchInfo","setConnectorReady","getAgentConfig","agentConfigResult","getCapabilities","capabilitiesResult","getActiveCalls","activeCallsResult","agentConfig","capabilities","callInProgress","channelMessageHandler","toLowerCase","supervisorDisconnect","hangupPayload","acceptCall","messagetype","additionalInfo","declineCall","endCall","mute","publishEvent","unmute","hold","resume","setAgentStatus","getAgentStatus","dial","sendDigits","getPhoneContacts","filter","map","swap","callToHold","callToResume","conference","addParticipant","pauseRecording","resumeRecording","logout","handleMessage","wrapUpCall","isAvailable","shouldReplay","isSupervisorCall","isReplayedCall","setAgentConfig","getSignedRecordingUrl","signedRecordingUrlResult","superviseCall","supervisorBargeIn","windowMessageHandler","sfDomain","originUrl","origin","protocol","hostname","ports","onmessage","exposedConnectorConfig","connectorConfig","init","window","removeEventListener","prop","startsWith","validatePayload","payloadType","initializeConnector","connector","addEventListener","publishLog","publishError","REMOTE_CONTROLLER","transferCall","mos"],"mappings":"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","file":"scv-connector-base.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SCVConnectorBase\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SCVConnectorBase\"] = factory();\n\telse\n\t\troot[\"SCVConnectorBase\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nexport default {\n MESSAGE_TYPE: {\n // Framework Message Types\n SETUP_CONNECTOR: 'SETUP_CONNECTOR',\n CONNECTOR_READY: 'CONNECTOR_READY',\n\n // Telephony Message Types: sent from SFDC to Telephony Vendor\n LOG: 'LOG',\n TELEPHONY_EVENT_DISPATCHED: 'TELEPHONY_EVENT_DISPATCHED',\n ACCEPT_CALL: 'ACCEPT_CALL',\n DECLINE_CALL: 'DECLINE_CALL',\n END_CALL: 'END_CALL',\n MUTE: 'MUTE',\n UNMUTE: 'UNMUTE',\n HOLD: 'HOLD',\n RESUME: 'RESUME',\n SET_AGENT_STATUS: 'SET_AGENT_STATUS',\n GET_AGENT_STATUS: 'GET_AGENT_STATUS',\n DIAL: 'DIAL',\n SEND_DIGITS: 'SEND_DIGITS',\n GET_PHONE_CONTACTS: 'GET_PHONE_CONTACTS',\n SWAP_PARTICIPANTS: 'SWAP_PARTICIPANTS',\n ADD_PARTICIPANT: 'ADD_PARTICIPANT',\n CONFERENCE: 'CONFERENCE',\n PAUSE_RECORDING: 'PAUSE_RECORDING',\n RESUME_RECORDING: 'RESUME_RECORDING',\n LOGOUT: 'LOGOUT',\n MESSAGE: 'MESSAGE',\n WRAP_UP_CALL: 'WRAP_UP_CALL',\n AGENT_AVAILABLE: 'AGENT_AVAILABLE',\n SET_AGENT_CONFIG: 'SET_AGENT_CONFIG',\n GET_SIGNED_RECORDING_URL: 'GET_SIGNED_RECORDING_URL',\n DOWNLOAD_VENDOR_LOGS: 'DOWNLOAD_VENDOR_LOGS',\n SUPERVISE_CALL: 'SUPERVISE_CALL',\n SUPERVISOR_BARGE_IN : 'SUPERVISOR_BARGE_IN',\n SUPERVISOR_DISCONNECT: 'SUPERVISOR_DISCONNECT'\n },\n EVENT_TYPE: {\n QUEUED_CALL_STARTED: 'QUEUED_CALL_STARTED',\n CALL_STARTED: 'CALL_STARTED',\n CALL_CONNECTED: 'CALL_CONNECTED',\n CALL_FAILED: 'CALL_FAILED',\n MUTE_TOGGLE: 'MUTE_TOGGLE',\n HOLD_TOGGLE: 'HOLD_TOGGLE',\n HANGUP: 'HANGUP',\n ERROR: 'ERROR',\n WARNING: 'WARNING',\n INFO: 'INFO',\n PHONE_CONTACTS: 'PHONE_CONTACTS',\n PARTICIPANT_ADDED: 'PARTICIPANT_ADDED',\n PARTICIPANT_CONNECTED: 'PARTICIPANT_CONNECTED',\n PARTICIPANT_REMOVED: 'PARTICIPANT_REMOVED',\n LOGIN_STARTED: 'LOGIN_STARTED',\n LOGIN_RESULT: 'LOGIN_RESULT', // info about timeout, error, success etc\n LOGOUT_RESULT: 'LOGOUT_RESULT',\n RECORDING_TOGGLE: 'RECORDING_TOGGLE',\n PARTICIPANTS_SWAPPED: 'PARTICIPANTS_SWAPPED',\n PARTICIPANTS_CONFERENCED: 'PARTICIPANTS_CONFERENCED',\n SHOW_LOGIN: 'SHOW_LOGIN',\n SET_AGENT_STATUS_RESULT: 'SET_AGENT_STATUS_RESULT',\n GET_AGENT_STATUS_RESULT: 'GET_AGENT_STATUS_RESULT',\n WRAP_UP_ENDED: 'WRAP_UP_ENDED',\n MESSAGE: 'MESSAGE',\n AFTER_CALL_WORK_STARTED: 'AFTER_CALL_WORK_STARTED',\n AGENT_CONFIG_UPDATED: 'AGENT_CONFIG_UPDATED',\n AGENT_ERROR: 'AGENT_ERROR',\n SOFTPHONE_ERROR: 'SOFTPHONE_ERROR',\n SIGNED_RECORDING_URL: 'SIGNED_RECORDING_URL',\n UPDATE_AUDIO_STATS: 'UPDATE_AUDIO_STATS',\n UPDATE_AUDIO_STATS_COMPLETED: 'UPDATE_AUDIO_STATS_COMPLETED',\n SUPERVISOR_BARGED_IN: 'SUPERVISOR_BARGED_IN',\n SUPERVISOR_CALL_STARTED : 'SUPERVISOR_CALL_STARTED',\n SUPERVISOR_CALL_CONNECTED: 'SUPERVISOR_CALL_CONNECTED',\n SUPERVISOR_HANGUP : 'SUPERVISOR_HANGUP',\n CALL_BARGED_IN : 'CALL_BARGED_IN',\n SET_AGENT_STATUS: 'SET_AGENT_STATUS',\n GET_AGENT_STATUS: 'GET_AGENT_STATUS',\n STATE_CHANGE: 'STATE_CHANGE'\n },\n INFO_TYPE: {\n CAN_NOT_ACCEPT_THE_CALL: 'CAN_NOT_ACCEPT_THE_CALL'\n },\n ERROR_TYPE: {\n GENERIC_ERROR: 'GENERIC_ERROR',\n AGENT_ERROR: 'AGENT_ERROR',\n MICROPHONE_NOT_SHARED: 'MICROPHONE_NOT_SHARED',\n UNSUPPORTED_BROWSER: 'UNSUPPORTED_BROWSER',\n AUTHENTICATION_ERROR: 'AUTHENTICATION_ERROR',\n INVALID_AGENT_STATUS: 'INVALID_AGENT_STATUS',\n CAN_NOT_SET_AGENT_STATUS: 'CAN_NOT_SET_AGENT_STATUS',\n LOGIN_REQUIRED: 'LOGIN_REQUIRED',\n CAN_NOT_DECLINE_THE_CALL: 'CAN_NOT_DECLINE_THE_CALL',\n CAN_NOT_END_THE_CALL: 'CAN_NOT_END_THE_CALL',\n CAN_NOT_HOLD_CALL: 'CAN_NOT_HOLD_CALL',\n CAN_NOT_RESUME_CALL: 'CAN_NOT_RESUME_CALL',\n CAN_NOT_MUTE_CALL: 'CAN_NOT_MUTE_CALL',\n CAN_NOT_UNMUTE_CALL: 'CAN_NOT_UNMUTE_CALL',\n CAN_NOT_TOGGLE_MUTE: 'CAN_NOT_TOGGLE_MUTE',\n CAN_NOT_TOGGLE_HOLD: 'CAN_NOT_TOGGLE_HOLD',\n CAN_NOT_TOGGLE_RECORD: 'CAN_NOT_TOGGLE_RECORD',\n INVALID_PARTICIPANT: 'INVALID_PARTICIPANT',\n CAN_NOT_LOG_IN: 'CAN_NOT_LOG_IN',\n CAN_NOT_LOG_OUT: 'CAN_NOT_LOG_OUT',\n INVALID_PARAMS: 'INVALID_PARAMS',\n CAN_NOT_GET_PHONE_CONTACTS: 'CAN_NOT_GET_PHONE_CONTACTS',\n CAN_NOT_SWAP_PARTICIPANTS: 'CAN_NOT_SWAP_PARTICIPANTS',\n CAN_NOT_CONFERENCE: 'CAN_NOT_CONFERENCE',\n INVALID_DESTINATION: 'INVALID_DESTINATION',\n INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER',\n CAN_NOT_HANGUP_PARTICIPANT: 'CAN_NOT_HANGUP_PARTICIPANT',\n CAN_NOT_ADD_PARTICIPANT: 'CAN_NOT_ADD_PARTICIPANT',\n CAN_NOT_CONNECT_PARTICIPANT: 'CAN_NOT_CONNECT_PARTICIPANT',\n CAN_NOT_START_THE_CALL: 'CAN_NOT_START_THE_CALL',\n CAN_NOT_PAUSE_RECORDING: 'CAN_NOT_PAUSE_RECORDING',\n CAN_NOT_RESUME_RECORDING: 'CAN_NOT_RESUME_RECORDING',\n CAN_NOT_SET_AGENT_CONFIG: 'CAN_NOT_SET_AGENT_CONFIG',\n CAN_NOT_SET_CAPABILITIES: 'CAN_NOT_SET_CAPABILITIES',\n CAN_NOT_UPDATE_PHONE_NUMBER: 'CAN_NOT_UPDATE_PHONE_NUMBER',\n CAN_NOT_GET_SIGNED_RECORDING_URL: 'CAN_NOT_GET_SIGNED_RECORDING_URL',\n CAN_NOT_SUPERVISE_CALL : 'CAN_NOT_SUPERVISE_CALL',\n CAN_NOT_DISCONNECT_SUPERVISOR : 'CAN_NOT_DISCONNECT_SUPERVISOR',\n CAN_NOT_BARGE_IN_SUPERVISOR: 'CAN_NOT_BARGE_IN_SUPERVISOR',\n CAN_NOT_BARGE_IN_CALL: 'CAN_NOT_BARGE_IN_CALL',\n CAN_NOT_GET_AGENT_STATUS: 'CAN_NOT_GET_AGENT_STATUS',\n INVALID_STATE_CHANGE_RESULT: 'INVALID_STATE_CHANGE_RESULT'\n },\n AGENT_STATUS: {\n ONLINE: 'Online',\n OFFLINE: 'Offline',\n ACW : 'AfterCallWork',\n CALLBACK_MISSED_OR_REJECTED: 'CallbackMissedOrRejected' // Used only for Amazon; workaround for https://github.com/amazon-connect/amazon-connect-streams/issues/344\n },\n PARTICIPANT_TYPE: {\n AGENT: 'Agent',\n INITIAL_CALLER: 'Initial_Caller',\n THIRD_PARTY: 'Third_Party',\n SUPERVISOR: 'Supervisor'\n },\n CALL_TYPE: {\n INBOUND: 'Inbound',\n OUTBOUND: 'Outbound',\n CALLBACK: 'Callback',\n ADD_PARTICIPANT: 'AddParticipant',\n TRANSFER:'Transfer'\n },\n DIALER_TYPE: {\n OUTBOUND_PREVIEW: 'OutboundPreview',\n NONE: 'None'\n },\n CONTACT_TYPE: {\n PHONEBOOK: 'PhoneBook',\n QUEUE: 'Queue',\n PHONENUMBER: 'PhoneNumber',\n AGENT: 'Agent',\n FLOW: 'Flow'\n },\n AGENT_CONFIG_TYPE: {\n SHOW_AGENT_SETTINGS: 'SHOW_AGENT_SETTINGS',\n PHONES: 'PHONES',\n SELECTED_PHONE: 'SELECTED_PHONE'\n },\n CAPABILITIES_TYPE: {\n MUTE: 'MUTE',\n RECORD: 'RECORD',\n MERGE: 'MERGE',\n SWAP: 'SWAP',\n SIGNED_RECORDING_URL: 'SIGNED_RECORDING_URL',\n DEBUG_ENABLED: 'DEBUG_ENABLED',\n CONTACT_SEARCH: 'CONTACT_SEARCH',\n VENDOR_PROVIDED_AVAILABILITY: 'VENDOR_PROVIDED_AVAILABILITY',\n SUPERVISOR_LISTEN_IN: 'SUPERVISOR_LISTEN_IN',\n SUPERVISOR_BARGE_IN: 'SUPERVISOR_BARGE_IN',\n MOS: 'MOS',\n BLIND_TRANSFER: 'BLIND_TRANSFER',\n TRANSFER_TO_OMNI_FLOW: 'TRANSFER_TO_OMNI_FLOW',\n PENDING_STATUS_CHANGE: 'PENDING_STATUS_CHANGE'\n },\n CALL_STATE: {\n RINGING: 'ringing',\n CONNECTED: 'connected',\n TRANSFERRING: 'transferring',\n TRANSFERRED: 'transferred',\n ENDED: 'ended'\n },\n PHONE_TYPE: {\n DESK_PHONE: 'DESK_PHONE',\n SOFT_PHONE: 'SOFT_PHONE'\n },\n HANGUP_REASON: {\n PHONE_CALL_ERROR: \"error\",\n PHONE_CALL_ENDED: \"ended\"\n },\n AGENT_AVAILABILITY: {\n AVAILABLE: \"AVAILABLE\",\n BUSY: \"BUSY\",\n OFFLINE: \"OFFLINE\"\n },\n REMOVE_PARTICIPANT_VARIANT: {\n ALWAYS : 'ALWAYS',\n NEVER: 'NEVER',\n ALWAYS_EXCEPT_ON_HOLD: 'ALWAYS_EXCEPT_ON_HOLD'\n },\n LOG_LEVEL: {\n ERROR: \"ERROR\",\n INFO: \"INFO\"\n },\n LOG_SOURCE: {\n SYSTEM: \"SYSTEM\",\n PARTNER: \"PARTNER\"\n },\n CONTACTS_FILTER_TYPES: {\n \"AGENT\": \"AGENT\",\n \"QUEUE\": \"QUEUE\",\n \"CONTACT\": \"CONTACT\",\n \"DIRECTORY\": \"DIRECTORY\",\n \"FLOW\": \"FLOW\",\n \"AVAILABLE\": \"AVAILABLE\"\n }\n};\n\n/**\n * Fields in the connector configuration that are logged. \n */\nexport const CONNECTOR_CONFIG_EXPOSED_FIELDS = [\n \"/internalNameLabel\",\n \"/reqGeneralInfo/reqAdapterUrl\",\n \"/reqGeneralInfo/reqVendorInfoApiName\",\n \"isACWAllowed\",\n \"isHVSEnabled\",\n \"orgDomainName\",\n \"phoneServiceChannelId\",\n \"telephonySettingsComponentFqn\"\n];\n\n/**\n * Fields that starts with string in the connector configuration that are logged. \n */\nexport const CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH = [\n \"/reqHvcc\"\n];\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport { downloadData } from './downloadData.js';\nimport constants from './constants';\n\n//The max size of the logs in # of characaters\nconst MAX_LOGS_SIZE = 1.5e7/2; //15 MB or 7.5M characters\n\nconst _strify = obj => (typeof obj === 'string') ? obj : JSON.stringify(obj);\n\nlet LOGS_SIZE = 0;\nlet logs = [];\n\nfunction _log(logLevel, logMessage, logSource) {\n if(!logMessage) {\n throw new Error(\"Log Message required\");\n }\n logLevel = logLevel || constants.LOG_LEVEL.INFO;\n logSource = logSource || constants.LOG_SOURCE.PARTNER;\n\n const logStr = [new Date().toISOString(), _strify(logLevel), _strify(logSource), `${_strify(logMessage)}\\n`].join(\"|\");\n \n //If logs size is greater than max size, empty it.\n if(LOGS_SIZE + logStr.length >= MAX_LOGS_SIZE) {\n logs = []; \n LOGS_SIZE = 0;\n }\n LOGS_SIZE += logStr.length;\n logs.push(logStr);\n}\n\n/**\n * Log a message at a custom level.\n * @param {object} logMessage\n * @param {string} logLevel \n * @param {string} [logSource]\n */\nexport function log(logMessage, logLevel, logSource) {\n _log(logLevel, logMessage, logSource);\n}\n\n/**\n * \n * @returns a deep copy of the logs array\n */\nexport function getLogs() {\n return JSON.parse(JSON.stringify(logs));\n}\n\n/**\n * Download the logs as a file\n */\nexport function downloadLogs() {\n downloadData(logs.join(''), `log-${new Date().getTime()}.txt`, 'text/plain');\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Download data as a file.\n * @param {object} data \n * @param {string} fileName \n * @param {string} fileType\n */\n export function downloadData(data, fileName, fileType) {\n if(!document || !data) return;\n \n const dataStr = (typeof data === 'string') ? data : JSON.stringify(data);\n const file = new Blob([dataStr], {type: fileType});\n let a = document.createElement(\"a\") \n const blobURL = URL.createObjectURL(file);\n a.download = fileName;\n a.href = blobURL;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(blobURL);\n}","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/* eslint-disable no-unused-vars */\nimport constants from './constants.js';\nimport { downloadLogs } from './logger.js';\n\nexport const Constants = {\n EVENT_TYPE: {\n LOGIN_RESULT: constants.EVENT_TYPE.LOGIN_RESULT,\n LOGOUT_RESULT: constants.EVENT_TYPE.LOGOUT_RESULT,\n CALL_STARTED: constants.EVENT_TYPE.CALL_STARTED,\n QUEUED_CALL_STARTED: constants.EVENT_TYPE.QUEUED_CALL_STARTED,\n CALL_CONNECTED: constants.EVENT_TYPE.CALL_CONNECTED,\n HANGUP: constants.EVENT_TYPE.HANGUP,\n MUTE_TOGGLE: constants.EVENT_TYPE.MUTE_TOGGLE,\n HOLD_TOGGLE: constants.EVENT_TYPE.HOLD_TOGGLE,\n RECORDING_TOGGLE: constants.EVENT_TYPE.RECORDING_TOGGLE,\n PARTICIPANTS_SWAPPED: constants.EVENT_TYPE.PARTICIPANTS_SWAPPED,\n PARTICIPANTS_CONFERENCED: constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED,\n PARTICIPANT_ADDED: constants.EVENT_TYPE.PARTICIPANT_ADDED, \n PARTICIPANT_CONNECTED: constants.EVENT_TYPE.PARTICIPANT_CONNECTED,\n PARTICIPANT_REMOVED: constants.EVENT_TYPE.PARTICIPANT_REMOVED,\n MESSAGE: constants.EVENT_TYPE.MESSAGE,\n AFTER_CALL_WORK_STARTED: constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED,\n WRAP_UP_ENDED: constants.EVENT_TYPE.WRAP_UP_ENDED,\n AGENT_ERROR: constants.EVENT_TYPE.AGENT_ERROR,\n SOFTPHONE_ERROR: constants.EVENT_TYPE.SOFTPHONE_ERROR,\n UPDATE_AUDIO_STATS: constants.EVENT_TYPE.UPDATE_AUDIO_STATS,\n SUPERVISOR_BARGED_IN: constants.EVENT_TYPE.SUPERVISOR_BARGED_IN,\n SUPERVISOR_CALL_STARTED : constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED,\n SUPERVISOR_CALL_CONNECTED: constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,\n SUPERVISOR_HANGUP : constants.EVENT_TYPE.SUPERVISOR_HANGUP,\n SET_AGENT_STATUS: constants.EVENT_TYPE.SET_AGENT_STATUS,\n GET_AGENT_STATUS: constants.EVENT_TYPE.GET_AGENT_STATUS,\n STATE_CHANGE: constants.EVENT_TYPE.STATE_CHANGE\n },\n /**\n * @enum {string}\n */\n ERROR_TYPE: {\n GENERIC_ERROR: constants.ERROR_TYPE.GENERIC_ERROR,\n INVALID_PARTICIPANT: constants.ERROR_TYPE.INVALID_PARTICIPANT,\n INVALID_DESTINATION: constants.ERROR_TYPE.INVALID_DESTINATION,\n INVALID_PARAMS: constants.ERROR_TYPE.INVALID_PARAMS,\n INVALID_AGENT_STATUS: constants.ERROR_TYPE.INVALID_AGENT_STATUS,\n CAN_NOT_UPDATE_PHONE_NUMBER: constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER\n },\n /**\n * @enum {string}\n */\n AGENT_STATUS: { ...constants.AGENT_STATUS },\n /**\n * @enum {string}\n */\n PARTICIPANT_TYPE: { ...constants.PARTICIPANT_TYPE },\n /**\n * @enum {string}\n */\n CALL_TYPE: { ...constants.CALL_TYPE },\n /**\n * @enum {string}\n */\n DIALER_TYPE: { ...constants.DIALER_TYPE },\n /**\n * @enum {string}\n */\n CONTACT_TYPE: { ...constants.CONTACT_TYPE },\n /**\n * @enum {string}\n */\n CALL_STATE: { ...constants.CALL_STATE },\n /**\n * @enum {string}\n */\n HANGUP_REASON: { ...constants.HANGUP_REASON },\n /**\n * @enum {string}\n */\n PHONE_TYPE: { ...constants.PHONE_TYPE },\n /**\n * @enum {String}\n */\n AGENT_AVAILABILITY: { ...constants.AGENT_AVAILABILITY },\n /**\n * @enum (String)\n */\n REMOVE_PARTICIPANT_VARIANT: { ...constants.REMOVE_PARTICIPANT_VARIANT },\n /**\n * @enum {String}\n */\n LOG_LEVEL: { ...constants.LOG_LEVEL },\n /**\n * @enum {String}\n */\n CONTACTS_FILTER_TYPES: { ...constants.CONTACTS_FILTER_TYPES }\n};\n\n/**\n * Class representing a Phone type\n */\n export class Phone {\n /**\n * Create Phone\n * @param {object} param\n * @param {PHONE_TYPE} param.type\n * @param {string} [param.number]\n */\n constructor({ type, number}) {\n Validator.validateEnum(type, Object.values(constants.PHONE_TYPE));\n if(number) {\n Validator.validateString(number);\n }\n this.type = type;\n this.number = number;\n }\n}\n\n/**\n * Class representing result type for mute() & unmute()\n */\nexport class MuteToggleResult {\n /**\n * Create ActiveCallsResult\n * @param {object} param\n * @param {boolean} param.isMuted\n */\n constructor({ isMuted }) {\n this.isMuted = isMuted;\n }\n}\n\n/**\n * Class representing result type for getActiveCalls()\n */\nexport class ActiveCallsResult {\n /**\n * Create ActiveCallsResult\n * @param {object} param\n * @param {PhoneCall[]} [param.activeCalls]\n */\n constructor({ activeCalls = [] }) {\n if (activeCalls.length > 0) {\n activeCalls.forEach(activeCall => {\n Validator.validateClassObject(activeCall, PhoneCall);\n });\n }\n this.activeCalls = activeCalls;\n }\n}\n\n/**\n * Class representing result type for getCapabilities()\n */\nexport class CapabilitiesResult {\n /**\n * Create CapabilitiesResult\n * @param {object} param\n * @param {boolean} [param.hasMute]\n * @param {boolean} [param.hasRecord]\n * @param {boolean} [param.hasMerge]\n * @param {boolean} [param.hasSwap]\n * @param {boolean} [param.hasSignedRecordingUrl]\n * @param {boolean} [param.debugEnabled]\n * @param {boolean} [param.hasContactSearch] True if getPhoneContacts uses the 'contain' filter\n * @param {boolean} [param.hasAgentAvailability] True if getPhoneContacts also provides agent availability\n * @param {boolean} [param.supportsMos] True if vendor support MOS\n * @param {boolean} [param.hasSupervisorListenIn] True if vendor supports supervisor listening to a ongoing call\n * @param {boolean} [param.hasSupervisorBargeIn] True if vendor supports Supervisor barging into a ongoing call\n * @param {boolean} [param.hasBlindTransfer] True if vendor supports blind transfers\n * @param {boolean} [param.hasBlindTransfer] True if vendor supports transfer to omni flows\n * @param {boolean} [param.hasPendingStatusChange] True if vendor supports Pending Status Change\n */\n constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false, hasTransferToOmniFlow = false, hasPendingStatusChange=false }) {\n Validator.validateBoolean(hasMute);\n Validator.validateBoolean(hasRecord);\n Validator.validateBoolean(hasMerge);\n Validator.validateBoolean(hasSwap);\n Validator.validateBoolean(hasSignedRecordingUrl);\n Validator.validateBoolean(debugEnabled);\n Validator.validateBoolean(hasContactSearch);\n Validator.validateBoolean(hasAgentAvailability);\n Validator.validateBoolean(supportsMos);\n Validator.validateBoolean(hasSupervisorListenIn);\n Validator.validateBoolean(hasSupervisorBargeIn);\n Validator.validateBoolean(hasBlindTransfer);\n Validator.validateBoolean(hasTransferToOmniFlow);\n Validator.validateBoolean(hasPendingStatusChange);\n\n this.hasMute = hasMute;\n this.hasRecord = hasRecord;\n this.hasMerge = hasMerge;\n this.hasSwap = hasSwap;\n this.hasSignedRecordingUrl = hasSignedRecordingUrl;\n this.debugEnabled = debugEnabled;\n this.hasContactSearch = hasContactSearch;\n this.hasAgentAvailability = hasAgentAvailability;\n this.supportsMos = supportsMos;\n this.hasSupervisorListenIn = hasSupervisorListenIn;\n this.hasSupervisorBargeIn = hasSupervisorBargeIn;\n this.hasBlindTransfer = hasBlindTransfer;\n this.hasTransferToOmniFlow = hasTransferToOmniFlow;\n this.hasPendingStatusChange = hasPendingStatusChange;\n }\n}\n\n/**\n * Class representing result type for getAgentConfig()\n */\nexport class AgentConfigResult {\n /**\n * Create AgentConfigResult\n * @param {object} param\n * @param {Phone[]} [param.phones]\n * @param {Phone} [param.selectedPhone]\n */\n constructor({ phones = [constants.PHONE_TYPE.SOFT_PHONE], selectedPhone = new Phone({type: constants.PHONE_TYPE.SOFT_PHONE}) }) {\n Validator.validateClassObject(phones, Array);\n Validator.validateClassObject(selectedPhone, Phone);\n\n this.phones = phones;\n this.selectedPhone = selectedPhone;\n }\n}\n\n/**\n * Class representing AgentConfig type for setAgentConfig()\n */\nexport class AgentConfig {\n /**\n * Create AgentConfig\n * @param {object} param\n * @param {Phone} [param.selectedPhone]\n */\n constructor({ selectedPhone }) {\n Validator.validateClassObject(selectedPhone, Phone);\n this.selectedPhone = selectedPhone;\n }\n}\n\n/**\n * Class representing result type for pauseRecording() & resumeRecording\n */\nexport class RecordingToggleResult {\n /**\n * Create RecordingToggleResult\n * @param {object} param\n * @param {boolean} param.isRecordingPaused\n * @param {string} [param.contactId]\n * @param {string} [param.initialContactId]\n * @param {string} [param.instanceId]\n * @param {string} [param.region]\n */\n constructor({ isRecordingPaused, contactId = null, initialContactId = null, instanceId = null, region = null }) {\n this.isRecordingPaused = isRecordingPaused;\n this.contactId = contactId;\n this.initialContactId = initialContactId;\n this.instanceId = instanceId;\n this.region = region;\n }\n}\n\n/**\n * Class representing result type for addParticipant()\n */\nexport class ParticipantResult {\n /**\n * Create ParticipantResult\n * @param {object} param\n * @param {boolean} param.initialCallHasEnded\n * @param {CallInfo} param.callInfo\n * @param {string} param.phoneNumber\n * @param {string} param.callId\n */\n constructor({ initialCallHasEnded, callInfo, phoneNumber, callId }) {\n Validator.validateClassObject(callInfo, CallInfo);\n this.initialCallHasEnded = initialCallHasEnded;\n this.callInfo = callInfo;\n this.phoneNumber = phoneNumber;\n this.callId = callId;\n }\n}\n\n/**\n * Class representing result type for getPhoneContacts()\n */\nexport class PhoneContactsResult {\n /**\n * Create PhoneContactsResult\n * @param {object} param\n * @param {Contact[]} [param.contacts]\n * @param {Array} [param.contactTypes]\n */\n constructor({ contacts = [], contactTypes = [] }) {\n if (contacts.length > 0) {\n contacts.forEach(contact => {\n Validator.validateClassObject(contact, Contact);\n });\n }\n if (contactTypes.length > 0) {\n contactTypes.forEach(filterType => {\n Validator.validateEnum(filterType, Object.values(constants.CONTACT_TYPE));\n });\n }\n this.contacts = contacts;\n this.contactTypes = contactTypes;\n }\n}\n\n/**\n * Class representing result type for accept(), decline(), dial()\n */\nexport class CallResult {\n /**\n * Create CallResult\n * @param {object} param\n * @param {PhoneCall} [param.call]\n */\n constructor({ call }) {\n if (call !== undefined) {\n Validator.validateClassObject(call, PhoneCall);\n }\n this.call = call;\n }\n}\n\n/**\n * Class representing result type for endCall(), hangup()\n */\nexport class HangupResult {\n /**\n * Create CallResult\n * @param {object} param\n * @param {PhoneCall[]|PhoneCall} param.calls - one or more calls (can be multiple calls in case of agent endcall/hangup)\n */\n constructor({ calls }) {\n if (calls instanceof Array) {\n calls.forEach(call => Validator.validateClassObject(call, PhoneCall));\n this.calls = calls;\n } else {\n Validator.validateClassObject(calls, PhoneCall);\n this.calls = [calls];\n }\n }\n}\n\n/**\n * Class representing result type for hold() & resume()\n */\nexport class HoldToggleResult {\n /**\n * Create HoldToggleResult\n * @param {object} param\n * @param {boolean} param.isThirdPartyOnHold\n * @param {boolean} param.isCustomerOnHold\n * @param {PhoneCall[]} [param.calls]\n */\n constructor({ isThirdPartyOnHold, isCustomerOnHold, calls }) {\n if (calls) {\n Object.values(calls).forEach(call => {\n Validator.validateClassObject(call, PhoneCall);\n });\n this.calls = calls;\n }\n this.isThirdPartyOnHold = isThirdPartyOnHold;\n this.isCustomerOnHold = isCustomerOnHold;\n }\n}\n\n/**\n * Class representing result type for getRecordingUrl\n */\n export class SignedRecordingUrlResult {\n /**\n * Create SignedRecordingUrlResult\n * @param {object} param\n * @param {boolean} param.success\n * @param {string} [param.url]\n * @param {number} [param.duration] in seconds\n * @param {string} [param.callId] Salesforce callId of the voice call\n */\n constructor({ success, url, duration, callId }) {\n if (success) {\n // For a successfull result, url is required\n Validator.validateString(url);\n Validator.validateString(callId);\n if (duration) {\n Validator.validateNumber(duration);\n }\n }\n this.success = success;\n this.url = url;\n this.duration = duration;\n this.callId = callId;\n }\n}\n\n/**\n * Class representing result type for init()\n */\nexport class InitResult {\n /**\n * Create InitResult\n * @param {object} param\n * @param {boolean} [param.showLogin]\n * @param {number} [param.loginFrameHeight]\n */\n constructor({ showLogin = false, loginFrameHeight = 350 }) {\n this.showLogin = showLogin;\n this.loginFrameHeight = loginFrameHeight;\n }\n}\n\n/**\n * Class representing generic result type\n */\nexport class GenericResult {\n /**\n * Create GenericResult\n * @param {object} param\n * @param {boolean} param.success\n */\n constructor({ success }) {\n this.success = success;\n }\n}\n\n/**\n * Class representing logout result type\n */\n export class LogoutResult {\n /**\n * Create LogoutResult\n * @param {object} param\n * @param {boolean} param.success\n * @param {number} [param.loginFrameHeight]\n */\n constructor({ success, loginFrameHeight = 350 }) {\n this.success = success;\n this.loginFrameHeight = loginFrameHeight;\n }\n}\n\n/**\n * Class representing callInfo class (call metadata)\n */\nexport class CallInfo {\n /**\n * Create CallInfo\n * @param {object} param\n * @param {boolean} param.isOnHold\n * @param {boolean} param.isRecordingPaused\n * @param {boolean} param.isMuted\n * @param {string} [param.initialCallId]\n * @param {Date} [param.callStateTimestamp]\n * @param {boolean} [param.isSoftphoneCall] - is it a softphone call \n * @param {boolean} [param.acceptEnabled]\n * @param {boolean} [param.declineEnabled]\n * @param {boolean} [param.muteEnabled]\n * @param {boolean} [param.swapEnabled]\n * @param {boolean} [param.conferenceEnabled]\n * @param {boolean} [param.holdEnabled]\n * @param {boolean} [param.recordEnabled]\n * @param {boolean} [param.addCallerEnabled]\n * @param {boolean} [param.extensionEnabled]\n * @param {boolean} [param.isReplayable]\n * @param {boolean} [param.isBargeable]\n * @param {boolean} [param.isExternalTransfer]\n * @param {(\"ALWAYS\"|\"NEVER\"|\"ALWAYS_EXCEPT_ON_HOLD\")} [param.removeParticipantVariant] - The type of remove participant variant when in a transfer call. \n */\n constructor({ callStateTimestamp = null, isOnHold, isMuted = false, isRecordingPaused = false, initialCallId, isSoftphoneCall = true, \n acceptEnabled = true, declineEnabled = true, muteEnabled = true, swapEnabled = true, conferenceEnabled = true, holdEnabled = true,\n recordEnabled = true, addCallerEnabled = true, extensionEnabled = true, isReplayable = true, isBargeable = false, isExternalTransfer, \n removeParticipantVariant = Constants.REMOVE_PARTICIPANT_VARIANT.ALWAYS }) {\n if (callStateTimestamp) {\n Validator.validateDate(callStateTimestamp);\n }\n Validator.validateBoolean(isRecordingPaused);\n Validator.validateBoolean(isMuted);\n Validator.validateBoolean(isSoftphoneCall);\n Validator.validateBoolean(acceptEnabled);\n Validator.validateBoolean(declineEnabled);\n Validator.validateBoolean(muteEnabled);\n Validator.validateBoolean(swapEnabled);\n Validator.validateBoolean(conferenceEnabled);\n Validator.validateBoolean(holdEnabled);\n Validator.validateBoolean(recordEnabled);\n Validator.validateBoolean(addCallerEnabled);\n Validator.validateBoolean(extensionEnabled);\n Validator.validateBoolean(isBargeable);\n if (isExternalTransfer !== undefined) {\n Validator.validateBoolean(isExternalTransfer);\n }\n Validator.validateEnum(removeParticipantVariant, Object.values(constants.REMOVE_PARTICIPANT_VARIANT));\n this.callStateTimestamp = callStateTimestamp;\n this.isRecordingPaused = isRecordingPaused;\n this.isMuted = isMuted;\n this.isOnHold = isOnHold;\n this.initialCallId = initialCallId;\n this.isSoftphoneCall = isSoftphoneCall;\n this.acceptEnabled = acceptEnabled;\n this.declineEnabled = declineEnabled;\n this.muteEnabled = muteEnabled;\n this.swapEnabled = swapEnabled;\n this.conferenceEnabled = conferenceEnabled;\n this.holdEnabled = holdEnabled;\n this.recordEnabled = recordEnabled;\n this.addCallerEnabled = addCallerEnabled;\n this.extensionEnabled = extensionEnabled;\n this.isReplayable = isReplayable;\n this.isBargeable = isBargeable;\n this.isExternalTransfer = isExternalTransfer;\n this.removeParticipantVariant = removeParticipantVariant;\n }\n}\n\n/** \n * Class representing a Contact. This object is used to represent \n * phone system contact or any call target\n */\n\nexport class Contact {\n /**\n * Create a Contact.\n * @param {object} param\n * @param {string} [param.id] - The unique contactId\n * @param {(\"PhoneBook\"|\"Queue\"|\"PhoneNumber\"|\"Agent\")} [param.type] - The type of the contact, one of the CONTACT_TYPE values\n * @param {string} [param.name] - The label for this contact to be displayed in the UI\n * @param {string} [param.phoneNumber] - The phone number associcated with this contact\n * @param {string} [param.prefix] - Any prefix to be dialed before dialing the number (i.e. +1)\n * @param {string} [param.extension] - Any extension to be dialed after dialing the number\n * @param {string} [param.endpointARN]\n * @param {string} [param.queue]\n * @param {string} [param.availability]\n * @param {string} [param.recordId] - Salesforce RecordId\n * @param {string} [param.description] - Contact Description \n */\n constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description}) {\n if (phoneNumber) {\n Validator.validateString(phoneNumber);\n }\n if (type) {\n Validator.validateEnum(type, Object.values(constants.CONTACT_TYPE));\n }\n if (id) {\n Validator.validateString(id);\n }\n if (name) {\n Validator.validateString(name);\n }\n if (prefix) {\n Validator.validateString(prefix);\n }\n if (extension) {\n Validator.validateString(extension);\n }\n if (availability) {\n Validator.validateEnum(availability, Object.values(constants.AGENT_AVAILABILITY));\n }\n if (recordId) {\n Validator.validateString(recordId);\n }\n if (description) {\n Validator.validateString(description);\n }\n\n this.phoneNumber = phoneNumber;\n this.id = id;\n this.type = type;\n this.name = name;\n this.prefix = prefix;\n this.extension = extension;\n this.endpointARN = endpointARN;\n this.queue = queue;\n if (constants.CONTACT_TYPE.AGENT === this.type) {\n this.availability = availability;\n } else {\n this.availability = null;\n }\n this.recordId = recordId;\n this.description = description;\n }\n}\n\n/** \n* Class representing PhoneCallAttributes\n*/\n\nexport class PhoneCallAttributes {\n /**\n * Create PhoneCallAttributes.\n * @param {object} param\n * @param {string} [param.voiceCallId] - The voice call id\n * @param {PARTICIPANT_TYPE} [param.participantType] - The participant type of the call\n * @param {DIALER_TYPE} [param.dialerType] - The dialer type of the call\n * @param {string} [param.parentId] - The parent call id of the call\n * @param {boolean} [param.isOnHold]\n * @param {boolean} [param.hasSupervisorBargedIn]\n */\n constructor({ voiceCallId, participantType, dialerType = Constants.DIALER_TYPE.NONE, parentId, isOnHold, hasSupervisorBargedIn = false }) {\n if (voiceCallId) {\n Validator.validateString(voiceCallId);\n }\n if (participantType) {\n Validator.validateEnum(participantType, Object.values(constants.PARTICIPANT_TYPE));\n }\n if (parentId) {\n Validator.validateString(parentId);\n }\n if (isOnHold !== undefined) {\n Validator.validateBoolean(isOnHold);\n }\n\n Validator.validateBoolean(hasSupervisorBargedIn);\n Validator.validateEnum(dialerType, Object.values(constants.DIALER_TYPE));\n\n this.voiceCallId = voiceCallId;\n this.participantType = participantType;\n this.parentId = parentId;\n this.isOnHold = isOnHold;\n this.dialerType = dialerType;\n this.hasSupervisorBargedIn = hasSupervisorBargedIn;\n }\n}\n\n/** \n* Class representing a PhoneCall. \n*/\n\nexport class PhoneCall {\n /**\n * Create a PhoneCall.\n * @param {object} param\n * @param {string} [param.callId] - The unique callId. This is a required parameter\n * @param {CALL_TYPE} [param.callType] - The type of the call, one of the CALL_TYPE values\n * @param {Contact} [param.contact] - The Call Target / Contact \n * @param {string} [param.state] - The state of the call, i.e. ringing, connected, declined, failed \n * @param {PhoneCallAttributes} [param.callAttributes] - Any additional call attributes\n * @param {string} [param.phoneNumber] - The phone number associated with this call (usually external number)\n * @param {CallInfo} [param.callInfo]\n * @param {string} [param.reason]\n * @param {boolean} [param.closeCallOnError]\n * @param {string} [param.agentStatus]\n */\n constructor({callId, callType, contact, state, callAttributes, phoneNumber, callInfo, reason, closeCallOnError, agentStatus }) {\n // TODO: Revisit the required fields\n if (callId) {\n Validator.validateString(callId);\n this.callId = callId;\n }\n if (callType) {\n Validator.validateEnum(callType, Object.values(constants.CALL_TYPE));\n this.callType = callType;\n }\n if (phoneNumber) {\n Validator.validateString(phoneNumber);\n this.phoneNumber = phoneNumber;\n }\n if (callInfo) {\n Validator.validateClassObject(callInfo, CallInfo);\n this.callInfo = callInfo;\n }\n if (contact) {\n Validator.validateClassObject(contact, Contact);\n this.contact = contact;\n }\n if (reason) {\n this.reason = reason;\n }\n if (closeCallOnError) {\n this.closeCallOnError = closeCallOnError;\n }\n if (agentStatus) {\n this.agentStatus = agentStatus;\n }\n this.state = state;\n this.callAttributes = callAttributes;\n }\n}\n\n/** \n* Class representing a VendorConnector\n*/\nexport class VendorConnector {\n /**\n * Initialize the connector\n * @param {object} connectorConfig\n * @returns {Promise} \n * \n */\n init(config) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get the currently active calls\n * @returns {Promise} \n * \n */\n getActiveCalls() {\n throw new Error('Not implemented');\n }\n\n /**\n * Accept call\n * @param {PhoneCall} call - The call to be accepted\n * @returns {Promise} \n * \n */\n acceptCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Decline call\n * @param {PhoneCall} call - The call to be declined\n * @returns {Promise} \n * \n */\n declineCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * End call\n * @param {PhoneCall} call - The call to be ended\n * @param {AGENT_STATUS} agentStatus\n * @returns {Promise} \n * \n */\n endCall(call, agentStatus) {\n throw new Error('Not implemented');\n }\n\n /**\n * Mute call\n * @returns {Promise} \n * \n */\n mute() {\n throw new Error('Not implemented');\n }\n\n /**\n * Unmute call\n * @returns {Promise} \n * \n */\n unmute() {\n throw new Error('Not implemented');\n }\n\n /**\n * Hold call\n * @param {PhoneCall} call - The call to be held\n * @returns {Promise} \n * \n */\n hold(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Resume call\n * @param {PhoneCall} call - The call to be resumed\n * @returns {Promise} \n * \n */\n resume(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Set agent status\n * @param {string} agentStatus\n * @param {StatusInfo} statusInfo\n * @param {Boolean} enqueueNextState - flag to determine if this status change request should be enqueued if neccessary\n * @returns {Promise} \n * \n */\n setAgentStatus(agentStatus, statusInfo, enqueueNextState) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get agent status\n * @returns {Promise} \n * \n */\n getAgentStatus() {\n this.logMessageToVendor(constants.LOG_LEVEL.INFO, 'getAgentStatus API is NOT Implemented' );\n }\n\n /**\n * Dial out Number\n * @param {Contact} contact\n * @returns {Promise} \n * \n */\n dial(contact) {\n throw new Error('Not implemented');\n }\n\n /**\n * Send digits\n * @param {string} digits\n */\n sendDigits(digits) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get phone contacts\n * @returns {Promise} \n */\n getPhoneContacts() {\n throw new Error('Not implemented');\n }\n\n /**\n * Swap calls\n * @param {PhoneCall} call1\n * @param {PhoneCall} call2\n * @returns {Promise} \n */\n swap(call1, call2) {\n throw new Error('Not implemented');\n }\n\n /**\n * Conference calls\n * @param {PhoneCall[]} calls\n * @returns {Promise} \n */\n conference(calls) {\n throw new Error('Not implemented');\n }\n\n /**\n * Add participant to call\n * @param {Contact} contact\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n addParticipant(contact, call, isBlindTransfer) {\n throw new Error('Not implemented');\n }\n\n /**\n * Pause recording\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n pauseRecording(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Resume recording\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n resumeRecording(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get agentConfig\n * @returns {Promise}\n */\n getAgentConfig() {\n throw new Error('Not implemented');\n }\n\n /**\n * Set Agent Config\n * @param {AgentConfig} config\n * @returns {Promise}\n */\n setAgentConfig(config) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get Capabilities\n * @returns {Promise}\n */\n getCapabilities() {\n throw new Error('Not implemented');\n }\n \n\n /**\n * Logout from Omni\n * @returns {Promise} \n */\n logout() {\n throw new Error('Not implemented');\n }\n\n /**\n * Handle message from LWC/Aura component\n * @param {object} message\n */\n handleMessage(message) {\n throw new Error('Not implemented');\n }\n\n /**\n * Wrap up call\n * @param {PhoneCall} call\n */\n wrapUpCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get the signed recording url\n * @param {String} recordingUrl\n * @param {String} vendorCallKey\n * @param {String} callId\n * @returns {Promise} \n */\n getSignedRecordingUrl(recordingUrl, vendorCallKey, callId) {\n throw new Error('Not implemented');\n }\n\n /**\n * Triggers a browser download for Vendor Logs\n * @param {String[]} logs Array of log messages.\n */\n downloadLogs(logs) {\n downloadLogs();\n }\n\n /**\n * Sends the logs with a logLevel and payload to the vendor connector.\n * Does a no-op, if not implemented.\n * @param {String} logLevel Log Level (INFO, WARN, ERROR)\n * @param {String} message Message to be logged\n * @param {Object} payload An optional payload to be logged\n */\n logMessageToVendor(logLevel, message, payload) {}\n\n /**\n * Supervise a call\n * @param {SupervisedCallInfo} call Call to be supervised\n */\n superviseCall(supervisedCallInfo) {\n throw new Error('Not implemented');\n }\n\n /**\n * Supervisor disconnects from a call\n * @param {PhoneCall} call Call to be disconnected\n */\n supervisorDisconnect(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Supervisor Barges into a ongoing call\n * @param {PhoneCall} call Call which supervisor barges in\n */\n supervisorBargeIn(call) {\n throw new Error('Not implemented');\n }\n}\n\nexport class Validator {\n static validateString(value) {\n if (typeof value !== 'string') {\n throw new Error(`Invalid argument. Expecting a string but got ${typeof value}`);\n }\n return this;\n }\n\n static validateNumber(value) {\n if (typeof value !== 'number') {\n throw new Error(`Invalid argument. Expecting a number but got ${typeof value}`);\n }\n return this;\n }\n\n static validateBoolean(value) {\n if (typeof value !== 'boolean') {\n throw new Error(`Invalid argument. Expecting a boolean but got ${typeof value}`);\n }\n return this;\n }\n\n static validateEnum(value, enumValues) {\n const regex = new RegExp(enumValues.join( \"|\" ), \"i\");\n if (!regex.test(value)) {\n throw new Error(`Invalid argument. Expecting a value from ${JSON.stringify(enumValues)} but got ${value}`);\n }\n return this;\n }\n\n static validateDate(value) {\n if (!(value instanceof Date)) {\n throw new Error(`Invalid argument. Expecting a Date object but got ${typeof value}`);\n }\n return this;\n }\n\n static validateClassObject(object, className) {\n if (!(object instanceof className)) {\n throw new Error(`Invalid className. Expecting object of class ${className} but got ${typeof object}`);\n }\n return this;\n }\n}\n\n/** \n * Class representing an Agent status information. This object is used to represent \n * agent status information\n */\n\nexport class AgentStatusInfo {\n /**\n * Create a AgentStatusInfo.\n * @param {object} param\n * @param {string} [param.statusId] - The unique statusId (required)\n * @param {string} [param.statusApiName] - The status API name\n * @param {string} [param.statusName] - The label for this status to be displayed in the UI\n */\n constructor({statusId, statusApiName, statusName}) {\n Validator.validateString(statusId);\n if (statusApiName) {\n Validator.validateString(statusApiName);\n }\n if (statusName) {\n Validator.validateString(statusName);\n }\n this.statusId = statusId;\n this.statusApiName = statusApiName;\n this.statusName = statusName;\n }\n}\n\n/** \n * Class representing an Agent Vendor status information. This object is used to represent \n * agent vendor side status information\n */\nexport class AgentVendorStatusInfo {\n /**\n * Create a AgentVendorStatusInfo.\n * @param {object} param\n * @param {string} [param.statusId] - The unique statusId (e.g agentStateARN)\n * @param {string} [param.statusType] - The agent's current availability state type\n * @param {string} [param.statusName] - The name of the agent's current availability state\n */\n constructor({statusId, statusType, statusName}) {\n if (statusId) {\n Validator.validateString(statusId);\n }\n if (statusType) {\n Validator.validateString(statusType);\n }\n if (statusName) {\n Validator.validateString(statusName);\n }\n this.statusId = statusId;\n this.statusType = statusType;\n this.statusName = statusName;\n }\n}\n\n/** \n * NOTE: SALESFORCE INTERNAL USE ONLY\n * Class representing an State Change Result information. This object is used to represent \n * Agent State Change Infomation\n */\n export class StateChangeResult {\n /**\n * Create a StateChangeResult.\n * @param {object} param\n * @param {AgentVendorStatusInfo} [param.newVendorStateInfo] - newStateName (e.g 'Available') (required), newStateType (e.g 'routable')\n * @param {AgentVendorStatusInfo} [param.oldVendorStateInfo] - oldStateName (e.g 'offline'), oldStateType (e.g 'Offline')\n */\n constructor({newVendorStateInfo, oldVendorStateInfo}) {\n Validator.validateClassObject(newVendorStateInfo, AgentVendorStatusInfo);\n Validator.validateString(newVendorStateInfo.statusName);\n if (oldVendorStateInfo) {\n Validator.validateClassObject(oldVendorStateInfo, AgentVendorStatusInfo);\n }\n this.newVendorStateInfo = newVendorStateInfo;\n this.oldVendorStateInfo = oldVendorStateInfo;\n }\n}\n\n/** \n * Class representing a Supervised Call Info. This object is used to represent \n * information about a call that is being supervised by a supervisor.\n */\nexport class SupervisedCallInfo {\n /**\n * Create a AgentStatusInfo.\n * @param {object} param\n * @param {string} [param.callId] - The unique supervised vendor call ID (required)\n * @param {string} [param.voiceCallId] - The supervised salesforce voice call ID\n * @param {string} [param.callType] - The type of the call, one of the CALL_TYPE values\n * @param {string} [param.from] - From phone number (for Inbound calls)\n * @param {string} [param.to] - To phone number (for Outbound calls)\n * @param {string} [param.supervisorName] - The supervisor name (shown to the supervised agent on barge in)\n * @param {boolean} [param.isBargedIn] - True if the Supervisor has barged in, False if the supervisor is listening in.\n */\n\n constructor({callId, voiceCallId, callType, from, to, supervisorName, isBargedIn}) {\n Validator.validateString(callId);\n this.callId = callId;\n this.voiceCallId = voiceCallId;\n this.callType = callType;\n this.from = from;\n this.to = to;\n this.supervisorName = supervisorName;\n this.isBargedIn = isBargedIn;\n }\n}\n\n/**\n * Class representing a Audio Stats, which contains array of AudioStats. This object is used to calculate the MOS Score\n */\n\nexport class AudioStats {\n /**\n * Create a AudioStats\n * @param {object} param\n * @param {string} [param.callId] - The unique callId.\n * @param {AudioStatsElement[]} param.stats - array of AudioStatsElement\n * @param {boolean} [param.isAudioStatsCompleted] - True if the audio stats is completed, will calculate MOS and update VoiceCall record\n */\n constructor({ callId, stats, isAudioStatsCompleted }) {\n if (callId) {\n Validator.validateString(callId);\n this.callId = callId;\n }\n\n if (stats) {\n Validator.validateClassObject(stats, Array);\n stats.forEach(audioStatsElement => Validator.validateClassObject(audioStatsElement, AudioStatsElement));\n this.stats = stats;\n }\n\n if (isAudioStatsCompleted) {\n Validator.validateBoolean(isAudioStatsCompleted);\n this.isAudioStatsCompleted = isAudioStatsCompleted;\n }\n }\n}\n\n/**\n * Class representing a Audio Stats Element. This object is used to calculate the MOS Score\n */\n\nexport class AudioStatsElement {\n /**\n * Create a AudioStatsElement\n * @param {object} param\n * @param {StatsInfo} [param.inputChannelStats] - the inputChannel stream stats\n * @param {StatsInfo} [param.outputChannelStats] - the ouputChannel stream stats\n */\n constructor({inputChannelStats, outputChannelStats}) {\n if (inputChannelStats) {\n Validator.validateClassObject(inputChannelStats, StatsInfo);\n }\n if (outputChannelStats) {\n Validator.validateClassObject(outputChannelStats, StatsInfo);\n }\n \n this.inputChannelStats = inputChannelStats;\n this.outputChannelStats = outputChannelStats;\n }\n}\n\n/**\n * Class representing a Stream Stats. This object is used to calculate the MOS Score\n */\n\nexport class StatsInfo {\n /**\n * Create a StatsInfo\n * @param {object} param\n * @param {number} [param.packetsCount] - the packets count\n * @param {number} [param.packetsLost] - packets lost count\n * @param {number} [param.jitterBufferMillis] - jitter buffer in milliseconds\n * @param {number} [param.roundTripTimeMillis] - round trip time in milliseconds\n */\n constructor({packetsCount, packetsLost, jitterBufferMillis, roundTripTimeMillis}) {\n packetsCount = (packetsCount == null || packetsCount < 0) ? 0 : packetsCount;\n packetsLost = (packetsLost == null || packetsLost < 0) ? 0 : packetsLost;\n jitterBufferMillis = (jitterBufferMillis == null || jitterBufferMillis < 0) ? 0 : jitterBufferMillis;\n roundTripTimeMillis = (roundTripTimeMillis == null || roundTripTimeMillis < 0) ? 0 : roundTripTimeMillis;\n\n this.statsCount = 0;\n this.packetsCount = packetsCount;\n this.packetsLost = packetsLost;\n this.jitterBufferMillis = jitterBufferMillis;\n this.roundTripTimeMillis = roundTripTimeMillis;\n }\n}\n\n/**\n * Class representing supervise call result\n */\n export class SuperviseCallResult {\n /**\n * Create a SuperviseCallResult\n * @param {object} param\n * @param {PhoneCall} param.call\n */\n constructor({call}) {\n Validator.validateClassObject(call, PhoneCall);\n this.call = call;\n }\n}\n\n/**\n * Class representing result type for supervisorDisconnected()\n */\n export class SupervisorHangupResult extends HangupResult {\n /**\n * Create SupervisorHangupResult\n * @param {object} param\n * @param {PhoneCall[]|PhoneCall} param.calls - one or more calls when supervisor hangsup\n */\n constructor({ calls }) {\n super({ calls });\n }\n }","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport { AudioStatsElement, StatsInfo } from './types';\nlet audioStatus;\nlet supportsMos = false;\n\nfunction getAvgStats(streamType) {\n const stats = audioStatus[streamType];\n return {\n packetsCount: stats.packetsCount / stats.statsCount,\n packetsLost: stats.packetsLost / stats.statsCount,\n jitterBufferMillis: stats.jitterBufferMillis / stats.statsCount,\n roundTripTimeMillis: stats.roundTripTimeMillis / stats.statsCount\n };\n}\n\nfunction getMOSByStream(streamType) {\n const avgStats = getAvgStats(streamType);\n const effectiveLatency = avgStats.roundTripTimeMillis + (avgStats.jitterBufferMillis * 2) + 10.0;\n let R = 0;\n if (effectiveLatency < 160) {\n R = 93.2 - (effectiveLatency / 40);\n } else {\n R = 93.2 - (effectiveLatency - 120) / 10;\n }\n R -= avgStats.packetsLost / avgStats.packetsCount * 2.50;\n return 1 + (0.035) * R + (.000007) * R * (R - 60) * (100 - R);\n}\n\nexport function enableMos() {\n supportsMos = true;\n}\n\nexport function getMOS() {\n if (!supportsMos || !audioStatus) {\n return undefined;\n }\n const inputChannelMOS = getMOSByStream('inputChannelStats');\n const ouputChannelMOS = getMOSByStream('outputChannelStats');\n audioStatus = null;\n if (isNaN(ouputChannelMOS) && isNaN(inputChannelMOS)) {\n return 0;\n } else if (isNaN(ouputChannelMOS)) {\n return inputChannelMOS;\n } else if (isNaN(inputChannelMOS)) {\n return ouputChannelMOS;\n } else {\n return Math.min(inputChannelMOS, ouputChannelMOS);\n }\n}\n\nexport function initAudioStats() {\n audioStatus = new AudioStatsElement({inputChannelStats: new StatsInfo({packetsCount: 0, packetsLost: 0, jitterBufferMillis: 0, roundTripTimeMillis: 0}), \n outputChannelStats: new StatsInfo({packetsCount: 0, packetsLost: 0, jitterBufferMillis: 0, roundTripTimeMillis: 0})});\n}\n\nexport function updateAudioStats(statsArray) {\n if (audioStatus) {\n statsArray.forEach((stats) => {\n if (stats.inputChannelStats) {\n audioStatus.inputChannelStats.statsCount++;\n audioStatus.inputChannelStats.packetsCount += stats.inputChannelStats.packetsCount | 0;\n audioStatus.inputChannelStats.packetsLost += stats.inputChannelStats.packetsLost | 0;\n audioStatus.inputChannelStats.jitterBufferMillis += stats.inputChannelStats.jitterBufferMillis | 0;\n audioStatus.inputChannelStats.roundTripTimeMillis += stats.inputChannelStats.roundTripTimeMillis | 0;\n }\n if (stats.outputChannelStats) {\n audioStatus.outputChannelStats.statsCount++;\n audioStatus.outputChannelStats.packetsCount += stats.outputChannelStats.packetsCount | 0;\n audioStatus.outputChannelStats.packetsLost += stats.outputChannelStats.packetsLost | 0;\n audioStatus.outputChannelStats.jitterBufferMillis += stats.outputChannelStats.jitterBufferMillis | 0;\n audioStatus.outputChannelStats.roundTripTimeMillis += stats.outputChannelStats.roundTripTimeMillis | 0;\n }\n });\n }\n}","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/* eslint-disable no-unused-vars */\nimport constants from './constants.js';\nimport { CONNECTOR_CONFIG_EXPOSED_FIELDS, CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH } from './constants.js';\nimport { Validator, GenericResult, InitResult, CallResult, HangupResult, HoldToggleResult, PhoneContactsResult, MuteToggleResult,\n ParticipantResult, RecordingToggleResult, AgentConfigResult, ActiveCallsResult, SignedRecordingUrlResult, LogoutResult,\n VendorConnector, Contact, AudioStats, SuperviseCallResult, SupervisorHangupResult, AgentStatusInfo, SupervisedCallInfo, CapabilitiesResult, AgentVendorStatusInfo, StateChangeResult} from './types';\nimport { enableMos, getMOS, initAudioStats, updateAudioStats } from './mosUtil';\nimport { log, getLogs } from './logger';\n\nlet channelPort;\nlet vendorConnector;\nlet agentAvailable;\nlet isSupervisorConnected;\n\n/**\n * Gets the error type from the error object\n * @param {object} e Error object representing the error\n */\nfunction getErrorType(e) {\n return e && e.type ? e.type : e;\n}\n\n/**\n * Sanitizes the object by removing any PII data\n * @param {object} payload\n */\nfunction sanitizePayload(payload) {\n if (payload) {\n if (typeof (payload) === 'function') {\n // remove functions from the payload, because they cannot be copied by the postMessage function\n return;\n } else if (typeof (payload) === 'object') {\n const isArray = Array.isArray(payload);\n const sanitizedPayload = isArray ? [] : {};\n\n if (isArray) {\n payload.forEach(element => {\n sanitizedPayload.push(sanitizePayload(element));\n });\n } else {\n for (const property in payload) {\n if (property !== 'phoneNumber' &&\n property !== 'number' &&\n property !== 'name' &&\n property !== 'callAttributes') {\n sanitizedPayload[property] = sanitizePayload(payload[property]);\n }\n }\n }\n return sanitizedPayload;\n }\n }\n return payload;\n}\n\n/**\n * Gets the error message from the error object\n * @param {object} e Error object representing the error\n */\nfunction getErrorMessage(e) {\n return e && e.message ? e.message : e;\n}\n/** \n * Dispatch a telephony event log to Salesforce\n * @param {String} eventType event type, i.e. constants.EVENT_TYPE.CALL_STARTED \n * @param {Object} payload event payload\n * @param {Boolean} isError error scenario\n */\nfunction dispatchEventLog(eventType, payload, isError) {\n const sanitizedPayload = sanitizePayload(payload);\n const logLevel = isError ? constants.LOG_LEVEL.ERROR : constants.LOG_LEVEL.INFO;\n log({eventType, payload}, logLevel, constants.LOG_SOURCE.SYSTEM);\n\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.LOG,\n payload: { eventType, payload: sanitizedPayload, isError }\n });\n}\n/** \n * Dispatch a telephony event to Salesforce\n * @param {String} eventType event type, i.e. constants.EVENT_TYPE.CALL_STARTED\n * @param {Object} payload event payload\n * @param {Boolean} registerLog optional argument to not register the event\n */\nfunction dispatchEvent(eventType, payload, registerLog = true) {\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.TELEPHONY_EVENT_DISPATCHED,\n payload: { telephonyEventType: eventType, telephonyEventPayload: payload }\n });\n if (registerLog) {\n dispatchEventLog(eventType, payload, false);\n }\n}\n\n/**\n * Dispatch a telephony integration error to Salesforce\n * @param {string} errorType Error Type, ex: constants.ErrorType.MICROPHONE_NOT_SHARED\n * @param {object} error Error object representing the error\n * @param {string} eventType The event that caused this error, ex: constants.MESSAGE_TYPE.ACCEPT_CALL\n */\nfunction dispatchError(errorType, error, eventType) {\n // eslint-disable-next-line no-console\n console.error(`SCV dispatched error ${errorType} for eventType ${eventType}`, error);\n dispatchEvent(constants.EVENT_TYPE.ERROR, { message: constants.ERROR_TYPE[errorType] }, false);\n dispatchEventLog(eventType, { errorType, error }, true);\n}\n\nfunction dispatchInfo(eventType, payload) {\n // eslint-disable-next-line no-console\n console.info(`SCV info message dispatched for eventType ${eventType} with payload ${JSON.stringify(payload)}`);\n dispatchEvent(constants.EVENT_TYPE.INFO, { message: constants.INFO_TYPE[eventType] }, false);\n dispatchEventLog(eventType, payload, false);\n}\n\n/** \n * Notify Salesforce that the connector is ready\n */\nasync function setConnectorReady() {\n try {\n const agentConfigResult = await vendorConnector.getAgentConfig();\n const capabilitiesResult = await vendorConnector.getCapabilities();\n Validator.validateClassObject(agentConfigResult, AgentConfigResult);\n Validator.validateClassObject(capabilitiesResult, CapabilitiesResult);\n if (capabilitiesResult.supportsMos) {\n enableMos();\n }\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n const type = constants.MESSAGE_TYPE.CONNECTOR_READY;\n const payload = {\n agentConfig: {\n\n [constants.AGENT_CONFIG_TYPE.PHONES] : agentConfigResult.phones,\n [constants.AGENT_CONFIG_TYPE.SELECTED_PHONE] : agentConfigResult.selectedPhone\n },\n capabilities: {\n [constants.CAPABILITIES_TYPE.MUTE] : capabilitiesResult.hasMute,\n [constants.CAPABILITIES_TYPE.RECORD] : capabilitiesResult.hasRecord,\n [constants.CAPABILITIES_TYPE.MERGE] : capabilitiesResult.hasMerge,\n [constants.CAPABILITIES_TYPE.SWAP] : capabilitiesResult.hasSwap,\n [constants.CAPABILITIES_TYPE.SIGNED_RECORDING_URL] : capabilitiesResult.hasSignedRecordingUrl,\n [constants.CAPABILITIES_TYPE.DEBUG_ENABLED] : capabilitiesResult.debugEnabled,\n [constants.CAPABILITIES_TYPE.CONTACT_SEARCH] : capabilitiesResult.hasContactSearch,\n [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY] : capabilitiesResult.hasAgentAvailability,\n [constants.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN] : capabilitiesResult.hasSupervisorListenIn,\n [constants.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN] : capabilitiesResult.hasSupervisorBargeIn,\n [constants.CAPABILITIES_TYPE.MOS] : capabilitiesResult.supportsMos,\n [constants.CAPABILITIES_TYPE.BLIND_TRANSFER] : capabilitiesResult.hasBlindTransfer,\n [constants.CAPABILITIES_TYPE.TRANSFER_TO_OMNI_FLOW] : capabilitiesResult.hasTransferToOmniFlow,\n [constants.CAPABILITIES_TYPE.PENDING_STATUS_CHANGE] : capabilitiesResult.hasPendingStatusChange\n },\n callInProgress: activeCalls.length > 0 ? activeCalls[0] : null\n }\n channelPort.postMessage({\n type,\n payload\n });\n dispatchEventLog(type, payload, false);\n } catch (e) {\n // Post CONNECTOR_READY even if getAgentConfig is not implemented\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.CONNECTOR_READY,\n payload: {}\n });\n dispatchEventLog(constants.MESSAGE_TYPE.CONNECTOR_READY, {}, false);\n }\n}\n\n//TODO: 230 we should convert call object to PhoneCall object\nasync function channelMessageHandler(message) { \n const eventType = message.data.type;\n if (eventType !== constants.MESSAGE_TYPE.LOG) {\n dispatchEventLog(eventType, message.data, false);\n }\n switch (eventType) {\n case constants.MESSAGE_TYPE.ACCEPT_CALL:\n try {\n if (message.data.call && message.data.call.callType &&\n message.data.call.callType.toLowerCase() === constants.CALL_TYPE.OUTBOUND.toLowerCase()) {\n return;\n }\n initAudioStats();\n if (isSupervisorConnected) {\n const hangupPayload = await vendorConnector.supervisorDisconnect();\n Validator.validateClassObject(hangupPayload, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, hangupPayload.calls);\n }\n let payload = await vendorConnector.acceptCall(message.data.call);\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(call.callType.toLowerCase() === constants.CALL_TYPE.CALLBACK.toLowerCase() ?\n constants.EVENT_TYPE.CALL_STARTED : constants.EVENT_TYPE.CALL_CONNECTED, call);\n } catch (e) {\n isSupervisorConnected = false;\n dispatchInfo(constants.INFO_TYPE.CAN_NOT_ACCEPT_THE_CALL, {messagetype: constants.MESSAGE_TYPE.ACCEPT_CALL, additionalInfo: e} )\n }\n break;\n case constants.MESSAGE_TYPE.DECLINE_CALL:\n try {\n const payload = await vendorConnector.declineCall(message.data.call);\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(constants.EVENT_TYPE.HANGUP, call);\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_DECLINE_THE_CALL, e, constants.MESSAGE_TYPE.DECLINE_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.END_CALL:\n try {\n const payload = await vendorConnector.endCall(message.data.call, message.data.agentStatus);\n Validator.validateClassObject(payload, HangupResult);\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n const { calls } = payload;\n // after end calls from vendor side, if no more active calls, fire HANGUP, otherwise, fire PARTICIPANT_REMOVED\n if (activeCalls.length === 0) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, calls);\n } else {\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, calls.length > 0 && calls[0]);\n }\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, e, constants.MESSAGE_TYPE.END_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.MUTE:\n try {\n const payload = await vendorConnector.mute();\n publishEvent({eventType: constants.EVENT_TYPE.MUTE_TOGGLE, payload});\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_MUTE_CALL, e, constants.MESSAGE_TYPE.MUTE);\n }\n break;\n case constants.MESSAGE_TYPE.UNMUTE:\n try {\n const payload = await vendorConnector.unmute();\n publishEvent({eventType: constants.EVENT_TYPE.MUTE_TOGGLE, payload});\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_UNMUTE_CALL, e, constants.MESSAGE_TYPE.UNMUTE);\n }\n break;\n case constants.MESSAGE_TYPE.HOLD:\n try {\n const payload = await vendorConnector.hold(message.data.call);\n publishEvent({eventType: constants.EVENT_TYPE.HOLD_TOGGLE, payload});\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARTICIPANT:\n dispatchError(constants.ERROR_TYPE.INVALID_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.HOLD);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_HOLD_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.HOLD);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.RESUME:\n try {\n const payload = await vendorConnector.resume(message.data.call);\n publishEvent({eventType: constants.EVENT_TYPE.HOLD_TOGGLE, payload});\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARTICIPANT:\n dispatchError(constants.ERROR_TYPE.INVALID_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.RESUME);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_RESUME_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.RESUME);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.SET_AGENT_STATUS:\n try {\n const statusInfo = message.data.statusInfo || {};\n const enqueueNextState = message.data.enqueueNextState || false;\n const payload = await vendorConnector.setAgentStatus(message.data.agentStatus, statusInfo, enqueueNextState);\n Validator.validateClassObject(payload, GenericResult);\n const { success } = payload;\n dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success });\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_AGENT_STATUS:\n dispatchError(constants.ERROR_TYPE.INVALID_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_STATUS);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_STATUS);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.GET_AGENT_STATUS:\n try {\n const payload = await vendorConnector.getAgentStatus();\n Validator.validateClassObject(payload, AgentVendorStatusInfo);\n dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS_RESULT, payload);\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.GET_AGENT_STATUS);\n }\n break;\n case constants.MESSAGE_TYPE.DIAL:\n try {\n const payload = await vendorConnector.dial(new Contact(message.data.contact));\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, call);\n } catch (e) {\n dispatchEvent(constants.EVENT_TYPE.CALL_FAILED);\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_DESTINATION:\n dispatchError(constants.ERROR_TYPE.INVALID_DESTINATION, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n case constants.ERROR_TYPE.GENERIC_ERROR:\n dispatchError(constants.ERROR_TYPE.GENERIC_ERROR, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.SEND_DIGITS:\n try {\n await vendorConnector.sendDigits(message.data.digits);\n } catch (e) {\n dispatchEventLog(constants.MESSAGE_TYPE.SEND_DIGITS, message.data.digits, true);\n }\n break;\n case constants.MESSAGE_TYPE.GET_PHONE_CONTACTS:\n try {\n const payload = await vendorConnector.getPhoneContacts(message.data.filter);\n Validator.validateClassObject(payload, PhoneContactsResult);\n const contacts = payload.contacts.map((contact) => {\n return {\n id: contact.id,\n type: contact.type,\n name: contact.name,\n phoneNumber: contact.phoneNumber,\n prefix: contact.prefix,\n extension: contact.extension,\n endpointARN: contact.endpointARN,\n queue: contact.queue,\n availability: contact.availability,\n recordId: contact.recordId,\n description: contact.description\n };\n });\n dispatchEvent(constants.EVENT_TYPE.PHONE_CONTACTS, {\n contacts, contactTypes: payload.contactTypes\n });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_PHONE_CONTACTS, e, constants.MESSAGE_TYPE.GET_PHONE_CONTACTS);\n }\n break;\n case constants.MESSAGE_TYPE.SWAP_PARTICIPANTS:\n try {\n // TODO: Create PhoneCall from call1.callId & call2.callId\n // TODO: rename to call1 and call2\n const payload = await vendorConnector.swap(message.data.callToHold, message.data.callToResume);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANTS_SWAPPED, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, e, constants.MESSAGE_TYPE.SWAP_PARTICIPANTS);\n }\n break;\n case constants.MESSAGE_TYPE.CONFERENCE:\n try {\n const payload = await vendorConnector.conference(message.data.calls);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONFERENCE, e, constants.MESSAGE_TYPE.CONFERENCE);\n }\n break;\n case constants.MESSAGE_TYPE.ADD_PARTICIPANT:\n try {\n const payload = await vendorConnector.addParticipant(new Contact(message.data.contact), message.data.call, message.data.isBlindTransfer);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANT_ADDED, payload });\n if (message.data.isBlindTransfer) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, message.data.call);\n }\n } catch (e) {\n // TODO: Can we avoid passing in reason field\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, {\n reason: constants.EVENT_TYPE.ERROR.toLowerCase()\n });\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_DESTINATION:\n dispatchError(constants.ERROR_TYPE.INVALID_DESTINATION, getErrorMessage(e), constants.MESSAGE_TYPE.ADD_PARTICIPANT);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.ADD_PARTICIPANT);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.PAUSE_RECORDING:\n try {\n const payload = await vendorConnector.pauseRecording(message.data.call);\n publishEvent({ eventType: constants.EVENT_TYPE.RECORDING_TOGGLE, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_PAUSE_RECORDING, e, constants.MESSAGE_TYPE.PAUSE_RECORDING);\n }\n break;\n case constants.MESSAGE_TYPE.RESUME_RECORDING:\n try {\n const payload = await vendorConnector.resumeRecording(message.data.call);\n publishEvent({ eventType: constants.EVENT_TYPE.RECORDING_TOGGLE, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_RESUME_RECORDING, e, constants.MESSAGE_TYPE.RESUME_RECORDING);\n }\n break;\n case constants.MESSAGE_TYPE.LOGOUT:\n try {\n const payload = await vendorConnector.logout();\n Validator.validateClassObject(payload, LogoutResult);\n const { success, loginFrameHeight } = payload;\n dispatchEvent(constants.EVENT_TYPE.LOGOUT_RESULT, { success, loginFrameHeight });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_OUT, e, constants.MESSAGE_TYPE.LOGOUT);\n }\n break;\n case constants.MESSAGE_TYPE.MESSAGE:\n // TODO: Define a return type for handling message\n vendorConnector.handleMessage(message.data.message);\n break;\n case constants.MESSAGE_TYPE.WRAP_UP_CALL:\n vendorConnector.wrapUpCall(message.data.call);\n break;\n case constants.MESSAGE_TYPE.AGENT_AVAILABLE: {\n agentAvailable = message.data.isAvailable;\n if (agentAvailable) {\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n for (const callId in activeCalls) {\n const call = activeCalls[callId];\n const shouldReplay = call.callInfo ? call.callInfo.isReplayable : true;\n const isSupervisorCall = call.callAttributes && call.callAttributes.participantType === constants.PARTICIPANT_TYPE.SUPERVISOR;\n const hasSupervisorBargedIn = isSupervisorCall && call.callAttributes && call.callAttributes.hasSupervisorBargedIn;\n if (shouldReplay) {\n call.isReplayedCall = true;\n switch(call.state) {\n case constants.CALL_STATE.CONNECTED:\n if (isSupervisorCall) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, call);\n if (hasSupervisorBargedIn) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, call);\n }\n break;\n }\n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, call);\n break;\n case constants.CALL_STATE.RINGING:\n if (isSupervisorCall) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, call);\n break;\n }\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, call);\n break;\n case constants.CALL_STATE.TRANSFERRING:\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_ADDED, {\n phoneNumber: call.contact.phoneNumber,\n callInfo: call.callInfo,\n initialCallHasEnded: call.callAttributes.initialCallHasEnded,\n callId: call.callId\n });\n break;\n case constants.CALL_STATE.TRANSFERRED:\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_CONNECTED, {\n phoneNumber: call.contact.phoneNumber,\n callInfo: call.callInfo,\n initialCallHasEnded: call.callAttributes.initialCallHasEnded,\n callId: call.callId\n });\n break;\n default:\n break;\n }\n }\n }\n }\n }\n break;\n case constants.MESSAGE_TYPE.SET_AGENT_CONFIG:\n try {\n const result = await vendorConnector.setAgentConfig(message.data.config);\n Validator.validateClassObject(result, GenericResult);\n dispatchEvent(constants.EVENT_TYPE.AGENT_CONFIG_UPDATED, result);\n } catch (e){\n dispatchError(getErrorType(e) === constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER ? constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER : constants.ERROR_TYPE.CAN_NOT_SET_AGENT_CONFIG , getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_CONFIG);\n }\n break;\n case constants.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL:\n try {\n const { recordingUrl, vendorCallKey, callId } = message.data;\n const result = await vendorConnector.getSignedRecordingUrl(recordingUrl, vendorCallKey, callId);\n Validator.validateClassObject(result, SignedRecordingUrlResult);\n dispatchEvent(constants.EVENT_TYPE.SIGNED_RECORDING_URL, result);\n } catch (e) {\n // In case of an error, we want to show an error message in the recording player\n const signedRecordingUrlResult = new SignedRecordingUrlResult({\n success: false\n });\n dispatchEvent(constants.EVENT_TYPE.SIGNED_RECORDING_URL, signedRecordingUrlResult, false);\n dispatchEventLog(constants.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL, signedRecordingUrlResult, true);\n }\n break;\n case constants.MESSAGE_TYPE.DOWNLOAD_VENDOR_LOGS:\n vendorConnector.downloadLogs(getLogs());\n break;\n case constants.MESSAGE_TYPE.LOG: {\n const { logLevel, logMessage, payload } = message.data;\n vendorConnector.logMessageToVendor(logLevel, logMessage, payload);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISE_CALL:\n try {\n isSupervisorConnected = true;\n const result = await vendorConnector.superviseCall(message.data.call);\n Validator.validateClassObject(result, SuperviseCallResult);\n const agentConfigResult = await vendorConnector.getAgentConfig();\n if(agentConfigResult.selectedPhone.type === constants.PHONE_TYPE.SOFT_PHONE) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, result.call);\n } else {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, result.call);\n }\n } catch (e){\n isSupervisorConnected = false;\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, e, constants.MESSAGE_TYPE.SUPERVISE_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISOR_DISCONNECT:\n try {\n const result = await vendorConnector.supervisorDisconnect(message.data.call);\n Validator.validateClassObject(result, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, result.calls);\n } catch (e){\n dispatchError(constants.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR, e, constants.MESSAGE_TYPE.SUPERVISOR_DISCONNECT);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISOR_BARGE_IN:\n try {\n const result = await vendorConnector.supervisorBargeIn(message.data.call);\n Validator.validateClassObject(result, SuperviseCallResult);\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, result.call );\n } catch (e){\n dispatchError(constants.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR, e, constants.MESSAGE_TYPE.SUPERVISOR_BARGE_IN);\n }\n break;\n default:\n break;\n }\n}\n\n\nasync function windowMessageHandler(message) {\n switch (message.data.type) {\n case constants.MESSAGE_TYPE.SETUP_CONNECTOR: {\n const sfDomain = /^https:\\/\\/[\\w-.]+(\\.lightning\\.force\\.com|\\.lightning\\.pc-rnd\\.force\\.com|\\.stm\\.force\\.com|\\.salesforce\\.com|\\.my\\.salesforce-sites\\.com|\\.lightning\\.localhost\\.[\\w]+\\.force.com)$/;\n const originUrl = new URL(message.origin);\n const url = originUrl.protocol + '//' + originUrl.hostname;\n\n if (sfDomain.test(url)) {\n channelPort = message.ports[0];\n channelPort.onmessage = channelMessageHandler;\n dispatchEventLog(constants.MESSAGE_TYPE.SETUP_CONNECTOR, exposedConnectorConfig(message.data.connectorConfig), false);\n try {\n const payload = await vendorConnector.init(message.data.connectorConfig);\n Validator.validateClassObject(payload, InitResult);\n if (payload.showLogin) {\n dispatchEvent(constants.EVENT_TYPE.SHOW_LOGIN, {\n loginFrameHeight: payload.loginFrameHeight\n });\n } else {\n setConnectorReady();\n }\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARAMS:\n dispatchError(constants.ERROR_TYPE.INVALID_PARAMS, getErrorMessage(e), constants.MESSAGE_TYPE.SETUP_CONNECTOR);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_IN, getErrorMessage(e), constants.MESSAGE_TYPE.SETUP_CONNECTOR);\n break;\n }\n }\n }\n window.removeEventListener('message', windowMessageHandler);\n }\n break;\n default:\n break;\n }\n}\n\nfunction exposedConnectorConfig(payload) {\n payload = payload || {};\n let obj = {};\n //properties that are equal to key\n CONNECTOR_CONFIG_EXPOSED_FIELDS.forEach(prop => {\n if (payload.hasOwnProperty(prop)) {\n obj[prop] = payload[prop];\n }\n });\n //properties that start with key\n CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH.forEach(prop => {\n Object.keys(payload).forEach(key => {\n if (key.startsWith(prop)) {\n obj[key] = payload[key];\n }\n });\n });\n\n return obj;\n}\n\nfunction validatePayload(payload, payloadType, errorType, eventType) {\n try {\n Validator.validateClassObject(payload, payloadType);\n return true;\n } catch (e) {\n if (errorType) {\n dispatchError(errorType, e, eventType);\n }\n return false;\n }\n}\n\n/*========================== Exported Functions ==========================*/\n/**\n * Initialize a vendor connector\n * @param {VendorConnector} connector\n */\nexport function initializeConnector(connector) {\n vendorConnector = connector;\n window.addEventListener('message', windowMessageHandler);\n}\n\n/**\n * Publish an event or error log to Salesforce\n * @param {object} param\n * @param {string} param.eventType Any event type to be logged\n * @param {object} param.payload Any payload for the log that needs to be logged\n * @param {boolean} param.isError\n */\nexport function publishLog({ eventType, payload, isError }) {\n dispatchEventLog(eventType, payload, isError);\n}\n\n/**\n * Publish a telephony error to Salesforce\n * @param {object} param\n * @param {(\"LOGIN_RESULT\"|\"LOGOUT_RESULT\"|\"CALL_STARTED\"|\"QUEUED_CALL_STARTED\"|\"CALL_CONNECTED\"|\"HANGUP\"|\"PARTICIPANT_CONNECTED\"|\"PARTICIPANT_ADDED\"|\"PARTICIPANTS_SWAPPED\"|\"PARTICIPANTS_CONFERENCED\"|\"MESSAGE\"|\"MUTE_TOGGLE\"|\"HOLD_TOGGLE\"|\"RECORDING_TOGGLE\"|\"AGENT_ERROR\"|\"SOFTPHONE_ERROR\")} param.eventType Event type to publish.\n * @param {object} param.error Error object representing the error\n */\nexport function publishError({ eventType, error }) {\n switch(eventType) {\n case constants.EVENT_TYPE.LOGIN_RESULT:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_IN, error, constants.EVENT_TYPE.LOGIN_RESULT);\n break;\n case constants.EVENT_TYPE.LOGOUT_RESULT:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_OUT, error, constants.EVENT_TYPE.LOGOUT_RESULT);\n break;\n case constants.EVENT_TYPE.CALL_STARTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.CALL_STARTED);\n break;\n case constants.EVENT_TYPE.QUEUED_CALL_STARTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.QUEUED_CALL_STARTED);\n break;\n case constants.EVENT_TYPE.CALL_CONNECTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.CALL_CONNECTED);\n break;\n case constants.EVENT_TYPE.HANGUP: \n dispatchError(constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, error, constants.EVENT_TYPE.HANGUP);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_ADDED:\n dispatchError(getErrorType(error) === constants.ERROR_TYPE.INVALID_PARTICIPANT ? constants.ERROR_TYPE.INVALID_PARTICIPANT : constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_ADDED);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_CONNECTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_CONNECTED);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_REMOVED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_REMOVED); \n break;\n case constants.EVENT_TYPE.MUTE_TOGGLE:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE, error, constants.EVENT_TYPE.MUTE_TOGGLE);\n break;\n case constants.EVENT_TYPE.HOLD_TOGGLE: \n dispatchError(getErrorType(error) === constants.ERROR_TYPE.INVALID_PARTICIPANT ? constants.ERROR_TYPE.INVALID_PARTICIPANT : constants.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD, error, constants.EVENT_TYPE.HOLD_TOGGLE);\n break;\n case constants.EVENT_TYPE.RECORDING_TOGGLE:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD, error, constants.EVENT_TYPE.RECORDING_TOGGLE);\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_SWAPPED: \n dispatchError(constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, error, constants.EVENT_TYPE.PARTICIPANTS_SWAPPED);\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONFERENCE, error, constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED);\n break;\n case constants.EVENT_TYPE.AGENT_ERROR:\n dispatchError(constants.ERROR_TYPE.AGENT_ERROR, error, constants.EVENT_TYPE.AGENT_ERROR);\n break;\n case constants.EVENT_TYPE.SOFTPHONE_ERROR:\n switch(getErrorType(error)) {\n case constants.ERROR_TYPE.UNSUPPORTED_BROWSER:\n dispatchError(constants.ERROR_TYPE.UNSUPPORTED_BROWSER, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n break;\n case constants.ERROR_TYPE.MICROPHONE_NOT_SHARED:\n dispatchError(constants.ERROR_TYPE.MICROPHONE_NOT_SHARED, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.GENERIC_ERROR, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n }\n break;\n default:\n console.error('Unhandled error scenario with arguments ', arguments);\n }\n}\n\n/**\n * Publish an event to Sfdc. The event payload will be verified to be the correct type before being published. \n * @param {object} param\n * @param {(\"LOGIN_RESULT\"|\"LOGOUT_RESULT\"|\"CALL_STARTED\"|\"QUEUED_CALL_STARTED\"|\"CALL_CONNECTED\"|\"HANGUP\"|\"PARTICIPANT_CONNECTED\"|\"PARTICIPANT_ADDED\"|\"PARTICIPANTS_SWAPPED\"|\"PARTICIPANTS_CONFERENCED\"|\"MESSAGE\"|\"MUTE_TOGGLE\"|\"HOLD_TOGGLE\"|\"RECORDING_TOGGLE\")} param.eventType Event type to publish\n * @param {object} param.payload Payload for the event. Must to be an object of the payload class associated with the EVENT_TYPE else the event is NOT dispatched\n * @param {boolean} param.registerLog Boolean to opt out of registering logs for events\n * LOGIN_RESULT - GenericResult\n * LOGOUT_RESULT - LogoutResult\n * CALL_STARTED - CallResult\n * QUEUED_CALL_STARTED - CallResult\n * CALL_CONNECTED - CallResult\n * HANGUP - CallResult\n * PARTICIPANT_CONNECTED - ParticipantResult\n * PARTICIPANT_ADDED - ParticipantResult\n * PARTICIPANTS_SWAPPED - HoldToggleResult\n * PARTICIPANTS_CONFERENCED - HoldToggleResult\n * MESSAGE - object\n * MUTE_TOGGLE - MuteToggleResult\n * HOLD_TOGGLE - HoldToggleResult\n * RECORDING_TOGGLE - RecordingToggleResult\n */\nexport async function publishEvent({ eventType, payload, registerLog = true }) {\n switch(eventType) {\n case constants.EVENT_TYPE.LOGIN_RESULT: {\n if (validatePayload(payload, GenericResult, constants.ERROR_TYPE.CAN_NOT_LOG_IN, constants.EVENT_TYPE.LOGIN_RESULT)) {\n dispatchEvent(constants.EVENT_TYPE.LOGIN_RESULT, payload, registerLog);\n if (payload.success) {\n setConnectorReady();\n }\n }\n break;\n }\n case constants.EVENT_TYPE.LOGOUT_RESULT:\n if (validatePayload(payload, LogoutResult, constants.ERROR_TYPE.CAN_NOT_LOG_OUT, constants.EVENT_TYPE.LOGOUT_RESULT)) {\n dispatchEvent(constants.EVENT_TYPE.LOGOUT_RESULT, {\n success: payload.success,\n loginFrameHeight: payload.loginFrameHeight\n }, registerLog);\n }\n break;\n case constants.EVENT_TYPE.CALL_STARTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.CALL_STARTED)) {\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.QUEUED_CALL_STARTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.QUEUED_CALL_STARTED)) {\n dispatchEvent(constants.EVENT_TYPE.QUEUED_CALL_STARTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.CALL_CONNECTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.CALL_CONNECTED)) {\n initAudioStats();\n if (isSupervisorConnected) {\n const hangupPayload = await vendorConnector.supervisorDisconnect();\n Validator.validateClassObject(hangupPayload, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, hangupPayload, registerLog);\n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, payload.call, registerLog);\n break;\n } \n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.HANGUP: {\n if (validatePayload(payload, HangupResult, constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, constants.EVENT_TYPE.HANGUP)) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, payload.calls, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_ADDED: {\n if (validatePayload(payload, ParticipantResult, constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_ADDED)) {\n const { initialCallHasEnded, callInfo, phoneNumber, callId } = payload;\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_ADDED, {\n initialCallHasEnded,\n callInfo,\n phoneNumber,\n callId\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_CONNECTED: {\n if (validatePayload(payload, ParticipantResult, constants.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_CONNECTED)) {\n const { initialCallHasEnded, callInfo, phoneNumber, callId } = payload;\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_CONNECTED, {\n initialCallHasEnded,\n callInfo,\n phoneNumber,\n callId\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_REMOVED: {\n // TODO: The logic here needs to be modified. Ideally firing CallResult with \n // correct participantType should do the trick but we are firing PARTICIPANT_CONNECTED because of a bug W-8601645\n // Once the bug is fixed, this code needs to be updated\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_REMOVED)) { \n const { call } = payload;\n const activeCallsResult = await vendorConnector.getActiveCalls();\n if (validatePayload(activeCallsResult, ActiveCallsResult)) {\n // when no more active calls, fire HANGUP\n const activeCalls = activeCallsResult.activeCalls;\n if (activeCalls.length === 0) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, call, registerLog);\n } else if (call && call.callAttributes && call.callAttributes.participantType === constants.PARTICIPANT_TYPE.INITIAL_CALLER) {\n // when there is still transfer call, based on the state of the transfer call, fire PARTICIPANT_ADDED or PARTICIPANT_CONNECTED\n const transferCall = Object.values(activeCalls).filter((obj) => obj['callType'] === constants.CALL_TYPE.ADD_PARTICIPANT).pop();\n const event = transferCall.state === constants.CALL_STATE.TRANSFERRING ? constants.EVENT_TYPE.PARTICIPANT_ADDED : constants.EVENT_TYPE.PARTICIPANT_CONNECTED;\n dispatchEvent(event, {\n initialCallHasEnded : true\n })\n } else {\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, {\n reason: call? call.reason : null\n }, registerLog);\n }\n }\n }\n break;\n }\n case constants.EVENT_TYPE.MESSAGE:\n dispatchEvent(constants.EVENT_TYPE.MESSAGE, payload, registerLog);\n break;\n // TODO: Add validations for the ACW & Wrap up ended\n case constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED:\n dispatchEvent(constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED, payload, registerLog);\n break;\n case constants.EVENT_TYPE.WRAP_UP_ENDED:\n dispatchEvent(constants.EVENT_TYPE.WRAP_UP_ENDED, payload, registerLog);\n break;\n /* This is only added to aid in connector development */\n case constants.EVENT_TYPE.REMOTE_CONTROLLER:\n channelMessageHandler(payload);\n break;\n case constants.EVENT_TYPE.MUTE_TOGGLE:\n if (validatePayload(payload, MuteToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE, constants.EVENT_TYPE.MUTE_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.MUTE_TOGGLE, payload, registerLog);\n }\n break;\n case constants.EVENT_TYPE.HOLD_TOGGLE: {\n const { isThirdPartyOnHold, isCustomerOnHold, calls} = payload;\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD, constants.EVENT_TYPE.HOLD_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold,\n calls\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.RECORDING_TOGGLE: {\n const { isRecordingPaused,\n contactId,\n initialContactId,\n instanceId,\n region\n } = payload;\n if (validatePayload(payload, RecordingToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD, constants.EVENT_TYPE.RECORDING_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.RECORDING_TOGGLE, {\n isRecordingPaused,\n contactId,\n initialContactId,\n instanceId,\n region\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANTS_SWAPPED: {\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, constants.EVENT_TYPE.PARTICIPANTS_SWAPPED)) {\n const { isThirdPartyOnHold, isCustomerOnHold, calls } = payload;\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold,\n calls\n }, registerLog);\n }\n }\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED: {\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_CONFERENCE, constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED)) {\n const { isThirdPartyOnHold, isCustomerOnHold } = payload;\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.UPDATE_AUDIO_STATS: {\n if (validatePayload(payload, AudioStats)) {\n if (payload.stats) {\n updateAudioStats(payload.stats);\n }\n if (payload.isAudioStatsCompleted && payload.callId) {\n const callId = payload.callId;\n const mos = getMOS();\n dispatchEvent(constants.EVENT_TYPE.UPDATE_AUDIO_STATS_COMPLETED, {callId, mos}, registerLog);\n }\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_BARGED_IN: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR, constants.EVENT_TYPE.SUPERVISOR_BARGED_IN)) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.CALL_BARGED_IN: {\n if (validatePayload(payload, SupervisedCallInfo, constants.ERROR_TYPE.GENERIC_ERROR, constants.EVENT_TYPE.CALL_BARGED_IN)) {\n dispatchEvent(constants.EVENT_TYPE.CALL_BARGED_IN, payload, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED)) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED)) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_HANGUP: {\n if (validatePayload(payload, SupervisorHangupResult, constants.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR, constants.EVENT_TYPE.SUPERVISOR_HANGUP)) {\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, payload.calls, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SET_AGENT_STATUS: {\n if (validatePayload(payload, AgentStatusInfo, constants.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS, constants.EVENT_TYPE.SET_AGENT_STATUS)) {\n const statusId = payload.statusId;\n dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS, { statusId }, registerLog);\n }\n break;\n }\n\n /**\n * NOTE: SALESFORCE INTERNAL USE ONLY\n */\n case constants.EVENT_TYPE.GET_AGENT_STATUS: {\n if (validatePayload(payload, AgentVendorStatusInfo, constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, constants.EVENT_TYPE.GET_AGENT_STATUS)) {\n dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS, payload);\n }\n break;\n }\n\n /**\n * NOTE: SALESFORCE INTERNAL USE ONLY\n */\n case constants.EVENT_TYPE.STATE_CHANGE: {\n if(validatePayload(payload, StateChangeResult, constants.ERROR_TYPE.INVALID_STATE_CHANGE_RESULT, constants.EVENT_TYPE.STATE_CHANGE)) {\n dispatchEvent(constants.EVENT_TYPE.STATE_CHANGE, payload);\n }\n break;\n }\n }\n}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://SCVConnectorBase/webpack/universalModuleDefinition","webpack://SCVConnectorBase/webpack/bootstrap","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/regenerator/index.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/typeof.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/createClass.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/inherits.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://SCVConnectorBase/./node_modules/regenerator-runtime/runtime.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://SCVConnectorBase/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://SCVConnectorBase/./src/main/constants.js","webpack://SCVConnectorBase/./src/main/logger.js","webpack://SCVConnectorBase/./src/main/downloadData.js","webpack://SCVConnectorBase/./src/main/types.js","webpack://SCVConnectorBase/./src/main/mosUtil.js","webpack://SCVConnectorBase/./src/main/baseConnector.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","instance","Constructor","TypeError","obj","configurable","writable","_typeof","iterator","constructor","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","fn","self","args","arguments","apply","err","undefined","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_defineProperties","target","props","length","descriptor","protoProps","staticProps","subClass","superClass","assertThisInitialized","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","method","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","result","__await","unwrapped","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","toString","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","_setPrototypeOf","ReferenceError","MESSAGE_TYPE","SETUP_CONNECTOR","CONNECTOR_READY","LOG","TELEPHONY_EVENT_DISPATCHED","ACCEPT_CALL","DECLINE_CALL","END_CALL","MUTE","UNMUTE","HOLD","RESUME","SET_AGENT_STATUS","GET_AGENT_STATUS","DIAL","SEND_DIGITS","GET_PHONE_CONTACTS","SWAP_PARTICIPANTS","ADD_PARTICIPANT","CONFERENCE","PAUSE_RECORDING","RESUME_RECORDING","LOGOUT","MESSAGE","WRAP_UP_CALL","AGENT_AVAILABLE","SET_AGENT_CONFIG","GET_SIGNED_RECORDING_URL","DOWNLOAD_VENDOR_LOGS","SUPERVISE_CALL","SUPERVISOR_BARGE_IN","SUPERVISOR_DISCONNECT","EVENT_TYPE","QUEUED_CALL_STARTED","CALL_STARTED","CALL_CONNECTED","CALL_FAILED","MUTE_TOGGLE","HOLD_TOGGLE","HANGUP","ERROR","WARNING","INFO","PHONE_CONTACTS","PARTICIPANT_ADDED","PARTICIPANT_CONNECTED","PARTICIPANT_REMOVED","LOGIN_STARTED","LOGIN_RESULT","LOGOUT_RESULT","RECORDING_TOGGLE","PARTICIPANTS_SWAPPED","PARTICIPANTS_CONFERENCED","SHOW_LOGIN","SET_AGENT_STATUS_RESULT","GET_AGENT_STATUS_RESULT","WRAP_UP_ENDED","AFTER_CALL_WORK_STARTED","AGENT_CONFIG_UPDATED","AGENT_ERROR","SOFTPHONE_ERROR","SIGNED_RECORDING_URL","UPDATE_AUDIO_STATS","UPDATE_AUDIO_STATS_COMPLETED","SUPERVISOR_BARGED_IN","SUPERVISOR_CALL_STARTED","SUPERVISOR_CALL_CONNECTED","SUPERVISOR_HANGUP","CALL_BARGED_IN","STATE_CHANGE","INFO_TYPE","CAN_NOT_ACCEPT_THE_CALL","ERROR_TYPE","GENERIC_ERROR","MICROPHONE_NOT_SHARED","UNSUPPORTED_BROWSER","AUTHENTICATION_ERROR","INVALID_AGENT_STATUS","CAN_NOT_SET_AGENT_STATUS","LOGIN_REQUIRED","CAN_NOT_DECLINE_THE_CALL","CAN_NOT_END_THE_CALL","CAN_NOT_HOLD_CALL","CAN_NOT_RESUME_CALL","CAN_NOT_MUTE_CALL","CAN_NOT_UNMUTE_CALL","CAN_NOT_TOGGLE_MUTE","CAN_NOT_TOGGLE_HOLD","CAN_NOT_TOGGLE_RECORD","INVALID_PARTICIPANT","CAN_NOT_LOG_IN","CAN_NOT_LOG_OUT","INVALID_PARAMS","CAN_NOT_GET_PHONE_CONTACTS","CAN_NOT_SWAP_PARTICIPANTS","CAN_NOT_CONFERENCE","INVALID_DESTINATION","INVALID_PHONE_NUMBER","CAN_NOT_HANGUP_PARTICIPANT","CAN_NOT_ADD_PARTICIPANT","CAN_NOT_CONNECT_PARTICIPANT","CAN_NOT_START_THE_CALL","CAN_NOT_PAUSE_RECORDING","CAN_NOT_RESUME_RECORDING","CAN_NOT_SET_AGENT_CONFIG","CAN_NOT_SET_CAPABILITIES","CAN_NOT_UPDATE_PHONE_NUMBER","CAN_NOT_GET_SIGNED_RECORDING_URL","CAN_NOT_SUPERVISE_CALL","CAN_NOT_DISCONNECT_SUPERVISOR","CAN_NOT_BARGE_IN_SUPERVISOR","CAN_NOT_BARGE_IN_CALL","CAN_NOT_GET_AGENT_STATUS","INVALID_STATE_CHANGE_RESULT","AGENT_STATUS","ONLINE","OFFLINE","ACW","CALLBACK_MISSED_OR_REJECTED","PARTICIPANT_TYPE","AGENT","INITIAL_CALLER","THIRD_PARTY","SUPERVISOR","CALL_TYPE","INBOUND","OUTBOUND","CALLBACK","TRANSFER","DIALER_TYPE","OUTBOUND_PREVIEW","NONE","CONTACT_TYPE","PHONEBOOK","QUEUE","PHONENUMBER","FLOW","AGENT_CONFIG_TYPE","SHOW_AGENT_SETTINGS","PHONES","SELECTED_PHONE","CAPABILITIES_TYPE","RECORD","MERGE","SWAP","DEBUG_ENABLED","CONTACT_SEARCH","VENDOR_PROVIDED_AVAILABILITY","VENDOR_PROVIDED_QUEUE_WAIT_TIME","SUPERVISOR_LISTEN_IN","MOS","BLIND_TRANSFER","TRANSFER_TO_OMNI_FLOW","PENDING_STATUS_CHANGE","CALL_STATE","RINGING","CONNECTED","TRANSFERRING","TRANSFERRED","ENDED","PHONE_TYPE","DESK_PHONE","SOFT_PHONE","HANGUP_REASON","PHONE_CALL_ERROR","PHONE_CALL_ENDED","AGENT_AVAILABILITY","AVAILABLE","BUSY","REMOVE_PARTICIPANT_VARIANT","ALWAYS","NEVER","ALWAYS_EXCEPT_ON_HOLD","LOG_LEVEL","LOG_SOURCE","SYSTEM","PARTNER","CONTACTS_FILTER_TYPES","CONNECTOR_CONFIG_EXPOSED_FIELDS","CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH","_strify","JSON","stringify","LOGS_SIZE","logs","log","logMessage","logLevel","logSource","constants","logStr","Date","toISOString","join","_log","getLogs","parse","downloadLogs","data","fileName","fileType","document","dataStr","file","Blob","a","createElement","blobURL","URL","createObjectURL","download","href","body","appendChild","click","removeChild","revokeObjectURL","downloadData","getTime","audioStatus","channelPort","vendorConnector","isSupervisorConnected","Constants","Phone","number","Validator","validateEnum","validateString","MuteToggleResult","isMuted","ActiveCallsResult","activeCalls","activeCall","validateClassObject","PhoneCall","CapabilitiesResult","hasMute","hasRecord","hasMerge","hasSwap","hasSignedRecordingUrl","debugEnabled","hasContactSearch","hasAgentAvailability","hasQueueWaitTime","supportsMos","hasSupervisorListenIn","hasSupervisorBargeIn","hasBlindTransfer","hasTransferToOmniFlow","hasPendingStatusChange","validateBoolean","AgentConfigResult","phones","selectedPhone","Array","AgentConfig","RecordingToggleResult","isRecordingPaused","contactId","initialContactId","instanceId","region","ParticipantResult","initialCallHasEnded","callInfo","phoneNumber","callId","CallInfo","PhoneContactsResult","contacts","contactTypes","contact","Contact","filterType","CallResult","HangupResult","calls","HoldToggleResult","isThirdPartyOnHold","isCustomerOnHold","SignedRecordingUrlResult","success","url","duration","validateNumber","InitResult","showLogin","loginFrameHeight","GenericResult","LogoutResult","callStateTimestamp","isOnHold","initialCallId","isSoftphoneCall","acceptEnabled","declineEnabled","muteEnabled","swapEnabled","conferenceEnabled","holdEnabled","recordEnabled","addCallerEnabled","extensionEnabled","isReplayable","isBargeable","isExternalTransfer","showMuteButton","showRecordButton","showAddCallerButton","showAddBlindTransferButton","showMergeButton","showSwapButton","removeParticipantVariant","validateDate","id","prefix","extension","endpointARN","queue","availability","recordId","description","queueWaitTime","PhoneCallAttributes","voiceCallId","participantType","dialerType","parentId","hasSupervisorBargedIn","callType","callAttributes","reason","closeCallOnError","agentStatus","VendorConnector","config","statusInfo","enqueueNextState","logMessageToVendor","digits","call1","call2","message","recordingUrl","vendorCallKey","payload","enumValues","RegExp","test","className","AgentStatusInfo","statusId","statusApiName","statusName","AgentVendorStatusInfo","statusType","StateChangeResult","newVendorStateInfo","oldVendorStateInfo","SupervisedCallInfo","from","to","supervisorName","isBargedIn","AudioStats","stats","isAudioStatsCompleted","audioStatsElement","AudioStatsElement","inputChannelStats","outputChannelStats","StatsInfo","packetsCount","packetsLost","jitterBufferMillis","roundTripTimeMillis","statsCount","SuperviseCallResult","SupervisorHangupResult","getMOSByStream","streamType","avgStats","getAvgStats","effectiveLatency","R","enableMos","getMOS","inputChannelMOS","ouputChannelMOS","Math","min","initAudioStats","updateAudioStats","statsArray","getErrorType","e","getErrorMessage","dispatchEventLog","eventType","isError","sanitizedPayload","sanitizePayload","isArray","element","postMessage","dispatchEvent","registerLog","telephonyEventType","telephonyEventPayload","dispatchError","errorType","console","dispatchInfo","setConnectorReady","getAgentConfig","agentConfigResult","getCapabilities","capabilitiesResult","getActiveCalls","activeCallsResult","agentConfig","capabilities","callInProgress","channelMessageHandler","toLowerCase","supervisorDisconnect","hangupPayload","acceptCall","messagetype","additionalInfo","declineCall","endCall","mute","publishEvent","unmute","hold","resume","setAgentStatus","getAgentStatus","dial","sendDigits","getPhoneContacts","filter","map","swap","callToHold","callToResume","conference","addParticipant","isBlindTransfer","pauseRecording","resumeRecording","logout","handleMessage","wrapUpCall","isAvailable","shouldReplay","isSupervisorCall","isReplayedCall","setAgentConfig","getSignedRecordingUrl","signedRecordingUrlResult","superviseCall","supervisorBargeIn","windowMessageHandler","sfDomain","originUrl","origin","protocol","hostname","ports","onmessage","exposedConnectorConfig","connectorConfig","init","window","removeEventListener","prop","startsWith","validatePayload","payloadType","initializeConnector","connector","addEventListener","publishLog","publishError","REMOTE_CONTROLLER","transferCall","mos"],"mappings":"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","file":"scv-connector-base.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SCVConnectorBase\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SCVConnectorBase\"] = factory();\n\telse\n\t\troot[\"SCVConnectorBase\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","module.exports = require(\"regenerator-runtime\");\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nexport default {\n MESSAGE_TYPE: {\n // Framework Message Types\n SETUP_CONNECTOR: 'SETUP_CONNECTOR',\n CONNECTOR_READY: 'CONNECTOR_READY',\n\n // Telephony Message Types: sent from SFDC to Telephony Vendor\n LOG: 'LOG',\n TELEPHONY_EVENT_DISPATCHED: 'TELEPHONY_EVENT_DISPATCHED',\n ACCEPT_CALL: 'ACCEPT_CALL',\n DECLINE_CALL: 'DECLINE_CALL',\n END_CALL: 'END_CALL',\n MUTE: 'MUTE',\n UNMUTE: 'UNMUTE',\n HOLD: 'HOLD',\n RESUME: 'RESUME',\n SET_AGENT_STATUS: 'SET_AGENT_STATUS',\n GET_AGENT_STATUS: 'GET_AGENT_STATUS',\n DIAL: 'DIAL',\n SEND_DIGITS: 'SEND_DIGITS',\n GET_PHONE_CONTACTS: 'GET_PHONE_CONTACTS',\n SWAP_PARTICIPANTS: 'SWAP_PARTICIPANTS',\n ADD_PARTICIPANT: 'ADD_PARTICIPANT',\n CONFERENCE: 'CONFERENCE',\n PAUSE_RECORDING: 'PAUSE_RECORDING',\n RESUME_RECORDING: 'RESUME_RECORDING',\n LOGOUT: 'LOGOUT',\n MESSAGE: 'MESSAGE',\n WRAP_UP_CALL: 'WRAP_UP_CALL',\n AGENT_AVAILABLE: 'AGENT_AVAILABLE',\n SET_AGENT_CONFIG: 'SET_AGENT_CONFIG',\n GET_SIGNED_RECORDING_URL: 'GET_SIGNED_RECORDING_URL',\n DOWNLOAD_VENDOR_LOGS: 'DOWNLOAD_VENDOR_LOGS',\n SUPERVISE_CALL: 'SUPERVISE_CALL',\n SUPERVISOR_BARGE_IN : 'SUPERVISOR_BARGE_IN',\n SUPERVISOR_DISCONNECT: 'SUPERVISOR_DISCONNECT'\n },\n EVENT_TYPE: {\n QUEUED_CALL_STARTED: 'QUEUED_CALL_STARTED',\n CALL_STARTED: 'CALL_STARTED',\n CALL_CONNECTED: 'CALL_CONNECTED',\n CALL_FAILED: 'CALL_FAILED',\n MUTE_TOGGLE: 'MUTE_TOGGLE',\n HOLD_TOGGLE: 'HOLD_TOGGLE',\n HANGUP: 'HANGUP',\n ERROR: 'ERROR',\n WARNING: 'WARNING',\n INFO: 'INFO',\n PHONE_CONTACTS: 'PHONE_CONTACTS',\n PARTICIPANT_ADDED: 'PARTICIPANT_ADDED',\n PARTICIPANT_CONNECTED: 'PARTICIPANT_CONNECTED',\n PARTICIPANT_REMOVED: 'PARTICIPANT_REMOVED',\n LOGIN_STARTED: 'LOGIN_STARTED',\n LOGIN_RESULT: 'LOGIN_RESULT', // info about timeout, error, success etc\n LOGOUT_RESULT: 'LOGOUT_RESULT',\n RECORDING_TOGGLE: 'RECORDING_TOGGLE',\n PARTICIPANTS_SWAPPED: 'PARTICIPANTS_SWAPPED',\n PARTICIPANTS_CONFERENCED: 'PARTICIPANTS_CONFERENCED',\n SHOW_LOGIN: 'SHOW_LOGIN',\n SET_AGENT_STATUS_RESULT: 'SET_AGENT_STATUS_RESULT',\n GET_AGENT_STATUS_RESULT: 'GET_AGENT_STATUS_RESULT',\n WRAP_UP_ENDED: 'WRAP_UP_ENDED',\n MESSAGE: 'MESSAGE',\n AFTER_CALL_WORK_STARTED: 'AFTER_CALL_WORK_STARTED',\n AGENT_CONFIG_UPDATED: 'AGENT_CONFIG_UPDATED',\n AGENT_ERROR: 'AGENT_ERROR',\n SOFTPHONE_ERROR: 'SOFTPHONE_ERROR',\n SIGNED_RECORDING_URL: 'SIGNED_RECORDING_URL',\n UPDATE_AUDIO_STATS: 'UPDATE_AUDIO_STATS',\n UPDATE_AUDIO_STATS_COMPLETED: 'UPDATE_AUDIO_STATS_COMPLETED',\n SUPERVISOR_BARGED_IN: 'SUPERVISOR_BARGED_IN',\n SUPERVISOR_CALL_STARTED : 'SUPERVISOR_CALL_STARTED',\n SUPERVISOR_CALL_CONNECTED: 'SUPERVISOR_CALL_CONNECTED',\n SUPERVISOR_HANGUP : 'SUPERVISOR_HANGUP',\n CALL_BARGED_IN : 'CALL_BARGED_IN',\n SET_AGENT_STATUS: 'SET_AGENT_STATUS',\n GET_AGENT_STATUS: 'GET_AGENT_STATUS',\n STATE_CHANGE: 'STATE_CHANGE'\n },\n INFO_TYPE: {\n CAN_NOT_ACCEPT_THE_CALL: 'CAN_NOT_ACCEPT_THE_CALL'\n },\n ERROR_TYPE: {\n GENERIC_ERROR: 'GENERIC_ERROR',\n AGENT_ERROR: 'AGENT_ERROR',\n MICROPHONE_NOT_SHARED: 'MICROPHONE_NOT_SHARED',\n UNSUPPORTED_BROWSER: 'UNSUPPORTED_BROWSER',\n AUTHENTICATION_ERROR: 'AUTHENTICATION_ERROR',\n INVALID_AGENT_STATUS: 'INVALID_AGENT_STATUS',\n CAN_NOT_SET_AGENT_STATUS: 'CAN_NOT_SET_AGENT_STATUS',\n LOGIN_REQUIRED: 'LOGIN_REQUIRED',\n CAN_NOT_DECLINE_THE_CALL: 'CAN_NOT_DECLINE_THE_CALL',\n CAN_NOT_END_THE_CALL: 'CAN_NOT_END_THE_CALL',\n CAN_NOT_HOLD_CALL: 'CAN_NOT_HOLD_CALL',\n CAN_NOT_RESUME_CALL: 'CAN_NOT_RESUME_CALL',\n CAN_NOT_MUTE_CALL: 'CAN_NOT_MUTE_CALL',\n CAN_NOT_UNMUTE_CALL: 'CAN_NOT_UNMUTE_CALL',\n CAN_NOT_TOGGLE_MUTE: 'CAN_NOT_TOGGLE_MUTE',\n CAN_NOT_TOGGLE_HOLD: 'CAN_NOT_TOGGLE_HOLD',\n CAN_NOT_TOGGLE_RECORD: 'CAN_NOT_TOGGLE_RECORD',\n INVALID_PARTICIPANT: 'INVALID_PARTICIPANT',\n CAN_NOT_LOG_IN: 'CAN_NOT_LOG_IN',\n CAN_NOT_LOG_OUT: 'CAN_NOT_LOG_OUT',\n INVALID_PARAMS: 'INVALID_PARAMS',\n CAN_NOT_GET_PHONE_CONTACTS: 'CAN_NOT_GET_PHONE_CONTACTS',\n CAN_NOT_SWAP_PARTICIPANTS: 'CAN_NOT_SWAP_PARTICIPANTS',\n CAN_NOT_CONFERENCE: 'CAN_NOT_CONFERENCE',\n INVALID_DESTINATION: 'INVALID_DESTINATION',\n INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER',\n CAN_NOT_HANGUP_PARTICIPANT: 'CAN_NOT_HANGUP_PARTICIPANT',\n CAN_NOT_ADD_PARTICIPANT: 'CAN_NOT_ADD_PARTICIPANT',\n CAN_NOT_CONNECT_PARTICIPANT: 'CAN_NOT_CONNECT_PARTICIPANT',\n CAN_NOT_START_THE_CALL: 'CAN_NOT_START_THE_CALL',\n CAN_NOT_PAUSE_RECORDING: 'CAN_NOT_PAUSE_RECORDING',\n CAN_NOT_RESUME_RECORDING: 'CAN_NOT_RESUME_RECORDING',\n CAN_NOT_SET_AGENT_CONFIG: 'CAN_NOT_SET_AGENT_CONFIG',\n CAN_NOT_SET_CAPABILITIES: 'CAN_NOT_SET_CAPABILITIES',\n CAN_NOT_UPDATE_PHONE_NUMBER: 'CAN_NOT_UPDATE_PHONE_NUMBER',\n CAN_NOT_GET_SIGNED_RECORDING_URL: 'CAN_NOT_GET_SIGNED_RECORDING_URL',\n CAN_NOT_SUPERVISE_CALL : 'CAN_NOT_SUPERVISE_CALL',\n CAN_NOT_DISCONNECT_SUPERVISOR : 'CAN_NOT_DISCONNECT_SUPERVISOR',\n CAN_NOT_BARGE_IN_SUPERVISOR: 'CAN_NOT_BARGE_IN_SUPERVISOR',\n CAN_NOT_BARGE_IN_CALL: 'CAN_NOT_BARGE_IN_CALL',\n CAN_NOT_GET_AGENT_STATUS: 'CAN_NOT_GET_AGENT_STATUS',\n INVALID_STATE_CHANGE_RESULT: 'INVALID_STATE_CHANGE_RESULT'\n },\n AGENT_STATUS: {\n ONLINE: 'Online',\n OFFLINE: 'Offline',\n ACW : 'AfterCallWork',\n CALLBACK_MISSED_OR_REJECTED: 'CallbackMissedOrRejected' // Used only for Amazon; workaround for https://github.com/amazon-connect/amazon-connect-streams/issues/344\n },\n PARTICIPANT_TYPE: {\n AGENT: 'Agent',\n INITIAL_CALLER: 'Initial_Caller',\n THIRD_PARTY: 'Third_Party',\n SUPERVISOR: 'Supervisor'\n },\n CALL_TYPE: {\n INBOUND: 'Inbound',\n OUTBOUND: 'Outbound',\n CALLBACK: 'Callback',\n ADD_PARTICIPANT: 'AddParticipant',\n TRANSFER:'Transfer'\n },\n DIALER_TYPE: {\n OUTBOUND_PREVIEW: 'OutboundPreview',\n NONE: 'None'\n },\n CONTACT_TYPE: {\n PHONEBOOK: 'PhoneBook',\n QUEUE: 'Queue',\n PHONENUMBER: 'PhoneNumber',\n AGENT: 'Agent',\n FLOW: 'Flow'\n },\n AGENT_CONFIG_TYPE: {\n SHOW_AGENT_SETTINGS: 'SHOW_AGENT_SETTINGS',\n PHONES: 'PHONES',\n SELECTED_PHONE: 'SELECTED_PHONE'\n },\n CAPABILITIES_TYPE: {\n MUTE: 'MUTE',\n RECORD: 'RECORD',\n MERGE: 'MERGE',\n SWAP: 'SWAP',\n SIGNED_RECORDING_URL: 'SIGNED_RECORDING_URL',\n DEBUG_ENABLED: 'DEBUG_ENABLED',\n CONTACT_SEARCH: 'CONTACT_SEARCH',\n VENDOR_PROVIDED_AVAILABILITY: 'VENDOR_PROVIDED_AVAILABILITY',\n VENDOR_PROVIDED_QUEUE_WAIT_TIME: 'VENDOR_PROVIDED_QUEUE_WAIT_TIME',\n SUPERVISOR_LISTEN_IN: 'SUPERVISOR_LISTEN_IN',\n SUPERVISOR_BARGE_IN: 'SUPERVISOR_BARGE_IN',\n MOS: 'MOS',\n BLIND_TRANSFER: 'BLIND_TRANSFER',\n TRANSFER_TO_OMNI_FLOW: 'TRANSFER_TO_OMNI_FLOW',\n PENDING_STATUS_CHANGE: 'PENDING_STATUS_CHANGE'\n },\n CALL_STATE: {\n RINGING: 'ringing',\n CONNECTED: 'connected',\n TRANSFERRING: 'transferring',\n TRANSFERRED: 'transferred',\n ENDED: 'ended'\n },\n PHONE_TYPE: {\n DESK_PHONE: 'DESK_PHONE',\n SOFT_PHONE: 'SOFT_PHONE'\n },\n HANGUP_REASON: {\n PHONE_CALL_ERROR: \"error\",\n PHONE_CALL_ENDED: \"ended\"\n },\n AGENT_AVAILABILITY: {\n AVAILABLE: \"AVAILABLE\",\n BUSY: \"BUSY\",\n OFFLINE: \"OFFLINE\"\n },\n REMOVE_PARTICIPANT_VARIANT: {\n ALWAYS : 'ALWAYS',\n NEVER: 'NEVER',\n ALWAYS_EXCEPT_ON_HOLD: 'ALWAYS_EXCEPT_ON_HOLD'\n },\n LOG_LEVEL: {\n ERROR: \"ERROR\",\n INFO: \"INFO\"\n },\n LOG_SOURCE: {\n SYSTEM: \"SYSTEM\",\n PARTNER: \"PARTNER\"\n },\n CONTACTS_FILTER_TYPES: {\n \"AGENT\": \"AGENT\",\n \"QUEUE\": \"QUEUE\",\n \"CONTACT\": \"CONTACT\",\n \"DIRECTORY\": \"DIRECTORY\",\n \"FLOW\": \"FLOW\",\n \"AVAILABLE\": \"AVAILABLE\"\n }\n};\n\n/**\n * Fields in the connector configuration that are logged. \n */\nexport const CONNECTOR_CONFIG_EXPOSED_FIELDS = [\n \"/internalNameLabel\",\n \"/reqGeneralInfo/reqAdapterUrl\",\n \"/reqGeneralInfo/reqVendorInfoApiName\",\n \"isACWAllowed\",\n \"isHVSEnabled\",\n \"orgDomainName\",\n \"phoneServiceChannelId\",\n \"telephonySettingsComponentFqn\"\n];\n\n/**\n * Fields that starts with string in the connector configuration that are logged. \n */\nexport const CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH = [\n \"/reqHvcc\"\n];\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\nimport { downloadData } from './downloadData.js';\nimport constants from './constants';\n\n//The max size of the logs in # of characaters\nconst MAX_LOGS_SIZE = 1.5e7/2; //15 MB or 7.5M characters\n\nconst _strify = obj => (typeof obj === 'string') ? obj : JSON.stringify(obj);\n\nlet LOGS_SIZE = 0;\nlet logs = [];\n\nfunction _log(logLevel, logMessage, logSource) {\n if(!logMessage) {\n throw new Error(\"Log Message required\");\n }\n logLevel = logLevel || constants.LOG_LEVEL.INFO;\n logSource = logSource || constants.LOG_SOURCE.PARTNER;\n\n const logStr = [new Date().toISOString(), _strify(logLevel), _strify(logSource), `${_strify(logMessage)}\\n`].join(\"|\");\n \n //If logs size is greater than max size, empty it.\n if(LOGS_SIZE + logStr.length >= MAX_LOGS_SIZE) {\n logs = []; \n LOGS_SIZE = 0;\n }\n LOGS_SIZE += logStr.length;\n logs.push(logStr);\n}\n\n/**\n * Log a message at a custom level.\n * @param {object} logMessage\n * @param {string} logLevel \n * @param {string} [logSource]\n */\nexport function log(logMessage, logLevel, logSource) {\n _log(logLevel, logMessage, logSource);\n}\n\n/**\n * \n * @returns a deep copy of the logs array\n */\nexport function getLogs() {\n return JSON.parse(JSON.stringify(logs));\n}\n\n/**\n * Download the logs as a file\n */\nexport function downloadLogs() {\n downloadData(logs.join(''), `log-${new Date().getTime()}.txt`, 'text/plain');\n}\n","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Download data as a file.\n * @param {object} data \n * @param {string} fileName \n * @param {string} fileType\n */\n export function downloadData(data, fileName, fileType) {\n if(!document || !data) return;\n \n const dataStr = (typeof data === 'string') ? data : JSON.stringify(data);\n const file = new Blob([dataStr], {type: fileType});\n let a = document.createElement(\"a\") \n const blobURL = URL.createObjectURL(file);\n a.download = fileName;\n a.href = blobURL;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(blobURL);\n}","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/* eslint-disable no-unused-vars */\nimport constants from './constants.js';\nimport { downloadLogs } from './logger.js';\n\nexport const Constants = {\n EVENT_TYPE: {\n LOGIN_RESULT: constants.EVENT_TYPE.LOGIN_RESULT,\n LOGOUT_RESULT: constants.EVENT_TYPE.LOGOUT_RESULT,\n CALL_STARTED: constants.EVENT_TYPE.CALL_STARTED,\n QUEUED_CALL_STARTED: constants.EVENT_TYPE.QUEUED_CALL_STARTED,\n CALL_CONNECTED: constants.EVENT_TYPE.CALL_CONNECTED,\n HANGUP: constants.EVENT_TYPE.HANGUP,\n MUTE_TOGGLE: constants.EVENT_TYPE.MUTE_TOGGLE,\n HOLD_TOGGLE: constants.EVENT_TYPE.HOLD_TOGGLE,\n RECORDING_TOGGLE: constants.EVENT_TYPE.RECORDING_TOGGLE,\n PARTICIPANTS_SWAPPED: constants.EVENT_TYPE.PARTICIPANTS_SWAPPED,\n PARTICIPANTS_CONFERENCED: constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED,\n PARTICIPANT_ADDED: constants.EVENT_TYPE.PARTICIPANT_ADDED, \n PARTICIPANT_CONNECTED: constants.EVENT_TYPE.PARTICIPANT_CONNECTED,\n PARTICIPANT_REMOVED: constants.EVENT_TYPE.PARTICIPANT_REMOVED,\n MESSAGE: constants.EVENT_TYPE.MESSAGE,\n AFTER_CALL_WORK_STARTED: constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED,\n WRAP_UP_ENDED: constants.EVENT_TYPE.WRAP_UP_ENDED,\n AGENT_ERROR: constants.EVENT_TYPE.AGENT_ERROR,\n SOFTPHONE_ERROR: constants.EVENT_TYPE.SOFTPHONE_ERROR,\n UPDATE_AUDIO_STATS: constants.EVENT_TYPE.UPDATE_AUDIO_STATS,\n SUPERVISOR_BARGED_IN: constants.EVENT_TYPE.SUPERVISOR_BARGED_IN,\n SUPERVISOR_CALL_STARTED : constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED,\n SUPERVISOR_CALL_CONNECTED: constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED,\n SUPERVISOR_HANGUP : constants.EVENT_TYPE.SUPERVISOR_HANGUP,\n SET_AGENT_STATUS: constants.EVENT_TYPE.SET_AGENT_STATUS,\n GET_AGENT_STATUS: constants.EVENT_TYPE.GET_AGENT_STATUS,\n STATE_CHANGE: constants.EVENT_TYPE.STATE_CHANGE\n },\n /**\n * @enum {string}\n */\n ERROR_TYPE: {\n GENERIC_ERROR: constants.ERROR_TYPE.GENERIC_ERROR,\n INVALID_PARTICIPANT: constants.ERROR_TYPE.INVALID_PARTICIPANT,\n INVALID_DESTINATION: constants.ERROR_TYPE.INVALID_DESTINATION,\n INVALID_PARAMS: constants.ERROR_TYPE.INVALID_PARAMS,\n INVALID_AGENT_STATUS: constants.ERROR_TYPE.INVALID_AGENT_STATUS,\n CAN_NOT_UPDATE_PHONE_NUMBER: constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER\n },\n /**\n * @enum {string}\n */\n AGENT_STATUS: { ...constants.AGENT_STATUS },\n /**\n * @enum {string}\n */\n PARTICIPANT_TYPE: { ...constants.PARTICIPANT_TYPE },\n /**\n * @enum {string}\n */\n CALL_TYPE: { ...constants.CALL_TYPE },\n /**\n * @enum {string}\n */\n DIALER_TYPE: { ...constants.DIALER_TYPE },\n /**\n * @enum {string}\n */\n CONTACT_TYPE: { ...constants.CONTACT_TYPE },\n /**\n * @enum {string}\n */\n CALL_STATE: { ...constants.CALL_STATE },\n /**\n * @enum {string}\n */\n HANGUP_REASON: { ...constants.HANGUP_REASON },\n /**\n * @enum {string}\n */\n PHONE_TYPE: { ...constants.PHONE_TYPE },\n /**\n * @enum {String}\n */\n AGENT_AVAILABILITY: { ...constants.AGENT_AVAILABILITY },\n /**\n * @enum (String)\n */\n REMOVE_PARTICIPANT_VARIANT: { ...constants.REMOVE_PARTICIPANT_VARIANT },\n /**\n * @enum {String}\n */\n LOG_LEVEL: { ...constants.LOG_LEVEL },\n /**\n * @enum {String}\n */\n CONTACTS_FILTER_TYPES: { ...constants.CONTACTS_FILTER_TYPES }\n};\n\n/**\n * Class representing a Phone type\n */\n export class Phone {\n /**\n * Create Phone\n * @param {object} param\n * @param {PHONE_TYPE} param.type\n * @param {string} [param.number]\n */\n constructor({ type, number}) {\n Validator.validateEnum(type, Object.values(constants.PHONE_TYPE));\n if(number) {\n Validator.validateString(number);\n }\n this.type = type;\n this.number = number;\n }\n}\n\n/**\n * Class representing result type for mute() & unmute()\n */\nexport class MuteToggleResult {\n /**\n * Create ActiveCallsResult\n * @param {object} param\n * @param {boolean} param.isMuted\n */\n constructor({ isMuted }) {\n this.isMuted = isMuted;\n }\n}\n\n/**\n * Class representing result type for getActiveCalls()\n */\nexport class ActiveCallsResult {\n /**\n * Create ActiveCallsResult\n * @param {object} param\n * @param {PhoneCall[]} [param.activeCalls]\n */\n constructor({ activeCalls = [] }) {\n if (activeCalls.length > 0) {\n activeCalls.forEach(activeCall => {\n Validator.validateClassObject(activeCall, PhoneCall);\n });\n }\n this.activeCalls = activeCalls;\n }\n}\n\n/**\n * Class representing result type for getCapabilities()\n */\nexport class CapabilitiesResult {\n /**\n * Create CapabilitiesResult\n * @param {object} param\n * @param {boolean} [param.hasMute]\n * @param {boolean} [param.hasRecord]\n * @param {boolean} [param.hasMerge]\n * @param {boolean} [param.hasSwap]\n * @param {boolean} [param.hasSignedRecordingUrl]\n * @param {boolean} [param.debugEnabled]\n * @param {boolean} [param.hasContactSearch] True if getPhoneContacts uses the 'contain' filter\n * @param {boolean} [param.hasAgentAvailability] True if getPhoneContacts also provides agent availability, false if Salesforce provides it.\n * @param {boolean} [param.hasQueueWaitTime] True if getPhoneContacts also provides estimated queue wait time, false if Salesforce provides it.\n * @param {boolean} [param.supportsMos] True if vendor support MOS\n * @param {boolean} [param.hasSupervisorListenIn] True if vendor supports supervisor listening to a ongoing call\n * @param {boolean} [param.hasSupervisorBargeIn] True if vendor supports Supervisor barging into a ongoing call\n * @param {boolean} [param.hasBlindTransfer] True if vendor supports blind transfers\n * @param {boolean} [param.hasBlindTransfer] True if vendor supports transfer to omni flows\n * @param {boolean} [param.hasPendingStatusChange] True if vendor supports Pending Status Change\n */\n constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, hasQueueWaitTime = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false, hasTransferToOmniFlow = false, hasPendingStatusChange=false }) {\n Validator.validateBoolean(hasMute);\n Validator.validateBoolean(hasRecord);\n Validator.validateBoolean(hasMerge);\n Validator.validateBoolean(hasSwap);\n Validator.validateBoolean(hasSignedRecordingUrl);\n Validator.validateBoolean(debugEnabled);\n Validator.validateBoolean(hasContactSearch);\n Validator.validateBoolean(hasAgentAvailability);\n Validator.validateBoolean(hasQueueWaitTime);\n Validator.validateBoolean(supportsMos);\n Validator.validateBoolean(hasSupervisorListenIn);\n Validator.validateBoolean(hasSupervisorBargeIn);\n Validator.validateBoolean(hasBlindTransfer);\n Validator.validateBoolean(hasTransferToOmniFlow);\n Validator.validateBoolean(hasPendingStatusChange);\n\n this.hasMute = hasMute;\n this.hasRecord = hasRecord;\n this.hasMerge = hasMerge;\n this.hasSwap = hasSwap;\n this.hasSignedRecordingUrl = hasSignedRecordingUrl;\n this.debugEnabled = debugEnabled;\n this.hasContactSearch = hasContactSearch;\n this.hasAgentAvailability = hasAgentAvailability;\n this.hasQueueWaitTime = hasQueueWaitTime;\n this.supportsMos = supportsMos;\n this.hasSupervisorListenIn = hasSupervisorListenIn;\n this.hasSupervisorBargeIn = hasSupervisorBargeIn;\n this.hasBlindTransfer = hasBlindTransfer;\n this.hasTransferToOmniFlow = hasTransferToOmniFlow;\n this.hasPendingStatusChange = hasPendingStatusChange;\n }\n}\n\n/**\n * Class representing result type for getAgentConfig()\n */\nexport class AgentConfigResult {\n /**\n * Create AgentConfigResult\n * @param {object} param\n * @param {Phone[]} [param.phones]\n * @param {Phone} [param.selectedPhone]\n */\n constructor({ phones = [constants.PHONE_TYPE.SOFT_PHONE], selectedPhone = new Phone({type: constants.PHONE_TYPE.SOFT_PHONE}) }) {\n Validator.validateClassObject(phones, Array);\n Validator.validateClassObject(selectedPhone, Phone);\n\n this.phones = phones;\n this.selectedPhone = selectedPhone;\n }\n}\n\n/**\n * Class representing AgentConfig type for setAgentConfig()\n */\nexport class AgentConfig {\n /**\n * Create AgentConfig\n * @param {object} param\n * @param {Phone} [param.selectedPhone]\n */\n constructor({ selectedPhone }) {\n Validator.validateClassObject(selectedPhone, Phone);\n this.selectedPhone = selectedPhone;\n }\n}\n\n/**\n * Class representing result type for pauseRecording() & resumeRecording\n */\nexport class RecordingToggleResult {\n /**\n * Create RecordingToggleResult\n * @param {object} param\n * @param {boolean} param.isRecordingPaused\n * @param {string} [param.contactId]\n * @param {string} [param.initialContactId]\n * @param {string} [param.instanceId]\n * @param {string} [param.region]\n */\n constructor({ isRecordingPaused, contactId = null, initialContactId = null, instanceId = null, region = null }) {\n this.isRecordingPaused = isRecordingPaused;\n this.contactId = contactId;\n this.initialContactId = initialContactId;\n this.instanceId = instanceId;\n this.region = region;\n }\n}\n\n/**\n * Class representing result type for addParticipant()\n */\nexport class ParticipantResult {\n /**\n * Create ParticipantResult\n * @param {object} param\n * @param {boolean} param.initialCallHasEnded\n * @param {CallInfo} param.callInfo\n * @param {string} param.phoneNumber\n * @param {string} param.callId\n */\n constructor({ initialCallHasEnded, callInfo, phoneNumber, callId }) {\n Validator.validateClassObject(callInfo, CallInfo);\n this.initialCallHasEnded = initialCallHasEnded;\n this.callInfo = callInfo;\n this.phoneNumber = phoneNumber;\n this.callId = callId;\n }\n}\n\n/**\n * Class representing result type for getPhoneContacts()\n */\nexport class PhoneContactsResult {\n /**\n * Create PhoneContactsResult\n * @param {object} param\n * @param {Contact[]} [param.contacts]\n * @param {Array} [param.contactTypes]\n */\n constructor({ contacts = [], contactTypes = [] }) {\n if (contacts.length > 0) {\n contacts.forEach(contact => {\n Validator.validateClassObject(contact, Contact);\n });\n }\n if (contactTypes.length > 0) {\n contactTypes.forEach(filterType => {\n Validator.validateEnum(filterType, Object.values(constants.CONTACT_TYPE));\n });\n }\n this.contacts = contacts;\n this.contactTypes = contactTypes;\n }\n}\n\n/**\n * Class representing result type for accept(), decline(), dial()\n */\nexport class CallResult {\n /**\n * Create CallResult\n * @param {object} param\n * @param {PhoneCall} [param.call]\n */\n constructor({ call }) {\n if (call !== undefined) {\n Validator.validateClassObject(call, PhoneCall);\n }\n this.call = call;\n }\n}\n\n/**\n * Class representing result type for endCall(), hangup()\n */\nexport class HangupResult {\n /**\n * Create CallResult\n * @param {object} param\n * @param {PhoneCall[]|PhoneCall} param.calls - one or more calls (can be multiple calls in case of agent endcall/hangup)\n */\n constructor({ calls }) {\n if (calls instanceof Array) {\n calls.forEach(call => Validator.validateClassObject(call, PhoneCall));\n this.calls = calls;\n } else {\n Validator.validateClassObject(calls, PhoneCall);\n this.calls = [calls];\n }\n }\n}\n\n/**\n * Class representing result type for hold() & resume()\n */\nexport class HoldToggleResult {\n /**\n * Create HoldToggleResult\n * @param {object} param\n * @param {boolean} param.isThirdPartyOnHold\n * @param {boolean} param.isCustomerOnHold\n * @param {PhoneCall[]} [param.calls]\n */\n constructor({ isThirdPartyOnHold, isCustomerOnHold, calls }) {\n if (calls) {\n Object.values(calls).forEach(call => {\n Validator.validateClassObject(call, PhoneCall);\n });\n this.calls = calls;\n }\n this.isThirdPartyOnHold = isThirdPartyOnHold;\n this.isCustomerOnHold = isCustomerOnHold;\n }\n}\n\n/**\n * Class representing result type for getRecordingUrl\n */\n export class SignedRecordingUrlResult {\n /**\n * Create SignedRecordingUrlResult\n * @param {object} param\n * @param {boolean} param.success\n * @param {string} [param.url]\n * @param {number} [param.duration] in seconds\n * @param {string} [param.callId] Salesforce callId of the voice call\n */\n constructor({ success, url, duration, callId }) {\n if (success) {\n // For a successfull result, url is required\n Validator.validateString(url);\n Validator.validateString(callId);\n if (duration) {\n Validator.validateNumber(duration);\n }\n }\n this.success = success;\n this.url = url;\n this.duration = duration;\n this.callId = callId;\n }\n}\n\n/**\n * Class representing result type for init()\n */\nexport class InitResult {\n /**\n * Create InitResult\n * @param {object} param\n * @param {boolean} [param.showLogin]\n * @param {number} [param.loginFrameHeight]\n */\n constructor({ showLogin = false, loginFrameHeight = 350 }) {\n this.showLogin = showLogin;\n this.loginFrameHeight = loginFrameHeight;\n }\n}\n\n/**\n * Class representing generic result type\n */\nexport class GenericResult {\n /**\n * Create GenericResult\n * @param {object} param\n * @param {boolean} param.success\n */\n constructor({ success }) {\n this.success = success;\n }\n}\n\n/**\n * Class representing logout result type\n */\n export class LogoutResult {\n /**\n * Create LogoutResult\n * @param {object} param\n * @param {boolean} param.success\n * @param {number} [param.loginFrameHeight]\n */\n constructor({ success, loginFrameHeight = 350 }) {\n this.success = success;\n this.loginFrameHeight = loginFrameHeight;\n }\n}\n\n/**\n * Class representing callInfo class (call metadata)\n */\nexport class CallInfo {\n /**\n * Create CallInfo\n * @param {object} param\n * @param {boolean} param.isOnHold\n * @param {boolean} param.isRecordingPaused\n * @param {boolean} param.isMuted\n * @param {string} [param.initialCallId]\n * @param {Date} [param.callStateTimestamp]\n * @param {boolean} [param.isSoftphoneCall] - is it a softphone call \n * @param {boolean} [param.acceptEnabled]\n * @param {boolean} [param.declineEnabled]\n * @param {boolean} [param.muteEnabled]\n * @param {boolean} [param.swapEnabled]\n * @param {boolean} [param.conferenceEnabled]\n * @param {boolean} [param.holdEnabled]\n * @param {boolean} [param.recordEnabled]\n * @param {boolean} [param.addCallerEnabled]\n * @param {boolean} [param.extensionEnabled]\n * @param {boolean} [param.isReplayable]\n * @param {boolean} [param.isBargeable]\n * @param {boolean} [param.isExternalTransfer]\n * @param {boolean} [param.showMuteButton]\n * @param {boolean} [param.showRecordButton]\n * @param {boolean} [param.showAddCallerButton]\n * @param {boolean} [param.showAddBlindTransferButton]\n * @param {boolean} [param.showMergeButton]\n * @param {boolean} [param.showSwapButton]\n * @param {(\"ALWAYS\"|\"NEVER\"|\"ALWAYS_EXCEPT_ON_HOLD\")} [param.removeParticipantVariant] - The type of remove participant variant when in a transfer call. \n */\n constructor({ callStateTimestamp = null, isOnHold, isMuted = false, isRecordingPaused = false, initialCallId, isSoftphoneCall = true, \n acceptEnabled = true, declineEnabled = true, muteEnabled = true, swapEnabled = true, conferenceEnabled = true, holdEnabled = true,\n recordEnabled = true, addCallerEnabled = true, extensionEnabled = true, isReplayable = true, isBargeable = false, isExternalTransfer, \n showMuteButton = true, showRecordButton = true, showAddCallerButton = true, showAddBlindTransferButton = true, showMergeButton = true,\n showSwapButton = true, removeParticipantVariant = Constants.REMOVE_PARTICIPANT_VARIANT.ALWAYS }) {\n if (callStateTimestamp) {\n Validator.validateDate(callStateTimestamp);\n }\n Validator.validateBoolean(isRecordingPaused);\n Validator.validateBoolean(isMuted);\n Validator.validateBoolean(isSoftphoneCall);\n Validator.validateBoolean(acceptEnabled);\n Validator.validateBoolean(declineEnabled);\n Validator.validateBoolean(muteEnabled);\n Validator.validateBoolean(swapEnabled);\n Validator.validateBoolean(conferenceEnabled);\n Validator.validateBoolean(holdEnabled);\n Validator.validateBoolean(recordEnabled);\n Validator.validateBoolean(addCallerEnabled);\n Validator.validateBoolean(extensionEnabled);\n Validator.validateBoolean(isBargeable);\n Validator.validateBoolean(showMuteButton);\n Validator.validateBoolean(showRecordButton);\n Validator.validateBoolean(showAddCallerButton);\n Validator.validateBoolean(showAddBlindTransferButton);\n Validator.validateBoolean(showMergeButton);\n Validator.validateBoolean(showSwapButton);\n if (isExternalTransfer !== undefined) {\n Validator.validateBoolean(isExternalTransfer);\n }\n Validator.validateEnum(removeParticipantVariant, Object.values(constants.REMOVE_PARTICIPANT_VARIANT));\n this.callStateTimestamp = callStateTimestamp;\n this.isRecordingPaused = isRecordingPaused;\n this.isMuted = isMuted;\n this.isOnHold = isOnHold;\n this.initialCallId = initialCallId;\n this.isSoftphoneCall = isSoftphoneCall;\n this.acceptEnabled = acceptEnabled;\n this.declineEnabled = declineEnabled;\n this.muteEnabled = muteEnabled;\n this.swapEnabled = swapEnabled;\n this.conferenceEnabled = conferenceEnabled;\n this.holdEnabled = holdEnabled;\n this.recordEnabled = recordEnabled;\n this.addCallerEnabled = addCallerEnabled;\n this.extensionEnabled = extensionEnabled;\n this.isReplayable = isReplayable;\n this.isBargeable = isBargeable;\n this.isExternalTransfer = isExternalTransfer;\n this.removeParticipantVariant = removeParticipantVariant;\n this.showMuteButton = showMuteButton;\n this.showRecordButton = showRecordButton;\n this.showAddCallerButton = showAddCallerButton;\n this.showAddBlindTransferButton = showAddBlindTransferButton;\n this.showMergeButton = showMergeButton;\n this.showSwapButton = showSwapButton;\n }\n}\n\n/** \n * Class representing a Contact. This object is used to represent \n * phone system contact or any call target\n */\n\nexport class Contact {\n /**\n * Create a Contact.\n * @param {object} param\n * @param {string} [param.id] - The unique contactId\n * @param {(\"PhoneBook\"|\"Queue\"|\"PhoneNumber\"|\"Agent\")} [param.type] - The type of the contact, one of the CONTACT_TYPE values\n * @param {string} [param.name] - The label for this contact to be displayed in the UI\n * @param {string} [param.phoneNumber] - The phone number associcated with this contact\n * @param {string} [param.prefix] - Any prefix to be dialed before dialing the number (i.e. +1)\n * @param {string} [param.extension] - Any extension to be dialed after dialing the number\n * @param {string} [param.endpointARN]\n * @param {string} [param.queue]\n * @param {string} [param.availability]\n * @param {string} [param.recordId] - Salesforce RecordId\n * @param {string} [param.description] - Contact Description\n * @param {string} [param.queueWaitTime] - Estimated Queue Wait Time \n */\n constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description, queueWaitTime}) {\n if (phoneNumber) {\n Validator.validateString(phoneNumber);\n }\n if (type) {\n Validator.validateEnum(type, Object.values(constants.CONTACT_TYPE));\n }\n if (id) {\n Validator.validateString(id);\n }\n if (name) {\n Validator.validateString(name);\n }\n if (prefix) {\n Validator.validateString(prefix);\n }\n if (extension) {\n Validator.validateString(extension);\n }\n if (availability) {\n Validator.validateEnum(availability, Object.values(constants.AGENT_AVAILABILITY));\n }\n if (recordId) {\n Validator.validateString(recordId);\n }\n if (description) {\n Validator.validateString(description);\n }\n if (queueWaitTime) {\n Validator.validateString(queueWaitTime);\n }\n\n this.phoneNumber = phoneNumber;\n this.id = id;\n this.type = type;\n this.name = name;\n this.prefix = prefix;\n this.extension = extension;\n this.endpointARN = endpointARN;\n this.queue = queue;\n if (constants.CONTACT_TYPE.AGENT === this.type) {\n this.availability = availability;\n } else {\n this.availability = null;\n }\n this.queueWaitTime = queueWaitTime;\n this.recordId = recordId;\n this.description = description;\n }\n}\n\n/** \n* Class representing PhoneCallAttributes\n*/\n\nexport class PhoneCallAttributes {\n /**\n * Create PhoneCallAttributes.\n * @param {object} param\n * @param {string} [param.voiceCallId] - The voice call id\n * @param {PARTICIPANT_TYPE} [param.participantType] - The participant type of the call\n * @param {DIALER_TYPE} [param.dialerType] - The dialer type of the call\n * @param {string} [param.parentId] - The parent call id of the call\n * @param {boolean} [param.isOnHold]\n * @param {boolean} [param.hasSupervisorBargedIn]\n */\n constructor({ voiceCallId, participantType, dialerType = Constants.DIALER_TYPE.NONE, parentId, isOnHold, hasSupervisorBargedIn = false }) {\n if (voiceCallId) {\n Validator.validateString(voiceCallId);\n }\n if (participantType) {\n Validator.validateEnum(participantType, Object.values(constants.PARTICIPANT_TYPE));\n }\n if (parentId) {\n Validator.validateString(parentId);\n }\n if (isOnHold !== undefined) {\n Validator.validateBoolean(isOnHold);\n }\n\n Validator.validateBoolean(hasSupervisorBargedIn);\n Validator.validateEnum(dialerType, Object.values(constants.DIALER_TYPE));\n\n this.voiceCallId = voiceCallId;\n this.participantType = participantType;\n this.parentId = parentId;\n this.isOnHold = isOnHold;\n this.dialerType = dialerType;\n this.hasSupervisorBargedIn = hasSupervisorBargedIn;\n }\n}\n\n/** \n* Class representing a PhoneCall. \n*/\n\nexport class PhoneCall {\n /**\n * Create a PhoneCall.\n * @param {object} param\n * @param {string} [param.callId] - The unique callId. This is a required parameter\n * @param {CALL_TYPE} [param.callType] - The type of the call, one of the CALL_TYPE values\n * @param {Contact} [param.contact] - The Call Target / Contact \n * @param {string} [param.state] - The state of the call, i.e. ringing, connected, declined, failed \n * @param {PhoneCallAttributes} [param.callAttributes] - Any additional call attributes\n * @param {string} [param.phoneNumber] - The phone number associated with this call (usually external number)\n * @param {CallInfo} [param.callInfo]\n * @param {string} [param.reason]\n * @param {boolean} [param.closeCallOnError]\n * @param {string} [param.agentStatus]\n */\n constructor({callId, callType, contact, state, callAttributes, phoneNumber, callInfo, reason, closeCallOnError, agentStatus }) {\n // TODO: Revisit the required fields\n if (callId) {\n Validator.validateString(callId);\n this.callId = callId;\n }\n if (callType) {\n Validator.validateEnum(callType, Object.values(constants.CALL_TYPE));\n this.callType = callType;\n }\n if (phoneNumber) {\n Validator.validateString(phoneNumber);\n this.phoneNumber = phoneNumber;\n }\n if (callInfo) {\n Validator.validateClassObject(callInfo, CallInfo);\n this.callInfo = callInfo;\n }\n if (contact) {\n Validator.validateClassObject(contact, Contact);\n this.contact = contact;\n }\n if (reason) {\n this.reason = reason;\n }\n if (closeCallOnError) {\n this.closeCallOnError = closeCallOnError;\n }\n if (agentStatus) {\n this.agentStatus = agentStatus;\n }\n this.state = state;\n this.callAttributes = callAttributes;\n }\n}\n\n/** \n* Class representing a VendorConnector\n*/\nexport class VendorConnector {\n /**\n * Initialize the connector\n * @param {object} connectorConfig\n * @returns {Promise} \n * \n */\n init(config) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get the currently active calls\n * @returns {Promise} \n * \n */\n getActiveCalls() {\n throw new Error('Not implemented');\n }\n\n /**\n * Accept call\n * @param {PhoneCall} call - The call to be accepted\n * @returns {Promise} \n * \n */\n acceptCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Decline call\n * @param {PhoneCall} call - The call to be declined\n * @returns {Promise} \n * \n */\n declineCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * End call\n * @param {PhoneCall} call - The call to be ended\n * @param {AGENT_STATUS} agentStatus\n * @returns {Promise} \n * \n */\n endCall(call, agentStatus) {\n throw new Error('Not implemented');\n }\n\n /**\n * Mute call\n * @returns {Promise} \n * \n */\n mute() {\n throw new Error('Not implemented');\n }\n\n /**\n * Unmute call\n * @returns {Promise} \n * \n */\n unmute() {\n throw new Error('Not implemented');\n }\n\n /**\n * Hold call\n * @param {PhoneCall} call - The call to be held\n * @returns {Promise} \n * \n */\n hold(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Resume call\n * @param {PhoneCall} call - The call to be resumed\n * @returns {Promise} \n * \n */\n resume(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Set agent status\n * @param {string} agentStatus\n * @param {StatusInfo} statusInfo\n * @param {Boolean} enqueueNextState - flag to determine if this status change request should be enqueued if neccessary\n * @returns {Promise} \n * \n */\n setAgentStatus(agentStatus, statusInfo, enqueueNextState) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get agent status\n * @returns {Promise} \n * \n */\n getAgentStatus() {\n this.logMessageToVendor(constants.LOG_LEVEL.INFO, 'getAgentStatus API is NOT Implemented' );\n }\n\n /**\n * Dial out Number\n * @param {Contact} contact\n * @returns {Promise} \n * \n */\n dial(contact) {\n throw new Error('Not implemented');\n }\n\n /**\n * Send digits\n * @param {string} digits\n */\n sendDigits(digits) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get phone contacts\n * @returns {Promise} \n */\n getPhoneContacts() {\n throw new Error('Not implemented');\n }\n\n /**\n * Swap calls\n * @param {PhoneCall} call1\n * @param {PhoneCall} call2\n * @returns {Promise} \n */\n swap(call1, call2) {\n throw new Error('Not implemented');\n }\n\n /**\n * Conference calls\n * @param {PhoneCall[]} calls\n * @returns {Promise} \n */\n conference(calls) {\n throw new Error('Not implemented');\n }\n\n /**\n * Add participant to call\n * @param {Contact} contact\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n addParticipant(contact, call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Pause recording\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n pauseRecording(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Resume recording\n * @param {PhoneCall} call\n * @returns {Promise} \n */\n resumeRecording(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get agentConfig\n * @returns {Promise}\n */\n getAgentConfig() {\n throw new Error('Not implemented');\n }\n\n /**\n * Set Agent Config\n * @param {AgentConfig} config\n * @returns {Promise}\n */\n setAgentConfig(config) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get Capabilities\n * @returns {Promise}\n */\n getCapabilities() {\n throw new Error('Not implemented');\n }\n \n\n /**\n * Logout from Omni\n * @returns {Promise} \n */\n logout() {\n throw new Error('Not implemented');\n }\n\n /**\n * Handle message from LWC/Aura component\n * @param {object} message\n */\n handleMessage(message) {\n throw new Error('Not implemented');\n }\n\n /**\n * Wrap up call\n * @param {PhoneCall} call\n */\n wrapUpCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Get the signed recording url\n * @param {String} recordingUrl\n * @param {String} vendorCallKey\n * @param {String} callId\n * @returns {Promise} \n */\n getSignedRecordingUrl(recordingUrl, vendorCallKey, callId) {\n throw new Error('Not implemented');\n }\n\n /**\n * Triggers a browser download for Vendor Logs\n * @param {String[]} logs Array of log messages.\n */\n downloadLogs(logs) {\n downloadLogs();\n }\n\n /**\n * Sends the logs with a logLevel and payload to the vendor connector.\n * Does a no-op, if not implemented.\n * @param {String} logLevel Log Level (INFO, WARN, ERROR)\n * @param {String} message Message to be logged\n * @param {Object} payload An optional payload to be logged\n */\n logMessageToVendor(logLevel, message, payload) {}\n\n /**\n * Supervise a call\n * @param {PhoneCall} call Call to be supervised\n */\n superviseCall(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Supervisor disconnects from a call\n * @param {PhoneCall} call Call to be disconnected\n */\n supervisorDisconnect(call) {\n throw new Error('Not implemented');\n }\n\n /**\n * Supervisor Barges into a ongoing call\n * @param {PhoneCall} call Call which supervisor barges in\n */\n supervisorBargeIn(call) {\n throw new Error('Not implemented');\n }\n}\n\nexport class Validator {\n static validateString(value) {\n if (typeof value !== 'string') {\n throw new Error(`Invalid argument. Expecting a string but got ${typeof value}`);\n }\n return this;\n }\n\n static validateNumber(value) {\n if (typeof value !== 'number') {\n throw new Error(`Invalid argument. Expecting a number but got ${typeof value}`);\n }\n return this;\n }\n\n static validateBoolean(value) {\n if (typeof value !== 'boolean') {\n throw new Error(`Invalid argument. Expecting a boolean but got ${typeof value}`);\n }\n return this;\n }\n\n static validateEnum(value, enumValues) {\n const regex = new RegExp(enumValues.join( \"|\" ), \"i\");\n if (!regex.test(value)) {\n throw new Error(`Invalid argument. Expecting a value from ${JSON.stringify(enumValues)} but got ${value}`);\n }\n return this;\n }\n\n static validateDate(value) {\n if (!(value instanceof Date)) {\n throw new Error(`Invalid argument. Expecting a Date object but got ${typeof value}`);\n }\n return this;\n }\n\n static validateClassObject(object, className) {\n if (!(object instanceof className)) {\n throw new Error(`Invalid className. Expecting object of class ${className} but got ${typeof object}`);\n }\n return this;\n }\n}\n\n/** \n * Class representing an Agent status information. This object is used to represent \n * agent status information\n */\n\nexport class AgentStatusInfo {\n /**\n * Create a AgentStatusInfo.\n * @param {object} param\n * @param {string} [param.statusId] - The unique statusId (required)\n * @param {string} [param.statusApiName] - The status API name\n * @param {string} [param.statusName] - The label for this status to be displayed in the UI\n */\n constructor({statusId, statusApiName, statusName}) {\n Validator.validateString(statusId);\n if (statusApiName) {\n Validator.validateString(statusApiName);\n }\n if (statusName) {\n Validator.validateString(statusName);\n }\n this.statusId = statusId;\n this.statusApiName = statusApiName;\n this.statusName = statusName;\n }\n}\n\n/** \n * Class representing an Agent Vendor status information. This object is used to represent \n * agent vendor side status information\n */\nexport class AgentVendorStatusInfo {\n /**\n * Create a AgentVendorStatusInfo.\n * @param {object} param\n * @param {string} [param.statusId] - The unique statusId (e.g agentStateARN)\n * @param {string} [param.statusType] - The agent's current availability state type\n * @param {string} [param.statusName] - The name of the agent's current availability state\n */\n constructor({statusId, statusType, statusName}) {\n if (statusId) {\n Validator.validateString(statusId);\n }\n if (statusType) {\n Validator.validateString(statusType);\n }\n if (statusName) {\n Validator.validateString(statusName);\n }\n this.statusId = statusId;\n this.statusType = statusType;\n this.statusName = statusName;\n }\n}\n\n/** \n * NOTE: SALESFORCE INTERNAL USE ONLY\n * Class representing an State Change Result information. This object is used to represent \n * Agent State Change Infomation\n */\n export class StateChangeResult {\n /**\n * Create a StateChangeResult.\n * @param {object} param\n * @param {AgentVendorStatusInfo} [param.newVendorStateInfo] - newStateName (e.g 'Available') (required), newStateType (e.g 'routable')\n * @param {AgentVendorStatusInfo} [param.oldVendorStateInfo] - oldStateName (e.g 'offline'), oldStateType (e.g 'Offline')\n */\n constructor({newVendorStateInfo, oldVendorStateInfo}) {\n Validator.validateClassObject(newVendorStateInfo, AgentVendorStatusInfo);\n Validator.validateString(newVendorStateInfo.statusName);\n if (oldVendorStateInfo) {\n Validator.validateClassObject(oldVendorStateInfo, AgentVendorStatusInfo);\n }\n this.newVendorStateInfo = newVendorStateInfo;\n this.oldVendorStateInfo = oldVendorStateInfo;\n }\n}\n\n/** \n * Class representing a Supervised Call Info. This object is used to represent \n * information about a call that is being supervised by a supervisor.\n */\nexport class SupervisedCallInfo {\n /**\n * Create a AgentStatusInfo.\n * @param {object} param\n * @param {string} [param.callId] - The unique supervised vendor call ID (required)\n * @param {string} [param.voiceCallId] - The supervised salesforce voice call ID\n * @param {string} [param.callType] - The type of the call, one of the CALL_TYPE values\n * @param {string} [param.from] - From phone number (for Inbound calls)\n * @param {string} [param.to] - To phone number (for Outbound calls)\n * @param {string} [param.supervisorName] - The supervisor name (shown to the supervised agent on barge in)\n * @param {boolean} [param.isBargedIn] - True if the Supervisor has barged in, False if the supervisor is listening in.\n */\n\n constructor({callId, voiceCallId, callType, from, to, supervisorName, isBargedIn}) {\n Validator.validateString(callId);\n this.callId = callId;\n this.voiceCallId = voiceCallId;\n this.callType = callType;\n this.from = from;\n this.to = to;\n this.supervisorName = supervisorName;\n this.isBargedIn = isBargedIn;\n }\n}\n\n/**\n * Class representing a Audio Stats, which contains array of AudioStats. This object is used to calculate the MOS Score\n */\n\nexport class AudioStats {\n /**\n * Create a AudioStats\n * @param {object} param\n * @param {string} [param.callId] - The unique callId.\n * @param {AudioStatsElement[]} param.stats - array of AudioStatsElement\n * @param {boolean} [param.isAudioStatsCompleted] - True if the audio stats is completed, will calculate MOS and update VoiceCall record\n */\n constructor({ callId, stats, isAudioStatsCompleted }) {\n if (callId) {\n Validator.validateString(callId);\n this.callId = callId;\n }\n\n if (stats) {\n Validator.validateClassObject(stats, Array);\n stats.forEach(audioStatsElement => Validator.validateClassObject(audioStatsElement, AudioStatsElement));\n this.stats = stats;\n }\n\n if (isAudioStatsCompleted) {\n Validator.validateBoolean(isAudioStatsCompleted);\n this.isAudioStatsCompleted = isAudioStatsCompleted;\n }\n }\n}\n\n/**\n * Class representing a Audio Stats Element. This object is used to calculate the MOS Score\n */\n\nexport class AudioStatsElement {\n /**\n * Create a AudioStatsElement\n * @param {object} param\n * @param {StatsInfo} [param.inputChannelStats] - the inputChannel stream stats\n * @param {StatsInfo} [param.outputChannelStats] - the ouputChannel stream stats\n */\n constructor({inputChannelStats, outputChannelStats}) {\n if (inputChannelStats) {\n Validator.validateClassObject(inputChannelStats, StatsInfo);\n }\n if (outputChannelStats) {\n Validator.validateClassObject(outputChannelStats, StatsInfo);\n }\n \n this.inputChannelStats = inputChannelStats;\n this.outputChannelStats = outputChannelStats;\n }\n}\n\n/**\n * Class representing a Stream Stats. This object is used to calculate the MOS Score\n */\n\nexport class StatsInfo {\n /**\n * Create a StatsInfo\n * @param {object} param\n * @param {number} [param.packetsCount] - the packets count\n * @param {number} [param.packetsLost] - packets lost count\n * @param {number} [param.jitterBufferMillis] - jitter buffer in milliseconds\n * @param {number} [param.roundTripTimeMillis] - round trip time in milliseconds\n */\n constructor({packetsCount, packetsLost, jitterBufferMillis, roundTripTimeMillis}) {\n packetsCount = (packetsCount == null || packetsCount < 0) ? 0 : packetsCount;\n packetsLost = (packetsLost == null || packetsLost < 0) ? 0 : packetsLost;\n jitterBufferMillis = (jitterBufferMillis == null || jitterBufferMillis < 0) ? 0 : jitterBufferMillis;\n roundTripTimeMillis = (roundTripTimeMillis == null || roundTripTimeMillis < 0) ? 0 : roundTripTimeMillis;\n\n this.statsCount = 0;\n this.packetsCount = packetsCount;\n this.packetsLost = packetsLost;\n this.jitterBufferMillis = jitterBufferMillis;\n this.roundTripTimeMillis = roundTripTimeMillis;\n }\n}\n\n/**\n * Class representing supervise call result\n */\n export class SuperviseCallResult {\n /**\n * Create a SuperviseCallResult\n * @param {object} param\n * @param {PhoneCall} param.call\n */\n constructor({call}) {\n Validator.validateClassObject(call, PhoneCall);\n this.call = call;\n }\n}\n\n/**\n * Class representing result type for supervisorDisconnected()\n */\n export class SupervisorHangupResult extends HangupResult {\n /**\n * Create SupervisorHangupResult\n * @param {object} param\n * @param {PhoneCall[]|PhoneCall} param.calls - one or more calls when supervisor hangsup\n */\n constructor({ calls }) {\n super({ calls });\n }\n }","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\nimport { AudioStatsElement, StatsInfo } from './types';\nlet audioStatus;\nlet supportsMos = false;\n\nfunction getAvgStats(streamType) {\n const stats = audioStatus[streamType];\n return {\n packetsCount: stats.packetsCount / stats.statsCount,\n packetsLost: stats.packetsLost / stats.statsCount,\n jitterBufferMillis: stats.jitterBufferMillis / stats.statsCount,\n roundTripTimeMillis: stats.roundTripTimeMillis / stats.statsCount\n };\n}\n\nfunction getMOSByStream(streamType) {\n const avgStats = getAvgStats(streamType);\n const effectiveLatency = avgStats.roundTripTimeMillis + (avgStats.jitterBufferMillis * 2) + 10.0;\n let R = 0;\n if (effectiveLatency < 160) {\n R = 93.2 - (effectiveLatency / 40);\n } else {\n R = 93.2 - (effectiveLatency - 120) / 10;\n }\n R -= avgStats.packetsLost / avgStats.packetsCount * 2.50;\n return 1 + (0.035) * R + (.000007) * R * (R - 60) * (100 - R);\n}\n\nexport function enableMos() {\n supportsMos = true;\n}\n\nexport function getMOS() {\n if (!supportsMos || !audioStatus) {\n return undefined;\n }\n const inputChannelMOS = getMOSByStream('inputChannelStats');\n const ouputChannelMOS = getMOSByStream('outputChannelStats');\n audioStatus = null;\n if (isNaN(ouputChannelMOS) && isNaN(inputChannelMOS)) {\n return 0;\n } else if (isNaN(ouputChannelMOS)) {\n return inputChannelMOS;\n } else if (isNaN(inputChannelMOS)) {\n return ouputChannelMOS;\n } else {\n return Math.min(inputChannelMOS, ouputChannelMOS);\n }\n}\n\nexport function initAudioStats() {\n audioStatus = new AudioStatsElement({inputChannelStats: new StatsInfo({packetsCount: 0, packetsLost: 0, jitterBufferMillis: 0, roundTripTimeMillis: 0}), \n outputChannelStats: new StatsInfo({packetsCount: 0, packetsLost: 0, jitterBufferMillis: 0, roundTripTimeMillis: 0})});\n}\n\nexport function updateAudioStats(statsArray) {\n if (audioStatus) {\n statsArray.forEach((stats) => {\n if (stats.inputChannelStats) {\n audioStatus.inputChannelStats.statsCount++;\n audioStatus.inputChannelStats.packetsCount += stats.inputChannelStats.packetsCount | 0;\n audioStatus.inputChannelStats.packetsLost += stats.inputChannelStats.packetsLost | 0;\n audioStatus.inputChannelStats.jitterBufferMillis += stats.inputChannelStats.jitterBufferMillis | 0;\n audioStatus.inputChannelStats.roundTripTimeMillis += stats.inputChannelStats.roundTripTimeMillis | 0;\n }\n if (stats.outputChannelStats) {\n audioStatus.outputChannelStats.statsCount++;\n audioStatus.outputChannelStats.packetsCount += stats.outputChannelStats.packetsCount | 0;\n audioStatus.outputChannelStats.packetsLost += stats.outputChannelStats.packetsLost | 0;\n audioStatus.outputChannelStats.jitterBufferMillis += stats.outputChannelStats.jitterBufferMillis | 0;\n audioStatus.outputChannelStats.roundTripTimeMillis += stats.outputChannelStats.roundTripTimeMillis | 0;\n }\n });\n }\n}","/*\n * Copyright (c) 2021, salesforce.com, inc.\n * All rights reserved.\n * SPDX-License-Identifier: BSD-3-Clause\n * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause\n */\n\n/* eslint-disable no-unused-vars */\nimport constants from './constants.js';\nimport { CONNECTOR_CONFIG_EXPOSED_FIELDS, CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH } from './constants.js';\nimport { Validator, GenericResult, InitResult, CallResult, HangupResult, HoldToggleResult, PhoneContactsResult, MuteToggleResult,\n ParticipantResult, RecordingToggleResult, AgentConfigResult, ActiveCallsResult, SignedRecordingUrlResult, LogoutResult,\n VendorConnector, Contact, AudioStats, SuperviseCallResult, SupervisorHangupResult, AgentStatusInfo, SupervisedCallInfo, CapabilitiesResult, AgentVendorStatusInfo, StateChangeResult} from './types';\nimport { enableMos, getMOS, initAudioStats, updateAudioStats } from './mosUtil';\nimport { log, getLogs } from './logger';\n\nlet channelPort;\nlet vendorConnector;\nlet agentAvailable;\nlet isSupervisorConnected;\n\n/**\n * Gets the error type from the error object\n * @param {object} e Error object representing the error\n */\nfunction getErrorType(e) {\n return e && e.type ? e.type : e;\n}\n\n/**\n * Sanitizes the object by removing any PII data\n * @param {object} payload\n */\nfunction sanitizePayload(payload) {\n if (payload) {\n if (typeof (payload) === 'function') {\n // remove functions from the payload, because they cannot be copied by the postMessage function\n return;\n } else if (typeof (payload) === 'object') {\n const isArray = Array.isArray(payload);\n const sanitizedPayload = isArray ? [] : {};\n\n if (isArray) {\n payload.forEach(element => {\n sanitizedPayload.push(sanitizePayload(element));\n });\n } else {\n for (const property in payload) {\n if (property !== 'phoneNumber' &&\n property !== 'number' &&\n property !== 'name' &&\n property !== 'callAttributes') {\n sanitizedPayload[property] = sanitizePayload(payload[property]);\n }\n }\n }\n return sanitizedPayload;\n }\n }\n return payload;\n}\n\n/**\n * Gets the error message from the error object\n * @param {object} e Error object representing the error\n */\nfunction getErrorMessage(e) {\n return e && e.message ? e.message : e;\n}\n/** \n * Dispatch a telephony event log to Salesforce\n * @param {String} eventType event type, i.e. constants.EVENT_TYPE.CALL_STARTED \n * @param {Object} payload event payload\n * @param {Boolean} isError error scenario\n */\nfunction dispatchEventLog(eventType, payload, isError) {\n const sanitizedPayload = sanitizePayload(payload);\n const logLevel = isError ? constants.LOG_LEVEL.ERROR : constants.LOG_LEVEL.INFO;\n log({eventType, payload}, logLevel, constants.LOG_SOURCE.SYSTEM);\n\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.LOG,\n payload: { eventType, payload: sanitizedPayload, isError }\n });\n}\n/** \n * Dispatch a telephony event to Salesforce\n * @param {String} eventType event type, i.e. constants.EVENT_TYPE.CALL_STARTED\n * @param {Object} payload event payload\n * @param {Boolean} registerLog optional argument to not register the event\n */\nfunction dispatchEvent(eventType, payload, registerLog = true) {\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.TELEPHONY_EVENT_DISPATCHED,\n payload: { telephonyEventType: eventType, telephonyEventPayload: payload }\n });\n if (registerLog) {\n dispatchEventLog(eventType, payload, false);\n }\n}\n\n/**\n * Dispatch a telephony integration error to Salesforce\n * @param {string} errorType Error Type, ex: constants.ErrorType.MICROPHONE_NOT_SHARED\n * @param {object} error Error object representing the error\n * @param {string} eventType The event that caused this error, ex: constants.MESSAGE_TYPE.ACCEPT_CALL\n */\nfunction dispatchError(errorType, error, eventType) {\n // eslint-disable-next-line no-console\n console.error(`SCV dispatched error ${errorType} for eventType ${eventType}`, error);\n dispatchEvent(constants.EVENT_TYPE.ERROR, { message: constants.ERROR_TYPE[errorType] }, false);\n dispatchEventLog(eventType, { errorType, error }, true);\n}\n\nfunction dispatchInfo(eventType, payload) {\n // eslint-disable-next-line no-console\n console.info(`SCV info message dispatched for eventType ${eventType} with payload ${JSON.stringify(payload)}`);\n dispatchEvent(constants.EVENT_TYPE.INFO, { message: constants.INFO_TYPE[eventType] }, false);\n dispatchEventLog(eventType, payload, false);\n}\n\n/** \n * Notify Salesforce that the connector is ready\n */\nasync function setConnectorReady() {\n try {\n const agentConfigResult = await vendorConnector.getAgentConfig();\n const capabilitiesResult = await vendorConnector.getCapabilities();\n Validator.validateClassObject(agentConfigResult, AgentConfigResult);\n Validator.validateClassObject(capabilitiesResult, CapabilitiesResult);\n if (capabilitiesResult.supportsMos) {\n enableMos();\n }\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n const type = constants.MESSAGE_TYPE.CONNECTOR_READY;\n const payload = {\n agentConfig: {\n\n [constants.AGENT_CONFIG_TYPE.PHONES] : agentConfigResult.phones,\n [constants.AGENT_CONFIG_TYPE.SELECTED_PHONE] : agentConfigResult.selectedPhone\n },\n capabilities: {\n [constants.CAPABILITIES_TYPE.MUTE] : capabilitiesResult.hasMute,\n [constants.CAPABILITIES_TYPE.RECORD] : capabilitiesResult.hasRecord,\n [constants.CAPABILITIES_TYPE.MERGE] : capabilitiesResult.hasMerge,\n [constants.CAPABILITIES_TYPE.SWAP] : capabilitiesResult.hasSwap,\n [constants.CAPABILITIES_TYPE.SIGNED_RECORDING_URL] : capabilitiesResult.hasSignedRecordingUrl,\n [constants.CAPABILITIES_TYPE.DEBUG_ENABLED] : capabilitiesResult.debugEnabled,\n [constants.CAPABILITIES_TYPE.CONTACT_SEARCH] : capabilitiesResult.hasContactSearch,\n [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY] : capabilitiesResult.hasAgentAvailability,\n [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_QUEUE_WAIT_TIME] : capabilitiesResult.hasQueueWaitTime,\n [constants.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN] : capabilitiesResult.hasSupervisorListenIn,\n [constants.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN] : capabilitiesResult.hasSupervisorBargeIn,\n [constants.CAPABILITIES_TYPE.MOS] : capabilitiesResult.supportsMos,\n [constants.CAPABILITIES_TYPE.BLIND_TRANSFER] : capabilitiesResult.hasBlindTransfer,\n [constants.CAPABILITIES_TYPE.TRANSFER_TO_OMNI_FLOW] : capabilitiesResult.hasTransferToOmniFlow,\n [constants.CAPABILITIES_TYPE.PENDING_STATUS_CHANGE] : capabilitiesResult.hasPendingStatusChange\n },\n callInProgress: activeCalls.length > 0 ? activeCalls[0] : null\n }\n channelPort.postMessage({\n type,\n payload\n });\n dispatchEventLog(type, payload, false);\n } catch (e) {\n // Post CONNECTOR_READY even if getAgentConfig is not implemented\n channelPort.postMessage({\n type: constants.MESSAGE_TYPE.CONNECTOR_READY,\n payload: {}\n });\n dispatchEventLog(constants.MESSAGE_TYPE.CONNECTOR_READY, {}, false);\n }\n}\n\n//TODO: 230 we should convert call object to PhoneCall object\nasync function channelMessageHandler(message) { \n const eventType = message.data.type;\n if (eventType !== constants.MESSAGE_TYPE.LOG) {\n dispatchEventLog(eventType, message.data, false);\n }\n switch (eventType) {\n case constants.MESSAGE_TYPE.ACCEPT_CALL:\n try {\n if (message.data.call && message.data.call.callType &&\n message.data.call.callType.toLowerCase() === constants.CALL_TYPE.OUTBOUND.toLowerCase()) {\n return;\n }\n initAudioStats();\n if (isSupervisorConnected) {\n const hangupPayload = await vendorConnector.supervisorDisconnect();\n Validator.validateClassObject(hangupPayload, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, hangupPayload.calls);\n }\n let payload = await vendorConnector.acceptCall(message.data.call);\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(call.callType.toLowerCase() === constants.CALL_TYPE.CALLBACK.toLowerCase() ?\n constants.EVENT_TYPE.CALL_STARTED : constants.EVENT_TYPE.CALL_CONNECTED, call);\n } catch (e) {\n isSupervisorConnected = false;\n dispatchInfo(constants.INFO_TYPE.CAN_NOT_ACCEPT_THE_CALL, {messagetype: constants.MESSAGE_TYPE.ACCEPT_CALL, additionalInfo: e} )\n }\n break;\n case constants.MESSAGE_TYPE.DECLINE_CALL:\n try {\n const payload = await vendorConnector.declineCall(message.data.call);\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(constants.EVENT_TYPE.HANGUP, call);\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_DECLINE_THE_CALL, e, constants.MESSAGE_TYPE.DECLINE_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.END_CALL:\n try {\n const payload = await vendorConnector.endCall(message.data.call, message.data.agentStatus);\n Validator.validateClassObject(payload, HangupResult);\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n const { calls } = payload;\n // after end calls from vendor side, if no more active calls, fire HANGUP, otherwise, fire PARTICIPANT_REMOVED\n if (activeCalls.length === 0) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, calls);\n } else {\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, calls.length > 0 && calls[0]);\n }\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, e, constants.MESSAGE_TYPE.END_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.MUTE:\n try {\n const payload = await vendorConnector.mute();\n publishEvent({eventType: constants.EVENT_TYPE.MUTE_TOGGLE, payload});\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_MUTE_CALL, e, constants.MESSAGE_TYPE.MUTE);\n }\n break;\n case constants.MESSAGE_TYPE.UNMUTE:\n try {\n const payload = await vendorConnector.unmute();\n publishEvent({eventType: constants.EVENT_TYPE.MUTE_TOGGLE, payload});\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_UNMUTE_CALL, e, constants.MESSAGE_TYPE.UNMUTE);\n }\n break;\n case constants.MESSAGE_TYPE.HOLD:\n try {\n const payload = await vendorConnector.hold(message.data.call);\n publishEvent({eventType: constants.EVENT_TYPE.HOLD_TOGGLE, payload});\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARTICIPANT:\n dispatchError(constants.ERROR_TYPE.INVALID_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.HOLD);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_HOLD_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.HOLD);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.RESUME:\n try {\n const payload = await vendorConnector.resume(message.data.call);\n publishEvent({eventType: constants.EVENT_TYPE.HOLD_TOGGLE, payload});\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARTICIPANT:\n dispatchError(constants.ERROR_TYPE.INVALID_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.RESUME);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_RESUME_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.RESUME);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.SET_AGENT_STATUS:\n try {\n const statusInfo = message.data.statusInfo || {};\n const enqueueNextState = message.data.enqueueNextState || false;\n const payload = await vendorConnector.setAgentStatus(message.data.agentStatus, statusInfo, enqueueNextState);\n Validator.validateClassObject(payload, GenericResult);\n const { success } = payload;\n dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success });\n } catch (e) {\n if (message.data.statusInfo) {\n dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success: false });\n }\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_AGENT_STATUS:\n dispatchError(constants.ERROR_TYPE.INVALID_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_STATUS);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_STATUS);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.GET_AGENT_STATUS:\n try {\n const payload = await vendorConnector.getAgentStatus();\n Validator.validateClassObject(payload, AgentVendorStatusInfo);\n dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS_RESULT, payload);\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.GET_AGENT_STATUS);\n }\n break;\n case constants.MESSAGE_TYPE.DIAL:\n try {\n const payload = await vendorConnector.dial(new Contact(message.data.contact));\n Validator.validateClassObject(payload, CallResult);\n const { call } = payload;\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, call);\n } catch (e) {\n dispatchEvent(constants.EVENT_TYPE.CALL_FAILED);\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_DESTINATION:\n dispatchError(constants.ERROR_TYPE.INVALID_DESTINATION, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n case constants.ERROR_TYPE.GENERIC_ERROR:\n dispatchError(constants.ERROR_TYPE.GENERIC_ERROR, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, getErrorMessage(e), constants.MESSAGE_TYPE.DIAL);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.SEND_DIGITS:\n try {\n await vendorConnector.sendDigits(message.data.digits);\n } catch (e) {\n dispatchEventLog(constants.MESSAGE_TYPE.SEND_DIGITS, message.data.digits, true);\n }\n break;\n case constants.MESSAGE_TYPE.GET_PHONE_CONTACTS:\n try {\n const payload = await vendorConnector.getPhoneContacts(message.data.filter);\n Validator.validateClassObject(payload, PhoneContactsResult);\n const contacts = payload.contacts.map((contact) => {\n return {\n id: contact.id,\n type: contact.type,\n name: contact.name,\n phoneNumber: contact.phoneNumber,\n prefix: contact.prefix,\n extension: contact.extension,\n endpointARN: contact.endpointARN,\n queue: contact.queue,\n availability: contact.availability,\n queueWaitTime: contact.queueWaitTime,\n recordId: contact.recordId,\n description: contact.description\n };\n });\n dispatchEvent(constants.EVENT_TYPE.PHONE_CONTACTS, {\n contacts, contactTypes: payload.contactTypes\n });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_PHONE_CONTACTS, e, constants.MESSAGE_TYPE.GET_PHONE_CONTACTS);\n }\n break;\n case constants.MESSAGE_TYPE.SWAP_PARTICIPANTS:\n try {\n // TODO: Create PhoneCall from call1.callId & call2.callId\n // TODO: rename to call1 and call2\n const payload = await vendorConnector.swap(message.data.callToHold, message.data.callToResume);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANTS_SWAPPED, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, e, constants.MESSAGE_TYPE.SWAP_PARTICIPANTS);\n }\n break;\n case constants.MESSAGE_TYPE.CONFERENCE:\n try {\n const payload = await vendorConnector.conference(message.data.calls);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONFERENCE, e, constants.MESSAGE_TYPE.CONFERENCE);\n }\n break;\n case constants.MESSAGE_TYPE.ADD_PARTICIPANT:\n try {\n const payload = await vendorConnector.addParticipant(new Contact(message.data.contact), message.data.call, message.data.isBlindTransfer);\n publishEvent({ eventType: constants.EVENT_TYPE.PARTICIPANT_ADDED, payload });\n if (message.data.isBlindTransfer) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, message.data.call);\n }\n } catch (e) {\n // TODO: Can we avoid passing in reason field\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, {\n reason: constants.EVENT_TYPE.ERROR.toLowerCase()\n });\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_DESTINATION:\n dispatchError(constants.ERROR_TYPE.INVALID_DESTINATION, getErrorMessage(e), constants.MESSAGE_TYPE.ADD_PARTICIPANT);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, getErrorMessage(e), constants.MESSAGE_TYPE.ADD_PARTICIPANT);\n break;\n }\n }\n break;\n case constants.MESSAGE_TYPE.PAUSE_RECORDING:\n try {\n const payload = await vendorConnector.pauseRecording(message.data.call);\n publishEvent({ eventType: constants.EVENT_TYPE.RECORDING_TOGGLE, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_PAUSE_RECORDING, e, constants.MESSAGE_TYPE.PAUSE_RECORDING);\n }\n break;\n case constants.MESSAGE_TYPE.RESUME_RECORDING:\n try {\n const payload = await vendorConnector.resumeRecording(message.data.call);\n publishEvent({ eventType: constants.EVENT_TYPE.RECORDING_TOGGLE, payload });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_RESUME_RECORDING, e, constants.MESSAGE_TYPE.RESUME_RECORDING);\n }\n break;\n case constants.MESSAGE_TYPE.LOGOUT:\n try {\n const payload = await vendorConnector.logout();\n Validator.validateClassObject(payload, LogoutResult);\n const { success, loginFrameHeight } = payload;\n dispatchEvent(constants.EVENT_TYPE.LOGOUT_RESULT, { success, loginFrameHeight });\n } catch (e) {\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_OUT, e, constants.MESSAGE_TYPE.LOGOUT);\n }\n break;\n case constants.MESSAGE_TYPE.MESSAGE:\n // TODO: Define a return type for handling message\n vendorConnector.handleMessage(message.data.message);\n break;\n case constants.MESSAGE_TYPE.WRAP_UP_CALL:\n vendorConnector.wrapUpCall(message.data.call);\n break;\n case constants.MESSAGE_TYPE.AGENT_AVAILABLE: {\n agentAvailable = message.data.isAvailable;\n if (agentAvailable) {\n const activeCallsResult = await vendorConnector.getActiveCalls();\n Validator.validateClassObject(activeCallsResult, ActiveCallsResult);\n const activeCalls = activeCallsResult.activeCalls;\n for (const callId in activeCalls) {\n const call = activeCalls[callId];\n const shouldReplay = call.callInfo ? call.callInfo.isReplayable : true;\n const isSupervisorCall = call.callAttributes && call.callAttributes.participantType === constants.PARTICIPANT_TYPE.SUPERVISOR;\n const hasSupervisorBargedIn = isSupervisorCall && call.callAttributes && call.callAttributes.hasSupervisorBargedIn;\n if (shouldReplay) {\n call.isReplayedCall = true;\n switch(call.state) {\n case constants.CALL_STATE.CONNECTED:\n if (isSupervisorCall) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, call);\n if (hasSupervisorBargedIn) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, call);\n }\n break;\n }\n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, call);\n break;\n case constants.CALL_STATE.RINGING:\n if (isSupervisorCall) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, call);\n break;\n }\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, call);\n break;\n case constants.CALL_STATE.TRANSFERRING:\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_ADDED, {\n phoneNumber: call.contact.phoneNumber,\n callInfo: call.callInfo,\n initialCallHasEnded: call.callAttributes.initialCallHasEnded,\n callId: call.callId\n });\n break;\n case constants.CALL_STATE.TRANSFERRED:\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_CONNECTED, {\n phoneNumber: call.contact.phoneNumber,\n callInfo: call.callInfo,\n initialCallHasEnded: call.callAttributes.initialCallHasEnded,\n callId: call.callId\n });\n break;\n default:\n break;\n }\n }\n }\n }\n }\n break;\n case constants.MESSAGE_TYPE.SET_AGENT_CONFIG:\n try {\n const result = await vendorConnector.setAgentConfig(message.data.config);\n Validator.validateClassObject(result, GenericResult);\n dispatchEvent(constants.EVENT_TYPE.AGENT_CONFIG_UPDATED, result);\n } catch (e){\n dispatchError(getErrorType(e) === constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER ? constants.ERROR_TYPE.CAN_NOT_UPDATE_PHONE_NUMBER : constants.ERROR_TYPE.CAN_NOT_SET_AGENT_CONFIG , getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_CONFIG);\n }\n break;\n case constants.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL:\n try {\n const { recordingUrl, vendorCallKey, callId } = message.data;\n const result = await vendorConnector.getSignedRecordingUrl(recordingUrl, vendorCallKey, callId);\n Validator.validateClassObject(result, SignedRecordingUrlResult);\n dispatchEvent(constants.EVENT_TYPE.SIGNED_RECORDING_URL, result);\n } catch (e) {\n // In case of an error, we want to show an error message in the recording player\n const signedRecordingUrlResult = new SignedRecordingUrlResult({\n success: false\n });\n dispatchEvent(constants.EVENT_TYPE.SIGNED_RECORDING_URL, signedRecordingUrlResult, false);\n dispatchEventLog(constants.MESSAGE_TYPE.GET_SIGNED_RECORDING_URL, signedRecordingUrlResult, true);\n }\n break;\n case constants.MESSAGE_TYPE.DOWNLOAD_VENDOR_LOGS:\n vendorConnector.downloadLogs(getLogs());\n break;\n case constants.MESSAGE_TYPE.LOG: {\n const { logLevel, logMessage, payload } = message.data;\n vendorConnector.logMessageToVendor(logLevel, logMessage, payload);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISE_CALL:\n try {\n isSupervisorConnected = true;\n const result = await vendorConnector.superviseCall(message.data.call);\n Validator.validateClassObject(result, SuperviseCallResult);\n const agentConfigResult = await vendorConnector.getAgentConfig();\n if(agentConfigResult.selectedPhone.type === constants.PHONE_TYPE.SOFT_PHONE) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, result.call);\n } else {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, result.call);\n }\n } catch (e){\n isSupervisorConnected = false;\n dispatchError(constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, e, constants.MESSAGE_TYPE.SUPERVISE_CALL);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISOR_DISCONNECT:\n try {\n const result = await vendorConnector.supervisorDisconnect(message.data.call);\n Validator.validateClassObject(result, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, result.calls);\n } catch (e){\n dispatchError(constants.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR, e, constants.MESSAGE_TYPE.SUPERVISOR_DISCONNECT);\n }\n break;\n case constants.MESSAGE_TYPE.SUPERVISOR_BARGE_IN:\n try {\n const result = await vendorConnector.supervisorBargeIn(message.data.call);\n Validator.validateClassObject(result, SuperviseCallResult);\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, result.call );\n } catch (e){\n dispatchError(constants.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR, e, constants.MESSAGE_TYPE.SUPERVISOR_BARGE_IN);\n }\n break;\n default:\n break;\n }\n}\n\n\nasync function windowMessageHandler(message) {\n switch (message.data.type) {\n case constants.MESSAGE_TYPE.SETUP_CONNECTOR: {\n const sfDomain = /^https:\\/\\/[\\w-.]+(lightning\\.[\\w]+\\.soma\\.force\\.com|\\.lightning\\.force\\.com|\\.lightning\\.pc-rnd\\.force\\.com|\\.stm\\.force\\.com|\\.salesforce\\.com|\\.my\\.salesforce-sites\\.com|\\.lightning\\.localhost\\.[\\w]+\\.force.com)$/;\n const originUrl = new URL(message.origin);\n const url = originUrl.protocol + '//' + originUrl.hostname;\n\n if (sfDomain.test(url)) {\n channelPort = message.ports[0];\n channelPort.onmessage = channelMessageHandler;\n dispatchEventLog(constants.MESSAGE_TYPE.SETUP_CONNECTOR, exposedConnectorConfig(message.data.connectorConfig), false);\n try {\n const payload = await vendorConnector.init(message.data.connectorConfig);\n Validator.validateClassObject(payload, InitResult);\n if (payload.showLogin) {\n dispatchEvent(constants.EVENT_TYPE.SHOW_LOGIN, {\n loginFrameHeight: payload.loginFrameHeight\n });\n } else {\n setConnectorReady();\n }\n } catch (e) {\n switch(getErrorType(e)) {\n case constants.ERROR_TYPE.INVALID_PARAMS:\n dispatchError(constants.ERROR_TYPE.INVALID_PARAMS, getErrorMessage(e), constants.MESSAGE_TYPE.SETUP_CONNECTOR);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_IN, getErrorMessage(e), constants.MESSAGE_TYPE.SETUP_CONNECTOR);\n break;\n }\n }\n }\n window.removeEventListener('message', windowMessageHandler);\n }\n break;\n default:\n break;\n }\n}\n\nfunction exposedConnectorConfig(payload) {\n payload = payload || {};\n let obj = {};\n //properties that are equal to key\n CONNECTOR_CONFIG_EXPOSED_FIELDS.forEach(prop => {\n if (payload.hasOwnProperty(prop)) {\n obj[prop] = payload[prop];\n }\n });\n //properties that start with key\n CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH.forEach(prop => {\n Object.keys(payload).forEach(key => {\n if (key.startsWith(prop)) {\n obj[key] = payload[key];\n }\n });\n });\n\n return obj;\n}\n\nfunction validatePayload(payload, payloadType, errorType, eventType) {\n try {\n Validator.validateClassObject(payload, payloadType);\n return true;\n } catch (e) {\n if (errorType) {\n dispatchError(errorType, e, eventType);\n }\n return false;\n }\n}\n\n/*========================== Exported Functions ==========================*/\n/**\n * Initialize a vendor connector\n * @param {VendorConnector} connector\n */\nexport function initializeConnector(connector) {\n vendorConnector = connector;\n window.addEventListener('message', windowMessageHandler);\n}\n\n/**\n * Publish an event or error log to Salesforce\n * @param {object} param\n * @param {string} param.eventType Any event type to be logged\n * @param {object} param.payload Any payload for the log that needs to be logged\n * @param {boolean} param.isError\n */\nexport function publishLog({ eventType, payload, isError }) {\n dispatchEventLog(eventType, payload, isError);\n}\n\n/**\n * Publish a telephony error to Salesforce\n * @param {object} param\n * @param {(\"LOGIN_RESULT\"|\"LOGOUT_RESULT\"|\"CALL_STARTED\"|\"QUEUED_CALL_STARTED\"|\"CALL_CONNECTED\"|\"HANGUP\"|\"PARTICIPANT_CONNECTED\"|\"PARTICIPANT_ADDED\"|\"PARTICIPANTS_SWAPPED\"|\"PARTICIPANTS_CONFERENCED\"|\"MESSAGE\"|\"MUTE_TOGGLE\"|\"HOLD_TOGGLE\"|\"RECORDING_TOGGLE\"|\"AGENT_ERROR\"|\"SOFTPHONE_ERROR\")} param.eventType Event type to publish.\n * @param {object} param.error Error object representing the error\n */\nexport function publishError({ eventType, error }) {\n switch(eventType) {\n case constants.EVENT_TYPE.LOGIN_RESULT:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_IN, error, constants.EVENT_TYPE.LOGIN_RESULT);\n break;\n case constants.EVENT_TYPE.LOGOUT_RESULT:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_LOG_OUT, error, constants.EVENT_TYPE.LOGOUT_RESULT);\n break;\n case constants.EVENT_TYPE.CALL_STARTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.CALL_STARTED);\n break;\n case constants.EVENT_TYPE.QUEUED_CALL_STARTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.QUEUED_CALL_STARTED);\n break;\n case constants.EVENT_TYPE.CALL_CONNECTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, error, constants.EVENT_TYPE.CALL_CONNECTED);\n break;\n case constants.EVENT_TYPE.HANGUP: \n dispatchError(constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, error, constants.EVENT_TYPE.HANGUP);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_ADDED:\n dispatchError(getErrorType(error) === constants.ERROR_TYPE.INVALID_PARTICIPANT ? constants.ERROR_TYPE.INVALID_PARTICIPANT : constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_ADDED);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_CONNECTED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_CONNECTED);\n break;\n case constants.EVENT_TYPE.PARTICIPANT_REMOVED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT, error, constants.EVENT_TYPE.PARTICIPANT_REMOVED); \n break;\n case constants.EVENT_TYPE.MUTE_TOGGLE:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE, error, constants.EVENT_TYPE.MUTE_TOGGLE);\n break;\n case constants.EVENT_TYPE.HOLD_TOGGLE: \n dispatchError(getErrorType(error) === constants.ERROR_TYPE.INVALID_PARTICIPANT ? constants.ERROR_TYPE.INVALID_PARTICIPANT : constants.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD, error, constants.EVENT_TYPE.HOLD_TOGGLE);\n break;\n case constants.EVENT_TYPE.RECORDING_TOGGLE:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD, error, constants.EVENT_TYPE.RECORDING_TOGGLE);\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_SWAPPED: \n dispatchError(constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, error, constants.EVENT_TYPE.PARTICIPANTS_SWAPPED);\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED:\n dispatchError(constants.ERROR_TYPE.CAN_NOT_CONFERENCE, error, constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED);\n break;\n case constants.EVENT_TYPE.AGENT_ERROR:\n dispatchError(constants.ERROR_TYPE.AGENT_ERROR, error, constants.EVENT_TYPE.AGENT_ERROR);\n break;\n case constants.EVENT_TYPE.SOFTPHONE_ERROR:\n switch(getErrorType(error)) {\n case constants.ERROR_TYPE.UNSUPPORTED_BROWSER:\n dispatchError(constants.ERROR_TYPE.UNSUPPORTED_BROWSER, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n break;\n case constants.ERROR_TYPE.MICROPHONE_NOT_SHARED:\n dispatchError(constants.ERROR_TYPE.MICROPHONE_NOT_SHARED, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n break;\n default:\n dispatchError(constants.ERROR_TYPE.GENERIC_ERROR, error, constants.EVENT_TYPE.SOFTPHONE_ERROR);\n }\n break;\n default:\n console.error('Unhandled error scenario with arguments ', arguments);\n }\n}\n\n/**\n * Publish an event to Sfdc. The event payload will be verified to be the correct type before being published. \n * @param {object} param\n * @param {(\"LOGIN_RESULT\"|\"LOGOUT_RESULT\"|\"CALL_STARTED\"|\"QUEUED_CALL_STARTED\"|\"CALL_CONNECTED\"|\"HANGUP\"|\"PARTICIPANT_CONNECTED\"|\"PARTICIPANT_ADDED\"|\"PARTICIPANTS_SWAPPED\"|\"PARTICIPANTS_CONFERENCED\"|\"MESSAGE\"|\"MUTE_TOGGLE\"|\"HOLD_TOGGLE\"|\"RECORDING_TOGGLE\")} param.eventType Event type to publish\n * @param {object} param.payload Payload for the event. Must to be an object of the payload class associated with the EVENT_TYPE else the event is NOT dispatched\n * @param {boolean} param.registerLog Boolean to opt out of registering logs for events\n * LOGIN_RESULT - GenericResult\n * LOGOUT_RESULT - LogoutResult\n * CALL_STARTED - CallResult\n * QUEUED_CALL_STARTED - CallResult\n * CALL_CONNECTED - CallResult\n * HANGUP - CallResult\n * PARTICIPANT_CONNECTED - ParticipantResult\n * PARTICIPANT_ADDED - ParticipantResult\n * PARTICIPANTS_SWAPPED - HoldToggleResult\n * PARTICIPANTS_CONFERENCED - HoldToggleResult\n * MESSAGE - object\n * MUTE_TOGGLE - MuteToggleResult\n * HOLD_TOGGLE - HoldToggleResult\n * RECORDING_TOGGLE - RecordingToggleResult\n */\nexport async function publishEvent({ eventType, payload, registerLog = true }) {\n switch(eventType) {\n case constants.EVENT_TYPE.LOGIN_RESULT: {\n if (validatePayload(payload, GenericResult, constants.ERROR_TYPE.CAN_NOT_LOG_IN, constants.EVENT_TYPE.LOGIN_RESULT)) {\n dispatchEvent(constants.EVENT_TYPE.LOGIN_RESULT, payload, registerLog);\n if (payload.success) {\n setConnectorReady();\n }\n }\n break;\n }\n case constants.EVENT_TYPE.LOGOUT_RESULT:\n if (validatePayload(payload, LogoutResult, constants.ERROR_TYPE.CAN_NOT_LOG_OUT, constants.EVENT_TYPE.LOGOUT_RESULT)) {\n dispatchEvent(constants.EVENT_TYPE.LOGOUT_RESULT, {\n success: payload.success,\n loginFrameHeight: payload.loginFrameHeight\n }, registerLog);\n }\n break;\n case constants.EVENT_TYPE.CALL_STARTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.CALL_STARTED)) {\n dispatchEvent(constants.EVENT_TYPE.CALL_STARTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.QUEUED_CALL_STARTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.QUEUED_CALL_STARTED)) {\n dispatchEvent(constants.EVENT_TYPE.QUEUED_CALL_STARTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.CALL_CONNECTED:\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_START_THE_CALL, constants.EVENT_TYPE.CALL_CONNECTED)) {\n initAudioStats();\n if (isSupervisorConnected) {\n const hangupPayload = await vendorConnector.supervisorDisconnect();\n Validator.validateClassObject(hangupPayload, SupervisorHangupResult);\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, hangupPayload, registerLog);\n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, payload.call, registerLog);\n break;\n } \n dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, payload.call, registerLog);\n }\n break;\n case constants.EVENT_TYPE.HANGUP: {\n if (validatePayload(payload, HangupResult, constants.ERROR_TYPE.CAN_NOT_END_THE_CALL, constants.EVENT_TYPE.HANGUP)) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, payload.calls, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_ADDED: {\n if (validatePayload(payload, ParticipantResult, constants.ERROR_TYPE.CAN_NOT_ADD_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_ADDED)) {\n const { initialCallHasEnded, callInfo, phoneNumber, callId } = payload;\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_ADDED, {\n initialCallHasEnded,\n callInfo,\n phoneNumber,\n callId\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_CONNECTED: {\n if (validatePayload(payload, ParticipantResult, constants.ERROR_TYPE.CAN_NOT_CONNECT_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_CONNECTED)) {\n const { initialCallHasEnded, callInfo, phoneNumber, callId } = payload;\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_CONNECTED, {\n initialCallHasEnded,\n callInfo,\n phoneNumber,\n callId\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANT_REMOVED: {\n // TODO: The logic here needs to be modified. Ideally firing CallResult with \n // correct participantType should do the trick but we are firing PARTICIPANT_CONNECTED because of a bug W-8601645\n // Once the bug is fixed, this code needs to be updated\n if (validatePayload(payload, CallResult, constants.ERROR_TYPE.CAN_NOT_HANGUP_PARTICIPANT, constants.EVENT_TYPE.PARTICIPANT_REMOVED)) { \n const { call } = payload;\n const activeCallsResult = await vendorConnector.getActiveCalls();\n if (validatePayload(activeCallsResult, ActiveCallsResult)) {\n // when no more active calls, fire HANGUP\n const activeCalls = activeCallsResult.activeCalls;\n if (activeCalls.length === 0) {\n dispatchEvent(constants.EVENT_TYPE.HANGUP, call, registerLog);\n } else if (call && call.callAttributes && call.callAttributes.participantType === constants.PARTICIPANT_TYPE.INITIAL_CALLER) {\n // when there is still transfer call, based on the state of the transfer call, fire PARTICIPANT_ADDED or PARTICIPANT_CONNECTED\n const transferCall = Object.values(activeCalls).filter((obj) => obj['callType'] === constants.CALL_TYPE.ADD_PARTICIPANT).pop();\n const event = transferCall.state === constants.CALL_STATE.TRANSFERRING ? constants.EVENT_TYPE.PARTICIPANT_ADDED : constants.EVENT_TYPE.PARTICIPANT_CONNECTED;\n dispatchEvent(event, {\n initialCallHasEnded : true\n })\n } else {\n dispatchEvent(constants.EVENT_TYPE.PARTICIPANT_REMOVED, {\n reason: call? call.reason : null\n }, registerLog);\n }\n }\n }\n break;\n }\n case constants.EVENT_TYPE.MESSAGE:\n dispatchEvent(constants.EVENT_TYPE.MESSAGE, payload, registerLog);\n break;\n // TODO: Add validations for the ACW & Wrap up ended\n case constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED:\n dispatchEvent(constants.EVENT_TYPE.AFTER_CALL_WORK_STARTED, payload, registerLog);\n break;\n case constants.EVENT_TYPE.WRAP_UP_ENDED:\n dispatchEvent(constants.EVENT_TYPE.WRAP_UP_ENDED, payload, registerLog);\n break;\n /* This is only added to aid in connector development */\n case constants.EVENT_TYPE.REMOTE_CONTROLLER:\n channelMessageHandler(payload);\n break;\n case constants.EVENT_TYPE.MUTE_TOGGLE:\n if (validatePayload(payload, MuteToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_MUTE, constants.EVENT_TYPE.MUTE_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.MUTE_TOGGLE, payload, registerLog);\n }\n break;\n case constants.EVENT_TYPE.HOLD_TOGGLE: {\n const { isThirdPartyOnHold, isCustomerOnHold, calls} = payload;\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_HOLD, constants.EVENT_TYPE.HOLD_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold,\n calls\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.RECORDING_TOGGLE: {\n const { isRecordingPaused,\n contactId,\n initialContactId,\n instanceId,\n region\n } = payload;\n if (validatePayload(payload, RecordingToggleResult, constants.ERROR_TYPE.CAN_NOT_TOGGLE_RECORD, constants.EVENT_TYPE.RECORDING_TOGGLE)) {\n dispatchEvent(constants.EVENT_TYPE.RECORDING_TOGGLE, {\n isRecordingPaused,\n contactId,\n initialContactId,\n instanceId,\n region\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.PARTICIPANTS_SWAPPED: {\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_SWAP_PARTICIPANTS, constants.EVENT_TYPE.PARTICIPANTS_SWAPPED)) {\n const { isThirdPartyOnHold, isCustomerOnHold, calls } = payload;\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold,\n calls\n }, registerLog);\n }\n }\n break;\n case constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED: {\n if (validatePayload(payload, HoldToggleResult, constants.ERROR_TYPE.CAN_NOT_CONFERENCE, constants.EVENT_TYPE.PARTICIPANTS_CONFERENCED)) {\n const { isThirdPartyOnHold, isCustomerOnHold } = payload;\n dispatchEvent(constants.EVENT_TYPE.HOLD_TOGGLE, {\n isThirdPartyOnHold,\n isCustomerOnHold\n }, registerLog);\n }\n break;\n }\n case constants.EVENT_TYPE.UPDATE_AUDIO_STATS: {\n if (validatePayload(payload, AudioStats)) {\n if (payload.stats) {\n updateAudioStats(payload.stats);\n }\n if (payload.isAudioStatsCompleted && payload.callId) {\n const callId = payload.callId;\n const mos = getMOS();\n dispatchEvent(constants.EVENT_TYPE.UPDATE_AUDIO_STATS_COMPLETED, {callId, mos}, registerLog);\n }\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_BARGED_IN: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_BARGE_IN_SUPERVISOR, constants.EVENT_TYPE.SUPERVISOR_BARGED_IN)) {\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.CALL_BARGED_IN: {\n if (validatePayload(payload, SupervisedCallInfo, constants.ERROR_TYPE.GENERIC_ERROR, constants.EVENT_TYPE.CALL_BARGED_IN)) {\n dispatchEvent(constants.EVENT_TYPE.CALL_BARGED_IN, payload, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED)) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_STARTED, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED: {\n if (validatePayload(payload, SuperviseCallResult, constants.ERROR_TYPE.CAN_NOT_SUPERVISE_CALL, constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED)) {\n isSupervisorConnected = true;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, payload.call, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SUPERVISOR_HANGUP: {\n if (validatePayload(payload, SupervisorHangupResult, constants.ERROR_TYPE.CAN_NOT_DISCONNECT_SUPERVISOR, constants.EVENT_TYPE.SUPERVISOR_HANGUP)) {\n isSupervisorConnected = false;\n dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_HANGUP, payload.calls, registerLog);\n }\n break;\n }\n\n case constants.EVENT_TYPE.SET_AGENT_STATUS: {\n if (validatePayload(payload, AgentStatusInfo, constants.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS, constants.EVENT_TYPE.SET_AGENT_STATUS)) {\n const statusId = payload.statusId;\n dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS, { statusId }, registerLog);\n }\n break;\n }\n\n /**\n * NOTE: SALESFORCE INTERNAL USE ONLY\n */\n case constants.EVENT_TYPE.GET_AGENT_STATUS: {\n if (validatePayload(payload, AgentVendorStatusInfo, constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, constants.EVENT_TYPE.GET_AGENT_STATUS)) {\n dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS, payload);\n }\n break;\n }\n\n /**\n * NOTE: SALESFORCE INTERNAL USE ONLY\n */\n case constants.EVENT_TYPE.STATE_CHANGE: {\n if(validatePayload(payload, StateChangeResult, constants.ERROR_TYPE.INVALID_STATE_CHANGE_RESULT, constants.EVENT_TYPE.STATE_CHANGE)) {\n dispatchEvent(constants.EVENT_TYPE.STATE_CHANGE, payload);\n }\n break;\n }\n }\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/ActiveCallsResult.html b/docs/ActiveCallsResult.html index bdb0604..16b1747 100644 --- a/docs/ActiveCallsResult.html +++ b/docs/ActiveCallsResult.html @@ -276,13 +276,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/AgentConfig.html b/docs/AgentConfig.html index 247a1eb..d544526 100644 --- a/docs/AgentConfig.html +++ b/docs/AgentConfig.html @@ -207,7 +207,7 @@
Properties
Source:
@@ -276,13 +276,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/AgentConfigResult.html b/docs/AgentConfigResult.html index a453db4..654250c 100644 --- a/docs/AgentConfigResult.html +++ b/docs/AgentConfigResult.html @@ -240,7 +240,7 @@
Properties
Source:
@@ -309,13 +309,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/AgentStatusInfo.html b/docs/AgentStatusInfo.html index 76fba0f..18e6f28 100644 --- a/docs/AgentStatusInfo.html +++ b/docs/AgentStatusInfo.html @@ -132,6 +132,42 @@
Properties
+ + + statusType + + + + + +"SALESFORCE_PRESENCE" +| + +"EXTERNAL_PRESENCE" + + + + + + + + + <optional>
+ + + + + + + + + + + Salesforce Presence (Default) or External Presence + + + + statusId @@ -274,7 +310,7 @@
Properties
Source:
@@ -343,13 +379,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/AudioStats.html b/docs/AudioStats.html index e3b61d5..1eaaf71 100644 --- a/docs/AudioStats.html +++ b/docs/AudioStats.html @@ -271,7 +271,7 @@
Properties
Source:
@@ -340,13 +340,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/AudioStatsElement.html b/docs/AudioStatsElement.html index bf9d674..7865ad0 100644 --- a/docs/AudioStatsElement.html +++ b/docs/AudioStatsElement.html @@ -240,7 +240,7 @@
Properties
Source:
@@ -309,13 +309,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/CallInfo.html b/docs/CallInfo.html index 56c779f..a6ee1a1 100644 --- a/docs/CallInfo.html +++ b/docs/CallInfo.html @@ -801,7 +801,7 @@
Properties
Source:
@@ -870,13 +870,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/CallResult.html b/docs/CallResult.html index 01ec000..051e41b 100644 --- a/docs/CallResult.html +++ b/docs/CallResult.html @@ -207,7 +207,7 @@
Properties
Source:
@@ -276,13 +276,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/CapabilitiesResult.html b/docs/CapabilitiesResult.html index cce61f8..1894e6e 100644 --- a/docs/CapabilitiesResult.html +++ b/docs/CapabilitiesResult.html @@ -526,72 +526,6 @@
Properties
- - - - hasBlindTransfer - - - - - -boolean - - - - - - - - - <optional>
- - - - - - - - - - - True if vendor supports transfer to omni flows - - - - - - - hasPendingStatusChange - - - - - -boolean - - - - - - - - - <optional>
- - - - - - - - - - - True if vendor supports Pending Status Change - - - @@ -705,13 +639,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/Contact.html b/docs/Contact.html index 876f65e..c2ff331 100644 --- a/docs/Contact.html +++ b/docs/Contact.html @@ -437,72 +437,6 @@
Properties
- - - - recordId - - - - - -string - - - - - - - - - <optional>
- - - - - - - - - - - Salesforce RecordId - - - - - - - description - - - - - -string - - - - - - - - - <optional>
- - - - - - - - - - - Contact Description - - - @@ -547,7 +481,7 @@
Properties
Source:
@@ -616,13 +550,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/GenericResult.html b/docs/GenericResult.html index b034214..7474a41 100644 --- a/docs/GenericResult.html +++ b/docs/GenericResult.html @@ -195,7 +195,7 @@
Properties
Source:
@@ -264,13 +264,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/HangupResult.html b/docs/HangupResult.html index ddba5e1..c913d81 100644 --- a/docs/HangupResult.html +++ b/docs/HangupResult.html @@ -198,7 +198,7 @@
Properties
Source:
@@ -267,13 +267,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/HoldToggleResult.html b/docs/HoldToggleResult.html index dc5969a..1f6ef0f 100644 --- a/docs/HoldToggleResult.html +++ b/docs/HoldToggleResult.html @@ -269,7 +269,7 @@
Properties
Source:
@@ -338,13 +338,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/InitResult.html b/docs/InitResult.html index 05bd5d4..3a1b173 100644 --- a/docs/InitResult.html +++ b/docs/InitResult.html @@ -240,7 +240,7 @@
Properties
Source:
@@ -309,13 +309,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/LogoutResult.html b/docs/LogoutResult.html index 474273e..07831b7 100644 --- a/docs/LogoutResult.html +++ b/docs/LogoutResult.html @@ -238,7 +238,7 @@
Properties
Source:
@@ -307,13 +307,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/MuteToggleResult.html b/docs/MuteToggleResult.html index d6cd35a..b9c32f8 100644 --- a/docs/MuteToggleResult.html +++ b/docs/MuteToggleResult.html @@ -264,13 +264,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/ParticipantResult.html b/docs/ParticipantResult.html index 25675f6..42057a6 100644 --- a/docs/ParticipantResult.html +++ b/docs/ParticipantResult.html @@ -264,7 +264,7 @@
Properties
Source:
@@ -333,13 +333,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/Phone.html b/docs/Phone.html index 2e88cba..6c11cda 100644 --- a/docs/Phone.html +++ b/docs/Phone.html @@ -307,13 +307,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/PhoneCall.html b/docs/PhoneCall.html index 36d407e..64987d0 100644 --- a/docs/PhoneCall.html +++ b/docs/PhoneCall.html @@ -504,7 +504,7 @@
Properties
Source:
@@ -573,13 +573,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/PhoneCallAttributes.html b/docs/PhoneCallAttributes.html index 3bf2675..6a72507 100644 --- a/docs/PhoneCallAttributes.html +++ b/docs/PhoneCallAttributes.html @@ -291,39 +291,6 @@
Properties
- - - - - - - - hasSupervisorBargedIn - - - - - -boolean - - - - - - - - - <optional>
- - - - - - - - - - @@ -372,7 +339,7 @@
Properties
Source:
@@ -441,13 +408,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/PhoneContactsResult.html b/docs/PhoneContactsResult.html index 6e3cf18..ba8647f 100644 --- a/docs/PhoneContactsResult.html +++ b/docs/PhoneContactsResult.html @@ -159,39 +159,6 @@
Properties
- - - - - - - - contactTypes - - - - - -Array - - - - - - - - - <optional>
- - - - - - - - - - @@ -240,7 +207,7 @@
Properties
Source:
@@ -309,13 +276,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/RecordingToggleResult.html b/docs/RecordingToggleResult.html index 03e5f47..c9116a6 100644 --- a/docs/RecordingToggleResult.html +++ b/docs/RecordingToggleResult.html @@ -337,7 +337,7 @@
Properties
Source:
@@ -406,13 +406,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/SignedRecordingUrlResult.html b/docs/SignedRecordingUrlResult.html index bc8ca44..d1e62da 100644 --- a/docs/SignedRecordingUrlResult.html +++ b/docs/SignedRecordingUrlResult.html @@ -304,7 +304,7 @@
Properties
Source:
@@ -373,13 +373,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/StatsInfo.html b/docs/StatsInfo.html index 2fa06b1..cc8caf3 100644 --- a/docs/StatsInfo.html +++ b/docs/StatsInfo.html @@ -306,7 +306,7 @@
Properties
Source:
@@ -375,13 +375,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/SuperviseCallResult.html b/docs/SuperviseCallResult.html index 670aaed..1ea9d23 100644 --- a/docs/SuperviseCallResult.html +++ b/docs/SuperviseCallResult.html @@ -195,7 +195,7 @@
Properties
Source:
@@ -264,13 +264,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/SupervisedCallInfo.html b/docs/SupervisedCallInfo.html index ba24dbf..9d9862e 100644 --- a/docs/SupervisedCallInfo.html +++ b/docs/SupervisedCallInfo.html @@ -406,7 +406,7 @@
Properties
Source:
@@ -475,13 +475,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/SupervisorHangupResult.html b/docs/SupervisorHangupResult.html index 938975c..be2a249 100644 --- a/docs/SupervisorHangupResult.html +++ b/docs/SupervisorHangupResult.html @@ -198,7 +198,7 @@
Properties
Source:
@@ -267,13 +267,13 @@

Classes


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/VendorConnector.html b/docs/VendorConnector.html index 75d3c69..44bd95a 100644 --- a/docs/VendorConnector.html +++ b/docs/VendorConnector.html @@ -93,7 +93,7 @@

new Ve
Source:
@@ -250,7 +250,7 @@

Parameters:
Source:
@@ -428,7 +428,7 @@
Parameters:
Source:
@@ -583,7 +583,7 @@
Parameters:
Source:
@@ -738,7 +738,7 @@
Parameters:
Source:
@@ -893,7 +893,7 @@
Parameters:
Source:
@@ -947,7 +947,7 @@
Returns:
-

downloadLogs(logs)

+

downloadLogs()

@@ -966,55 +966,6 @@

downloadL -

Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
logs - - -Array.<String> - - - - Array of log messages.
- - @@ -1048,7 +999,7 @@
Parameters:
Source:
@@ -1208,7 +1159,7 @@
Parameters:
Source:
@@ -1314,7 +1265,7 @@

getActi
Source:
@@ -1420,7 +1371,7 @@

getAgen
Source:
@@ -1526,7 +1477,7 @@

getAgen
Source:
@@ -1632,7 +1583,7 @@

getCap
Source:
@@ -1738,7 +1689,7 @@

getPh
Source:
@@ -1939,7 +1890,7 @@

Parameters:
Source:
@@ -2094,7 +2045,7 @@
Parameters:
Source:
@@ -2231,7 +2182,7 @@
Parameters:
Source:
@@ -2386,7 +2337,7 @@
Parameters:
Source:
@@ -2588,7 +2539,7 @@
Parameters:
Source:
@@ -2676,7 +2627,7 @@

logoutSource:
@@ -2782,7 +2733,7 @@

muteSource:
@@ -2937,7 +2888,7 @@
Parameters:
Source:
@@ -3092,7 +3043,7 @@
Parameters:
Source:
@@ -3247,7 +3198,7 @@
Parameters:
Source:
@@ -3402,7 +3353,7 @@
Parameters:
Source:
@@ -3539,7 +3490,7 @@
Parameters:
Source:
@@ -3593,7 +3544,7 @@
Returns:
-

setAgentStatus(agentStatus, statusInfo, enqueueNextState) → {Promise.<GenericResult>}

+

setAgentStatus(agentStatus, statusInfo, statusSettings) → {Promise.<GenericResult>}

@@ -3683,13 +3634,13 @@
Parameters:
- enqueueNextState + statusSettings -Boolean +Map.<String, String> @@ -3699,7 +3650,7 @@
Parameters:
- flag to determine if this status change request should be enqueued if neccessary + @@ -3740,7 +3691,7 @@
Parameters:
Source:
@@ -3844,7 +3795,7 @@
Parameters:
-SupervisedCallInfo +PhoneCall @@ -3895,7 +3846,7 @@
Parameters:
Source:
@@ -4032,7 +3983,7 @@
Parameters:
Source:
@@ -4169,7 +4120,7 @@
Parameters:
Source:
@@ -4329,7 +4280,7 @@
Parameters:
Source:
@@ -4435,7 +4386,7 @@

unmuteSource:
@@ -4590,7 +4541,7 @@
Parameters:
Source:
@@ -4636,13 +4587,13 @@
Parameters:

- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/baseConnector.js.html b/docs/baseConnector.js.html index 36d8ed8..0ec1292 100644 --- a/docs/baseConnector.js.html +++ b/docs/baseConnector.js.html @@ -38,9 +38,9 @@

Source: baseConnector.js

import { CONNECTOR_CONFIG_EXPOSED_FIELDS, CONNECTOR_CONFIG_EXPOSED_FIELDS_STARTSWITH } from './constants.js'; import { Validator, GenericResult, InitResult, CallResult, HangupResult, HoldToggleResult, PhoneContactsResult, MuteToggleResult, ParticipantResult, RecordingToggleResult, AgentConfigResult, ActiveCallsResult, SignedRecordingUrlResult, LogoutResult, - VendorConnector, Contact, AudioStats, SuperviseCallResult, SupervisorHangupResult, AgentStatusInfo, SupervisedCallInfo, CapabilitiesResult, AgentVendorStatusInfo, StateChangeResult} from './types'; + VendorConnector, Contact, AudioStats, SuperviseCallResult, SupervisorHangupResult, AgentStatusInfo, SupervisedCallInfo, CapabilitiesResult} from './types'; import { enableMos, getMOS, initAudioStats, updateAudioStats } from './mosUtil'; -import { log, getLogs } from './logger'; +import { log } from './logger'; let channelPort; let vendorConnector; @@ -105,7 +105,7 @@

Source: baseConnector.js

const sanitizedPayload = sanitizePayload(payload); const logLevel = isError ? constants.LOG_LEVEL.ERROR : constants.LOG_LEVEL.INFO; log({eventType, payload}, logLevel, constants.LOG_SOURCE.SYSTEM); - + channelPort.postMessage({ type: constants.MESSAGE_TYPE.LOG, payload: { eventType, payload: sanitizedPayload, isError } @@ -133,20 +133,13 @@

Source: baseConnector.js

* @param {object} error Error object representing the error * @param {string} eventType The event that caused this error, ex: constants.MESSAGE_TYPE.ACCEPT_CALL */ -function dispatchError(errorType, error, eventType) { + function dispatchError(errorType, error, eventType) { // eslint-disable-next-line no-console console.error(`SCV dispatched error ${errorType} for eventType ${eventType}`, error); dispatchEvent(constants.EVENT_TYPE.ERROR, { message: constants.ERROR_TYPE[errorType] }, false); dispatchEventLog(eventType, { errorType, error }, true); } -function dispatchInfo(eventType, payload) { - // eslint-disable-next-line no-console - console.info(`SCV info message dispatched for eventType ${eventType} with payload ${JSON.stringify(payload)}`); - dispatchEvent(constants.EVENT_TYPE.INFO, { message: constants.INFO_TYPE[eventType] }, false); - dispatchEventLog(eventType, payload, false); -} - /** * Notify Salesforce that the connector is ready */ @@ -181,9 +174,7 @@

Source: baseConnector.js

[constants.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN] : capabilitiesResult.hasSupervisorListenIn, [constants.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN] : capabilitiesResult.hasSupervisorBargeIn, [constants.CAPABILITIES_TYPE.MOS] : capabilitiesResult.supportsMos, - [constants.CAPABILITIES_TYPE.BLIND_TRANSFER] : capabilitiesResult.hasBlindTransfer, - [constants.CAPABILITIES_TYPE.TRANSFER_TO_OMNI_FLOW] : capabilitiesResult.hasTransferToOmniFlow, - [constants.CAPABILITIES_TYPE.PENDING_STATUS_CHANGE] : capabilitiesResult.hasPendingStatusChange + [constants.CAPABILITIES_TYPE.BLIND_TRANSFER] : capabilitiesResult.hasBlindTransfer }, callInProgress: activeCalls.length > 0 ? activeCalls[0] : null } @@ -229,7 +220,7 @@

Source: baseConnector.js

constants.EVENT_TYPE.CALL_STARTED : constants.EVENT_TYPE.CALL_CONNECTED, call); } catch (e) { isSupervisorConnected = false; - dispatchInfo(constants.INFO_TYPE.CAN_NOT_ACCEPT_THE_CALL, {messagetype: constants.MESSAGE_TYPE.ACCEPT_CALL, additionalInfo: e} ) + dispatchError(constants.ERROR_TYPE.CAN_NOT_ACCEPT_THE_CALL, e, constants.MESSAGE_TYPE.ACCEPT_CALL); } break; case constants.MESSAGE_TYPE.DECLINE_CALL: @@ -309,8 +300,8 @@

Source: baseConnector.js

case constants.MESSAGE_TYPE.SET_AGENT_STATUS: try { const statusInfo = message.data.statusInfo || {}; - const enqueueNextState = message.data.enqueueNextState || false; - const payload = await vendorConnector.setAgentStatus(message.data.agentStatus, statusInfo, enqueueNextState); + const statusSettings = message.data.statusSettings || {}; + const payload = await vendorConnector.setAgentStatus(message.data.agentStatus, statusInfo, statusSettings); Validator.validateClassObject(payload, GenericResult); const { success } = payload; dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success }); @@ -328,7 +319,7 @@

Source: baseConnector.js

case constants.MESSAGE_TYPE.GET_AGENT_STATUS: try { const payload = await vendorConnector.getAgentStatus(); - Validator.validateClassObject(payload, AgentVendorStatusInfo); + Validator.validateClassObject(payload, AgentStatusInfo); dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS_RESULT, payload); } catch (e) { dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.GET_AGENT_STATUS); @@ -369,20 +360,17 @@

Source: baseConnector.js

const contacts = payload.contacts.map((contact) => { return { id: contact.id, - type: contact.type, - name: contact.name, - phoneNumber: contact.phoneNumber, - prefix: contact.prefix, - extension: contact.extension, endpointARN: contact.endpointARN, queue: contact.queue, - availability: contact.availability, - recordId: contact.recordId, - description: contact.description + phoneNumber: contact.phoneNumber, + name: contact.name, + type: contact.type, + extension: contact.extension, + availability: contact.availability }; }); dispatchEvent(constants.EVENT_TYPE.PHONE_CONTACTS, { - contacts, contactTypes: payload.contactTypes + contacts }); } catch (e) { dispatchError(constants.ERROR_TYPE.CAN_NOT_GET_PHONE_CONTACTS, e, constants.MESSAGE_TYPE.GET_PHONE_CONTACTS); @@ -471,7 +459,6 @@

Source: baseConnector.js

const call = activeCalls[callId]; const shouldReplay = call.callInfo ? call.callInfo.isReplayable : true; const isSupervisorCall = call.callAttributes && call.callAttributes.participantType === constants.PARTICIPANT_TYPE.SUPERVISOR; - const hasSupervisorBargedIn = isSupervisorCall && call.callAttributes && call.callAttributes.hasSupervisorBargedIn; if (shouldReplay) { call.isReplayedCall = true; switch(call.state) { @@ -479,9 +466,6 @@

Source: baseConnector.js

if (isSupervisorCall) { isSupervisorConnected = true; dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, call); - if (hasSupervisorBargedIn) { - dispatchEvent(constants.EVENT_TYPE.SUPERVISOR_BARGED_IN, call); - } break; } dispatchEvent(constants.EVENT_TYPE.CALL_CONNECTED, call); @@ -543,7 +527,7 @@

Source: baseConnector.js

} break; case constants.MESSAGE_TYPE.DOWNLOAD_VENDOR_LOGS: - vendorConnector.downloadLogs(getLogs()); + vendorConnector.downloadLogs(); break; case constants.MESSAGE_TYPE.LOG: { const { logLevel, logMessage, payload } = message.data; @@ -594,7 +578,7 @@

Source: baseConnector.js

async function windowMessageHandler(message) { switch (message.data.type) { case constants.MESSAGE_TYPE.SETUP_CONNECTOR: { - const sfDomain = /^https:\/\/[\w-.]+(\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/; + const sfDomain = /^http[s]?:\/\/[\w-.]+(\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/; const originUrl = new URL(message.origin); const url = originUrl.protocol + '//' + originUrl.hostname; @@ -1006,25 +990,12 @@

Source: baseConnector.js

break; } - /** - * NOTE: SALESFORCE INTERNAL USE ONLY - */ case constants.EVENT_TYPE.GET_AGENT_STATUS: { - if (validatePayload(payload, AgentVendorStatusInfo, constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, constants.EVENT_TYPE.GET_AGENT_STATUS)) { + if (validatePayload(payload, AgentStatusInfo, constants.ERROR_TYPE.CAN_NOT_GET_AGENT_STATUS, constants.EVENT_TYPE.GET_AGENT_STATUS)) { dispatchEvent(constants.EVENT_TYPE.GET_AGENT_STATUS, payload); } break; } - - /** - * NOTE: SALESFORCE INTERNAL USE ONLY - */ - case constants.EVENT_TYPE.STATE_CHANGE: { - if(validatePayload(payload, StateChangeResult, constants.ERROR_TYPE.INVALID_STATE_CHANGE_RESULT, constants.EVENT_TYPE.STATE_CHANGE)) { - dispatchEvent(constants.EVENT_TYPE.STATE_CHANGE, payload); - } - break; - } } } @@ -1036,13 +1007,13 @@

Source: baseConnector.js


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/constants.js.html b/docs/constants.js.html index 396afba..ad3eca7 100644 --- a/docs/constants.js.html +++ b/docs/constants.js.html @@ -79,8 +79,6 @@

Source: constants.js

HOLD_TOGGLE: 'HOLD_TOGGLE', HANGUP: 'HANGUP', ERROR: 'ERROR', - WARNING: 'WARNING', - INFO: 'INFO', PHONE_CONTACTS: 'PHONE_CONTACTS', PARTICIPANT_ADDED: 'PARTICIPANT_ADDED', PARTICIPANT_CONNECTED: 'PARTICIPANT_CONNECTED', @@ -109,11 +107,7 @@

Source: constants.js

SUPERVISOR_HANGUP : 'SUPERVISOR_HANGUP', CALL_BARGED_IN : 'CALL_BARGED_IN', SET_AGENT_STATUS: 'SET_AGENT_STATUS', - GET_AGENT_STATUS: 'GET_AGENT_STATUS', - STATE_CHANGE: 'STATE_CHANGE' - }, - INFO_TYPE: { - CAN_NOT_ACCEPT_THE_CALL: 'CAN_NOT_ACCEPT_THE_CALL' + GET_AGENT_STATUS: 'GET_AGENT_STATUS' }, ERROR_TYPE: { GENERIC_ERROR: 'GENERIC_ERROR', @@ -124,6 +118,7 @@

Source: constants.js

INVALID_AGENT_STATUS: 'INVALID_AGENT_STATUS', CAN_NOT_SET_AGENT_STATUS: 'CAN_NOT_SET_AGENT_STATUS', LOGIN_REQUIRED: 'LOGIN_REQUIRED', + CAN_NOT_ACCEPT_THE_CALL: 'CAN_NOT_ACCEPT_THE_CALL', CAN_NOT_DECLINE_THE_CALL: 'CAN_NOT_DECLINE_THE_CALL', CAN_NOT_END_THE_CALL: 'CAN_NOT_END_THE_CALL', CAN_NOT_HOLD_CALL: 'CAN_NOT_HOLD_CALL', @@ -156,8 +151,7 @@

Source: constants.js

CAN_NOT_DISCONNECT_SUPERVISOR : 'CAN_NOT_DISCONNECT_SUPERVISOR', CAN_NOT_BARGE_IN_SUPERVISOR: 'CAN_NOT_BARGE_IN_SUPERVISOR', CAN_NOT_BARGE_IN_CALL: 'CAN_NOT_BARGE_IN_CALL', - CAN_NOT_GET_AGENT_STATUS: 'CAN_NOT_GET_AGENT_STATUS', - INVALID_STATE_CHANGE_RESULT: 'INVALID_STATE_CHANGE_RESULT' + CAN_NOT_GET_AGENT_STATUS: 'CAN_NOT_GET_AGENT_STATUS' }, AGENT_STATUS: { ONLINE: 'Online', @@ -175,8 +169,7 @@

Source: constants.js

INBOUND: 'Inbound', OUTBOUND: 'Outbound', CALLBACK: 'Callback', - ADD_PARTICIPANT: 'AddParticipant', - TRANSFER:'Transfer' + ADD_PARTICIPANT: 'AddParticipant' }, DIALER_TYPE: { OUTBOUND_PREVIEW: 'OutboundPreview', @@ -186,8 +179,7 @@

Source: constants.js

PHONEBOOK: 'PhoneBook', QUEUE: 'Queue', PHONENUMBER: 'PhoneNumber', - AGENT: 'Agent', - FLOW: 'Flow' + AGENT: 'Agent' }, AGENT_CONFIG_TYPE: { SHOW_AGENT_SETTINGS: 'SHOW_AGENT_SETTINGS', @@ -206,9 +198,7 @@

Source: constants.js

SUPERVISOR_LISTEN_IN: 'SUPERVISOR_LISTEN_IN', SUPERVISOR_BARGE_IN: 'SUPERVISOR_BARGE_IN', MOS: 'MOS', - BLIND_TRANSFER: 'BLIND_TRANSFER', - TRANSFER_TO_OMNI_FLOW: 'TRANSFER_TO_OMNI_FLOW', - PENDING_STATUS_CHANGE: 'PENDING_STATUS_CHANGE' + BLIND_TRANSFER: 'BLIND_TRANSFER' }, CALL_STATE: { RINGING: 'ringing', @@ -243,13 +233,9 @@

Source: constants.js

SYSTEM: "SYSTEM", PARTNER: "PARTNER" }, - CONTACTS_FILTER_TYPES: { - "AGENT": "AGENT", - "QUEUE": "QUEUE", - "CONTACT": "CONTACT", - "DIRECTORY": "DIRECTORY", - "FLOW": "FLOW", - "AVAILABLE": "AVAILABLE" + AGENT_STATUS_TYPE: { + SALESFORCE_PRESENCE: 'SALESFORCE_PRESENCE', + EXTERNAL_PRESENCE: 'EXTERNAL_PRESENCE' } }; @@ -283,13 +269,13 @@

Source: constants.js


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/downloadData.js.html b/docs/downloadData.js.html index 1ec7827..c5ff74a 100644 --- a/docs/downloadData.js.html +++ b/docs/downloadData.js.html @@ -62,13 +62,13 @@

Source: downloadData.js


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/global.html b/docs/global.html index adaec8a..70084b3 100644 --- a/docs/global.html +++ b/docs/global.html @@ -142,7 +142,7 @@

Source:
@@ -204,7 +204,7 @@

Source:
@@ -1537,7 +1537,7 @@
Parameters:
Source:
@@ -2002,7 +2002,7 @@
Properties
Source:
@@ -2287,7 +2287,7 @@
Properties
Source:
@@ -2519,7 +2519,7 @@
Properties
Source:
@@ -2744,7 +2744,7 @@

(async) Source:
@@ -2790,13 +2790,13 @@

(async)
- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/index.html b/docs/index.html index 17ab0a0..ccff98f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -73,13 +73,13 @@

Contributing and Developing Locally


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/logger.js.html b/docs/logger.js.html index d11cdd1..c7e33e6 100644 --- a/docs/logger.js.html +++ b/docs/logger.js.html @@ -96,13 +96,13 @@

Source: logger.js


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/docs/types.js.html b/docs/types.js.html index 886525c..d7342ec 100644 --- a/docs/types.js.html +++ b/docs/types.js.html @@ -64,8 +64,7 @@

Source: types.js

SUPERVISOR_CALL_CONNECTED: constants.EVENT_TYPE.SUPERVISOR_CALL_CONNECTED, SUPERVISOR_HANGUP : constants.EVENT_TYPE.SUPERVISOR_HANGUP, SET_AGENT_STATUS: constants.EVENT_TYPE.SET_AGENT_STATUS, - GET_AGENT_STATUS: constants.EVENT_TYPE.GET_AGENT_STATUS, - STATE_CHANGE: constants.EVENT_TYPE.STATE_CHANGE + GET_AGENT_STATUS: constants.EVENT_TYPE.GET_AGENT_STATUS }, /** * @enum {string} @@ -125,7 +124,7 @@

Source: types.js

/** * @enum {String} */ - CONTACTS_FILTER_TYPES: { ...constants.CONTACTS_FILTER_TYPES } + AgentStatusType: { ...constants.AGENT_STATUS_TYPE } }; /** @@ -200,10 +199,8 @@

Source: types.js

* @param {boolean} [param.hasSupervisorListenIn] True if vendor supports supervisor listening to a ongoing call * @param {boolean} [param.hasSupervisorBargeIn] True if vendor supports Supervisor barging into a ongoing call * @param {boolean} [param.hasBlindTransfer] True if vendor supports blind transfers - * @param {boolean} [param.hasBlindTransfer] True if vendor supports transfer to omni flows - * @param {boolean} [param.hasPendingStatusChange] True if vendor supports Pending Status Change */ - constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false, hasTransferToOmniFlow = false, hasPendingStatusChange=false }) { + constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false }) { Validator.validateBoolean(hasMute); Validator.validateBoolean(hasRecord); Validator.validateBoolean(hasMerge); @@ -215,9 +212,7 @@

Source: types.js

Validator.validateBoolean(supportsMos); Validator.validateBoolean(hasSupervisorListenIn); Validator.validateBoolean(hasSupervisorBargeIn); - Validator.validateBoolean(hasBlindTransfer); - Validator.validateBoolean(hasTransferToOmniFlow); - Validator.validateBoolean(hasPendingStatusChange); + Validator.validateBoolean(hasBlindTransfer); this.hasMute = hasMute; this.hasRecord = hasRecord; @@ -231,8 +226,6 @@

Source: types.js

this.hasSupervisorListenIn = hasSupervisorListenIn; this.hasSupervisorBargeIn = hasSupervisorBargeIn; this.hasBlindTransfer = hasBlindTransfer; - this.hasTransferToOmniFlow = hasTransferToOmniFlow; - this.hasPendingStatusChange = hasPendingStatusChange; } } @@ -321,21 +314,14 @@

Source: types.js

* Create PhoneContactsResult * @param {object} param * @param {Contact[]} [param.contacts] - * @param {Array} [param.contactTypes] */ - constructor({ contacts = [], contactTypes = [] }) { + constructor({ contacts = [] }) { if (contacts.length > 0) { contacts.forEach(contact => { Validator.validateClassObject(contact, Contact); }); } - if (contactTypes.length > 0) { - contactTypes.forEach(filterType => { - Validator.validateEnum(filterType, Object.values(constants.CONTACT_TYPE)); - }); - } this.contacts = contacts; - this.contactTypes = contactTypes; } } @@ -564,10 +550,8 @@

Source: types.js

* @param {string} [param.endpointARN] * @param {string} [param.queue] * @param {string} [param.availability] - * @param {string} [param.recordId] - Salesforce RecordId - * @param {string} [param.description] - Contact Description */ - constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description}) { + constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability}) { if (phoneNumber) { Validator.validateString(phoneNumber); } @@ -589,12 +573,6 @@

Source: types.js

if (availability) { Validator.validateEnum(availability, Object.values(constants.AGENT_AVAILABILITY)); } - if (recordId) { - Validator.validateString(recordId); - } - if (description) { - Validator.validateString(description); - } this.phoneNumber = phoneNumber; this.id = id; @@ -609,8 +587,7 @@

Source: types.js

} else { this.availability = null; } - this.recordId = recordId; - this.description = description; + } } @@ -627,9 +604,8 @@

Source: types.js

* @param {DIALER_TYPE} [param.dialerType] - The dialer type of the call * @param {string} [param.parentId] - The parent call id of the call * @param {boolean} [param.isOnHold] - * @param {boolean} [param.hasSupervisorBargedIn] */ - constructor({ voiceCallId, participantType, dialerType = Constants.DIALER_TYPE.NONE, parentId, isOnHold, hasSupervisorBargedIn = false }) { + constructor({ voiceCallId, participantType, dialerType = Constants.DIALER_TYPE.NONE, parentId, isOnHold }) { if (voiceCallId) { Validator.validateString(voiceCallId); } @@ -642,8 +618,6 @@

Source: types.js

if (isOnHold !== undefined) { Validator.validateBoolean(isOnHold); } - - Validator.validateBoolean(hasSupervisorBargedIn); Validator.validateEnum(dialerType, Object.values(constants.DIALER_TYPE)); this.voiceCallId = voiceCallId; @@ -651,7 +625,6 @@

Source: types.js

this.parentId = parentId; this.isOnHold = isOnHold; this.dialerType = dialerType; - this.hasSupervisorBargedIn = hasSupervisorBargedIn; } } @@ -806,11 +779,11 @@

Source: types.js

* Set agent status * @param {string} agentStatus * @param {StatusInfo} statusInfo - * @param {Boolean} enqueueNextState - flag to determine if this status change request should be enqueued if neccessary + * @param {Map<String, String>} statusSettings * @returns {Promise<GenericResult>} * */ - setAgentStatus(agentStatus, statusInfo, enqueueNextState) { + setAgentStatus(agentStatus, statusInfo, statusSettings) { throw new Error('Not implemented'); } @@ -874,7 +847,7 @@

Source: types.js

* @param {PhoneCall} call * @returns {Promise<ParticipantResult>} */ - addParticipant(contact, call, isBlindTransfer) { + addParticipant(contact, call) { throw new Error('Not implemented'); } @@ -959,9 +932,8 @@

Source: types.js

/** * Triggers a browser download for Vendor Logs - * @param {String[]} logs Array of log messages. */ - downloadLogs(logs) { + downloadLogs() { downloadLogs(); } @@ -976,9 +948,9 @@

Source: types.js

/** * Supervise a call - * @param {SupervisedCallInfo} call Call to be supervised + * @param {PhoneCall} call Call to be supervised */ - superviseCall(supervisedCallInfo) { + superviseCall(call) { throw new Error('Not implemented'); } @@ -1053,12 +1025,14 @@

Source: types.js

/** * Create a AgentStatusInfo. * @param {object} param + * @param {("SALESFORCE_PRESENCE" | "EXTERNAL_PRESENCE")} [param.statusType] - Salesforce Presence (Default) or External Presence * @param {string} [param.statusId] - The unique statusId (required) * @param {string} [param.statusApiName] - The status API name * @param {string} [param.statusName] - The label for this status to be displayed in the UI */ - constructor({statusId, statusApiName, statusName}) { + constructor({statusType = constants.AGENT_STATUS_TYPE.SALESFORCE_PRESENCE, statusId, statusApiName, statusName}) { Validator.validateString(statusId); + Validator.validateEnum(statusType, Object.values(constants.AGENT_STATUS_TYPE)); if (statusApiName) { Validator.validateString(statusApiName); } @@ -1068,57 +1042,7 @@

Source: types.js

this.statusId = statusId; this.statusApiName = statusApiName; this.statusName = statusName; - } -} - -/** - * Class representing an Agent Vendor status information. This object is used to represent - * agent vendor side status information - */ -export class AgentVendorStatusInfo { - /** - * Create a AgentVendorStatusInfo. - * @param {object} param - * @param {string} [param.statusId] - The unique statusId (e.g agentStateARN) - * @param {string} [param.statusType] - The agent's current availability state type - * @param {string} [param.statusName] - The name of the agent's current availability state - */ - constructor({statusId, statusType, statusName}) { - if (statusId) { - Validator.validateString(statusId); - } - if (statusType) { - Validator.validateString(statusType); - } - if (statusName) { - Validator.validateString(statusName); - } - this.statusId = statusId; this.statusType = statusType; - this.statusName = statusName; - } -} - -/** - * NOTE: SALESFORCE INTERNAL USE ONLY - * Class representing an State Change Result information. This object is used to represent - * Agent State Change Infomation - */ - export class StateChangeResult { - /** - * Create a StateChangeResult. - * @param {object} param - * @param {AgentVendorStatusInfo} [param.newVendorStateInfo] - newStateName (e.g 'Available') (required), newStateType (e.g 'routable') - * @param {AgentVendorStatusInfo} [param.oldVendorStateInfo] - oldStateName (e.g 'offline'), oldStateType (e.g 'Offline') - */ - constructor({newVendorStateInfo, oldVendorStateInfo}) { - Validator.validateClassObject(newVendorStateInfo, AgentVendorStatusInfo); - Validator.validateString(newVendorStateInfo.statusName); - if (oldVendorStateInfo) { - Validator.validateClassObject(oldVendorStateInfo, AgentVendorStatusInfo); - } - this.newVendorStateInfo = newVendorStateInfo; - this.oldVendorStateInfo = oldVendorStateInfo; } } @@ -1270,13 +1194,13 @@

Source: types.js


- Documentation generated by JSDoc 3.6.11 on Thu Sep 22 2022 12:08:10 GMT-0700 (Pacific Daylight Time) + Documentation generated by JSDoc 3.6.10 on Wed Feb 16 2022 15:43:34 GMT-0700 (Mountain Standard Time)
diff --git a/package.json b/package.json index 94c2197..fd9c10f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@salesforce/scv-connector-base", - "version": "3.5.2", + "version": "3.5.4", "description": "Salesforce Service Cloud Connector Base", "main": "dist/scv-connector-base.js", "private": false, @@ -41,7 +41,7 @@ "gulp-shell": "^0.5.2", "jest-cli": "^24.9.0", "jest-html-reporter": "3.2.0", - "jsdoc": "^3.6.10", + "jsdoc": "^3.6.3", "pre-commit": "^1.2.2", "typescript": "^4.0.5", "webpack-cli": "^3.3.12", @@ -50,7 +50,7 @@ "dependencies": { "@babel/runtime": "^7.11.2", "babel-loader": "^8.2.2", - "yargs": "^17.3.1" + "yargs": "^13.3.2" }, "jest": { "coverageThreshold": { diff --git a/src/main/baseConnector.js b/src/main/baseConnector.js index 9b89f6e..c26f613 100644 --- a/src/main/baseConnector.js +++ b/src/main/baseConnector.js @@ -150,6 +150,7 @@ async function setConnectorReady() { [constants.CAPABILITIES_TYPE.DEBUG_ENABLED] : capabilitiesResult.debugEnabled, [constants.CAPABILITIES_TYPE.CONTACT_SEARCH] : capabilitiesResult.hasContactSearch, [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY] : capabilitiesResult.hasAgentAvailability, + [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_QUEUE_WAIT_TIME] : capabilitiesResult.hasQueueWaitTime, [constants.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN] : capabilitiesResult.hasSupervisorListenIn, [constants.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN] : capabilitiesResult.hasSupervisorBargeIn, [constants.CAPABILITIES_TYPE.MOS] : capabilitiesResult.supportsMos, @@ -287,6 +288,9 @@ async function channelMessageHandler(message) { const { success } = payload; dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success }); } catch (e) { + if (message.data.statusInfo) { + dispatchEvent(constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, { success: false }); + } switch(getErrorType(e)) { case constants.ERROR_TYPE.INVALID_AGENT_STATUS: dispatchError(constants.ERROR_TYPE.INVALID_AGENT_STATUS, getErrorMessage(e), constants.MESSAGE_TYPE.SET_AGENT_STATUS); @@ -349,6 +353,7 @@ async function channelMessageHandler(message) { endpointARN: contact.endpointARN, queue: contact.queue, availability: contact.availability, + queueWaitTime: contact.queueWaitTime, recordId: contact.recordId, description: contact.description }; @@ -566,7 +571,7 @@ async function channelMessageHandler(message) { async function windowMessageHandler(message) { switch (message.data.type) { case constants.MESSAGE_TYPE.SETUP_CONNECTOR: { - const sfDomain = /^https:\/\/[\w-.]+(\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/; + const sfDomain = /^https:\/\/[\w-.]+(lightning\.[\w]+\.soma\.force\.com|\.lightning\.force\.com|\.lightning\.pc-rnd\.force\.com|\.stm\.force\.com|\.salesforce\.com|\.my\.salesforce-sites\.com|\.lightning\.localhost\.[\w]+\.force.com)$/; const originUrl = new URL(message.origin); const url = originUrl.protocol + '//' + originUrl.hostname; diff --git a/src/main/constants.js b/src/main/constants.js index ca73747..64c71d2 100644 --- a/src/main/constants.js +++ b/src/main/constants.js @@ -175,6 +175,7 @@ export default { DEBUG_ENABLED: 'DEBUG_ENABLED', CONTACT_SEARCH: 'CONTACT_SEARCH', VENDOR_PROVIDED_AVAILABILITY: 'VENDOR_PROVIDED_AVAILABILITY', + VENDOR_PROVIDED_QUEUE_WAIT_TIME: 'VENDOR_PROVIDED_QUEUE_WAIT_TIME', SUPERVISOR_LISTEN_IN: 'SUPERVISOR_LISTEN_IN', SUPERVISOR_BARGE_IN: 'SUPERVISOR_BARGE_IN', MOS: 'MOS', diff --git a/src/main/types.js b/src/main/types.js index 3b46b3b..8281ab1 100644 --- a/src/main/types.js +++ b/src/main/types.js @@ -167,7 +167,8 @@ export class CapabilitiesResult { * @param {boolean} [param.hasSignedRecordingUrl] * @param {boolean} [param.debugEnabled] * @param {boolean} [param.hasContactSearch] True if getPhoneContacts uses the 'contain' filter - * @param {boolean} [param.hasAgentAvailability] True if getPhoneContacts also provides agent availability + * @param {boolean} [param.hasAgentAvailability] True if getPhoneContacts also provides agent availability, false if Salesforce provides it. + * @param {boolean} [param.hasQueueWaitTime] True if getPhoneContacts also provides estimated queue wait time, false if Salesforce provides it. * @param {boolean} [param.supportsMos] True if vendor support MOS * @param {boolean} [param.hasSupervisorListenIn] True if vendor supports supervisor listening to a ongoing call * @param {boolean} [param.hasSupervisorBargeIn] True if vendor supports Supervisor barging into a ongoing call @@ -175,7 +176,7 @@ export class CapabilitiesResult { * @param {boolean} [param.hasBlindTransfer] True if vendor supports transfer to omni flows * @param {boolean} [param.hasPendingStatusChange] True if vendor supports Pending Status Change */ - constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false, hasTransferToOmniFlow = false, hasPendingStatusChange=false }) { + constructor({ hasMute = true, hasRecord = true, hasMerge = true, hasSwap = true, hasSignedRecordingUrl = false, debugEnabled = true, hasContactSearch = false, hasAgentAvailability = false, hasQueueWaitTime = false, supportsMos = false, hasSupervisorListenIn = false, hasSupervisorBargeIn = false, hasBlindTransfer = false, hasTransferToOmniFlow = false, hasPendingStatusChange=false }) { Validator.validateBoolean(hasMute); Validator.validateBoolean(hasRecord); Validator.validateBoolean(hasMerge); @@ -184,6 +185,7 @@ export class CapabilitiesResult { Validator.validateBoolean(debugEnabled); Validator.validateBoolean(hasContactSearch); Validator.validateBoolean(hasAgentAvailability); + Validator.validateBoolean(hasQueueWaitTime); Validator.validateBoolean(supportsMos); Validator.validateBoolean(hasSupervisorListenIn); Validator.validateBoolean(hasSupervisorBargeIn); @@ -199,6 +201,7 @@ export class CapabilitiesResult { this.debugEnabled = debugEnabled; this.hasContactSearch = hasContactSearch; this.hasAgentAvailability = hasAgentAvailability; + this.hasQueueWaitTime = hasQueueWaitTime; this.supportsMos = supportsMos; this.hasSupervisorListenIn = hasSupervisorListenIn; this.hasSupervisorBargeIn = hasSupervisorBargeIn; @@ -470,12 +473,19 @@ export class CallInfo { * @param {boolean} [param.isReplayable] * @param {boolean} [param.isBargeable] * @param {boolean} [param.isExternalTransfer] + * @param {boolean} [param.showMuteButton] + * @param {boolean} [param.showRecordButton] + * @param {boolean} [param.showAddCallerButton] + * @param {boolean} [param.showAddBlindTransferButton] + * @param {boolean} [param.showMergeButton] + * @param {boolean} [param.showSwapButton] * @param {("ALWAYS"|"NEVER"|"ALWAYS_EXCEPT_ON_HOLD")} [param.removeParticipantVariant] - The type of remove participant variant when in a transfer call. */ constructor({ callStateTimestamp = null, isOnHold, isMuted = false, isRecordingPaused = false, initialCallId, isSoftphoneCall = true, acceptEnabled = true, declineEnabled = true, muteEnabled = true, swapEnabled = true, conferenceEnabled = true, holdEnabled = true, recordEnabled = true, addCallerEnabled = true, extensionEnabled = true, isReplayable = true, isBargeable = false, isExternalTransfer, - removeParticipantVariant = Constants.REMOVE_PARTICIPANT_VARIANT.ALWAYS }) { + showMuteButton = true, showRecordButton = true, showAddCallerButton = true, showAddBlindTransferButton = true, showMergeButton = true, + showSwapButton = true, removeParticipantVariant = Constants.REMOVE_PARTICIPANT_VARIANT.ALWAYS }) { if (callStateTimestamp) { Validator.validateDate(callStateTimestamp); } @@ -492,6 +502,12 @@ export class CallInfo { Validator.validateBoolean(addCallerEnabled); Validator.validateBoolean(extensionEnabled); Validator.validateBoolean(isBargeable); + Validator.validateBoolean(showMuteButton); + Validator.validateBoolean(showRecordButton); + Validator.validateBoolean(showAddCallerButton); + Validator.validateBoolean(showAddBlindTransferButton); + Validator.validateBoolean(showMergeButton); + Validator.validateBoolean(showSwapButton); if (isExternalTransfer !== undefined) { Validator.validateBoolean(isExternalTransfer); } @@ -515,6 +531,12 @@ export class CallInfo { this.isBargeable = isBargeable; this.isExternalTransfer = isExternalTransfer; this.removeParticipantVariant = removeParticipantVariant; + this.showMuteButton = showMuteButton; + this.showRecordButton = showRecordButton; + this.showAddCallerButton = showAddCallerButton; + this.showAddBlindTransferButton = showAddBlindTransferButton; + this.showMergeButton = showMergeButton; + this.showSwapButton = showSwapButton; } } @@ -537,9 +559,10 @@ export class Contact { * @param {string} [param.queue] * @param {string} [param.availability] * @param {string} [param.recordId] - Salesforce RecordId - * @param {string} [param.description] - Contact Description + * @param {string} [param.description] - Contact Description + * @param {string} [param.queueWaitTime] - Estimated Queue Wait Time */ - constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description}) { + constructor({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description, queueWaitTime}) { if (phoneNumber) { Validator.validateString(phoneNumber); } @@ -567,6 +590,9 @@ export class Contact { if (description) { Validator.validateString(description); } + if (queueWaitTime) { + Validator.validateString(queueWaitTime); + } this.phoneNumber = phoneNumber; this.id = id; @@ -581,6 +607,7 @@ export class Contact { } else { this.availability = null; } + this.queueWaitTime = queueWaitTime; this.recordId = recordId; this.description = description; } @@ -846,7 +873,7 @@ export class VendorConnector { * @param {PhoneCall} call * @returns {Promise} */ - addParticipant(contact, call, isBlindTransfer) { + addParticipant(contact, call) { throw new Error('Not implemented'); } @@ -948,9 +975,9 @@ export class VendorConnector { /** * Supervise a call - * @param {SupervisedCallInfo} call Call to be supervised + * @param {PhoneCall} call Call to be supervised */ - superviseCall(supervisedCallInfo) { + superviseCall(call) { throw new Error('Not implemented'); } diff --git a/src/test/baseConnector.test.js b/src/test/baseConnector.test.js index 17caa91..1f291c5 100644 --- a/src/test/baseConnector.test.js +++ b/src/test/baseConnector.test.js @@ -117,6 +117,7 @@ const capabilitiesPayload = { [constants.CAPABILITIES_TYPE.DEBUG_ENABLED] : capabilitiesResult.debugEnabled, [constants.CAPABILITIES_TYPE.CONTACT_SEARCH] : capabilitiesResult.hasContactSearch, [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_AVAILABILITY] : capabilitiesResult.hasAgentAvailability, + [constants.CAPABILITIES_TYPE.VENDOR_PROVIDED_QUEUE_WAIT_TIME] : capabilitiesResult.hasQueueWaitTime, [constants.CAPABILITIES_TYPE.SUPERVISOR_LISTEN_IN] : capabilitiesResult.hasSupervisorListenIn, [constants.CAPABILITIES_TYPE.SUPERVISOR_BARGE_IN] : capabilitiesResult.hasSupervisorBargeIn, [constants.CAPABILITIES_TYPE.MOS] : capabilitiesResult.supportsMos, @@ -308,6 +309,21 @@ describe('SCVConnectorBase tests', () => { expect(adapter.init).toHaveBeenCalledWith(constants.CONNECTOR_CONFIG); }); + it('Should dispatch init to the vendor for a message from a Salesforce soma domain', () => { + const message = { + data: { + type: constants.MESSAGE_TYPE.SETUP_CONNECTOR, + connectorConfig: constants.CONNECTOR_CONFIG + }, + ports: [channelPort], + origin: 'https://ise240.lightning.mist78.soma.force.com' + }; + + adapter.init = jest.fn().mockResolvedValue(initResult_connectorReady); + eventMap['message'](message); + expect(adapter.init).toHaveBeenCalledWith(constants.CONNECTOR_CONFIG); + }); + it('Should log the right fields when init is called', () => { const message = { data: { @@ -965,6 +981,16 @@ describe('SCVConnectorBase tests', () => { }); }); + it('Should dispatch SET_AGENT_STATUS_RESULT with failure on a failed setAgentStatus() invocation', async () => { + adapter.setAgentStatus = jest.fn().mockResolvedValue(invalidResult); + fireMessage(constants.MESSAGE_TYPE.SET_AGENT_STATUS, { agentStatus: 'dummyAgentStatus', statusInfo: dummyStatusInfo }); + await expect(adapter.setAgentStatus(message.data.agentStatus, message.data.statusInfo)).resolves.toBe(invalidResult); + assertChannelPortPayload({ eventType: constants.EVENT_TYPE.ERROR, payload: { + message: constants.ERROR_TYPE.CAN_NOT_SET_AGENT_STATUS + }}); + assertChannelPortPayload({ eventType: constants.EVENT_TYPE.SET_AGENT_STATUS_RESULT, payload: { success: false } }); + }); + it('Should dispatch SET_AGENT_STATUS_RESULT on a successful setAgentStatus() invocation without a payload', async () => { adapter.setAgentStatus = jest.fn().mockResolvedValue(genericResult); fireMessage(constants.MESSAGE_TYPE.SET_AGENT_STATUS); diff --git a/src/test/types.test.js b/src/test/types.test.js index 50504aa..efc9983 100644 --- a/src/test/types.test.js +++ b/src/test/types.test.js @@ -17,7 +17,7 @@ jest.mock('../main/logger'); describe('Types validation tests', () => { const invalid_argument = /^Invalid argument/; const dummyPhoneCall = new PhoneCall({ callId: 'callId', callType: Constants.CALL_TYPE.INBOUND, state: 'state', callAttributes: {}, phoneNumber: '100'}); - const dummyCallInfo = new CallInfo({ isOnHold: false }); + const dummyCallInfo = new CallInfo({ isOnHold: false, showMuteButton: true, showAddBlindTransferButton: true, showRecordButton: true, showAddCallerButton: true, showMergeButton: true, showSwapButton: true }); describe('ActiveCallsResult tests', () => { it('Should create ActiveCallsResult object - default', () => { @@ -456,9 +456,15 @@ describe('Types validation tests', () => { const isOnHold = false; const initialCallId = 'initialCallId'; const isExternalTransfer = false; + const showMuteButton = true; + const showAddCallerButton = true; + const showRecordButton = true; + const showAddBlindTransferButton = true; + const showMergeButton = true; + const showSwapButton = true; let callInfo; expect(() => { - callInfo = new CallInfo({ isOnHold, initialCallId, isExternalTransfer }); + callInfo = new CallInfo({ isOnHold, initialCallId, isExternalTransfer, showMuteButton, showAddCallerButton, showRecordButton, showAddBlindTransferButton, showMergeButton, showSwapButton }); }).not.toThrowError(); expect(callInfo.callStateTimestamp).toBeNull(); expect(callInfo.isOnHold).toEqual(isOnHold); @@ -466,6 +472,12 @@ describe('Types validation tests', () => { expect(callInfo.isMuted).toEqual(false); expect(callInfo.isExternalTransfer).toEqual(isExternalTransfer); expect(callInfo.isRecordingPaused).toEqual(false); + expect(callInfo.showAddBlindTransferButton).toEqual(true); + expect(callInfo.showMuteButton).toEqual(true); + expect(callInfo.showRecordButton).toEqual(true); + expect(callInfo.showAddCallerButton).toEqual(true); + expect(callInfo.showMergeButton).toEqual(true); + expect(callInfo.showSwapButton).toEqual(true); }); it('Should create CallInfo object', () => { @@ -498,6 +510,7 @@ describe('Types validation tests', () => { const endpointARN = 'endpointARN'; const queue = 'queue'; const availability = "BUSY"; + const queueWaitTime = "15"; const recordId = "00DXXX"; const description = "description"; @@ -506,7 +519,7 @@ describe('Types validation tests', () => { let contact; expect(() => { - contact = new Contact({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description}); + contact = new Contact({phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, queueWaitTime, recordId, description}); }).not.toThrowError(); expect(contact.phoneNumber).toEqual(phoneNumber); expect(contact.type).toEqual(type); @@ -517,6 +530,7 @@ describe('Types validation tests', () => { expect(contact.endpointARN).toEqual(endpointARN); expect(contact.queue).toEqual(queue); expect(contact.availability).toEqual(availability); + expect(contact.queueWaitTime).toEqual(queueWaitTime); expect(contact.recordId).toEqual(recordId); expect(contact.description).toEqual(description); }); diff --git a/ts-declaration/baseConnector.d.ts b/ts-declaration/baseConnector.d.ts index 9993adb..5e6932e 100644 --- a/ts-declaration/baseConnector.d.ts +++ b/ts-declaration/baseConnector.d.ts @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2021, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + /** * Initialize a vendor connector * @param {VendorConnector} connector @@ -22,7 +29,7 @@ export function publishLog({ eventType, payload, isError }: { * @param {object} param.error Error object representing the error */ export function publishError({ eventType, error }: { - eventType: ("LOGIN_RESULT" | "LOGOUT_RESULT" | "CALL_STARTED" | "QUEUED_CALL_STARTED" | "CALL_CONNECTED" | "HANGUP" | "PARTICIPANT_CONNECTED" | "PARTICIPANT_ADDED" | "PARTICIPANTS_SWAPPED" | "PARTICIPANTS_CONFERENCED" | "MESSAGE" | "MUTE_TOGGLE" | "HOLD_TOGGLE" | "RECORDING_TOGGLE" | "AGENT_ERROR" | "SOFTPHONE_ERROR"); + eventType: ("LOGIN_RESULT" | "LOGOUT_RESULT" | "CALL_STARTED" | "QUEUED_CALL_STARTED" | "CALL_CONNECTED" | "HANGUP" | "PARTICIPANT_CONNECTED" | "PARTICIPANT_ADDED" | "PARTICIPANTS_SWAPPED" | "PARTICIPANTS_CONFERENCED" | "MESSAGE" | "MUTE_TOGGLE" | "HOLD_TOGGLE" | "RECORDING_TOGGLE" | "AGENT_ERROR" | "SOFTPHONE_ERROR" | "SUPERVISOR_LISTEN_IN" | "SUPERVISOR_BARGED_IN"); error: object; }, ...args: any[]): void; /** @@ -45,9 +52,12 @@ export function publishError({ eventType, error }: { * MUTE_TOGGLE - MuteToggleResult * HOLD_TOGGLE - HoldToggleResult * RECORDING_TOGGLE - RecordingToggleResult + * SUPERVISOR_LISTEN_IN - SuperviseCallResult; + * SUPERVISOR_BARGED_IN - SuperviseCallResult; + * CALL_BARGED_IN - SupervisedCallInfo; */ export function publishEvent({ eventType, payload, registerLog }: { - eventType: ("LOGIN_RESULT" | "LOGOUT_RESULT" | "CALL_STARTED" | "QUEUED_CALL_STARTED" | "CALL_CONNECTED" | "HANGUP" | "PARTICIPANT_CONNECTED" | "PARTICIPANT_ADDED" | "PARTICIPANTS_SWAPPED" | "PARTICIPANTS_CONFERENCED" | "MESSAGE" | "MUTE_TOGGLE" | "HOLD_TOGGLE" | "RECORDING_TOGGLE"); + eventType: ("LOGIN_RESULT" | "LOGOUT_RESULT" | "CALL_STARTED" | "QUEUED_CALL_STARTED" | "CALL_CONNECTED" | "HANGUP" | "PARTICIPANT_CONNECTED" | "PARTICIPANT_ADDED" | "PARTICIPANTS_SWAPPED" | "PARTICIPANTS_CONFERENCED" | "MESSAGE" | "MUTE_TOGGLE" | "HOLD_TOGGLE" | "RECORDING_TOGGLE" | "CALL_BARGED_IN" | "SUPERVISOR_LISTEN_IN" | "SUPERVISOR_BARGED_IN"); payload: object; registerLog: boolean; }): Promise; diff --git a/ts-declaration/index.d.ts b/ts-declaration/index.d.ts index 8e54bf9..f235760 100644 --- a/ts-declaration/index.d.ts +++ b/ts-declaration/index.d.ts @@ -1,3 +1,10 @@ -export { log } from "./logger.js"; +/* + * Copyright (c) 2021, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + export { initializeConnector, publishEvent, publishError, publishLog } from "./baseConnector.js"; +export { log } from './logger.js'; export { Constants, ActiveCallsResult, AgentConfigResult, AgentConfig, CapabilitiesResult, RecordingToggleResult, ParticipantResult, SignedRecordingUrlResult, PhoneContactsResult, CallResult, HangupResult, HoldToggleResult, InitResult, GenericResult, MuteToggleResult, LogoutResult, CallInfo, PhoneCall, PhoneCallAttributes, Contact, Phone, AgentStatusInfo, AudioStatsElement, AudioStats, StatsInfo, VendorConnector, SuperviseCallResult, SupervisorHangupResult, SupervisedCallInfo, AgentVendorStatusInfo, StateChangeResult } from "./types.js"; diff --git a/ts-declaration/logger.d.ts b/ts-declaration/logger.d.ts index 9f1e1d8..b8d4a16 100644 --- a/ts-declaration/logger.d.ts +++ b/ts-declaration/logger.d.ts @@ -1,10 +1,19 @@ +/* + * Copyright (c) 2021, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + /** * Log a message at a custom level. - * @param {object} logMessage - * @param {string} logLevel - * @param {string} [logSource] + * @param {object} logMessage - The message to be logged + * @param {("ERROR"|"INFO")} logLevel - The logging level */ -export function log(logMessage: object, logLevel: string, logSource?: string): void; + export function log({ logMessage, logLevel }: { + logMessage: object; + logLevel: ("ERROR"|"INFO"); +}): void; /** * * @returns a deep copy of the logs array diff --git a/ts-declaration/types.d.ts b/ts-declaration/types.d.ts index 2e9dbb5..00f3bfc 100644 --- a/ts-declaration/types.d.ts +++ b/ts-declaration/types.d.ts @@ -53,7 +53,6 @@ export namespace Constants { OUTBOUND: string; CALLBACK: string; ADD_PARTICIPANT: string; - TRANSFER: string; }; const DIALER_TYPE: { OUTBOUND_PREVIEW: string; @@ -64,7 +63,6 @@ export namespace Constants { QUEUE: string; PHONENUMBER: string; AGENT: string; - FLOW: string; }; const CALL_STATE: { RINGING: string; @@ -83,12 +81,7 @@ export namespace Constants { }; const AGENT_AVAILABILITY: { AVAILABLE: string; - BUSY: string; /** - * Create AgentConfigResult - * @param {object} param - * @param {Phone[]} [param.phones] - * @param {Phone} [param.selectedPhone] - */ + BUSY: string; OFFLINE: string; }; const REMOVE_PARTICIPANT_VARIANT: { @@ -101,12 +94,12 @@ export namespace Constants { INFO: string; }; const CONTACTS_FILTER_TYPES: { - AGENT: string; - QUEUE: string; - CONTACT: string; - DIRECTORY: string; - FLOW: string; - AVAILABLE: string; + AGENT: string, + QUEUE: string, + CONTACT: string, + DIRECTORY: string, + FLOW: string, + AVAILABLE: string }; } /** @@ -154,10 +147,43 @@ export class ActiveCallsResult { }); activeCalls: PhoneCall[]; } +/** + * Class representing result type for getAgentConfig() + */ +export class AgentConfigResult { + /** + * Create AgentConfigResult + * @param {object} param + * @param {Phone[]} [param.phones] + * @param {Phone} [param.selectedPhone] + */ + constructor({ phones, selectedPhone }: { + phones?: Phone[]; + selectedPhone?: Phone; + }); + + phones: Phone[]; + selectedPhone: Phone; +} +/** + * Class representing AgentConfig type for setAgentConfig() + */ +export class AgentConfig { + /** + * Create AgentConfig + * @param {object} param + * @param {Phone} [param.selectedPhone] + */ + constructor({ selectedPhone }: { + selectedPhone?: Phone; + }); + selectedPhone: Phone; +} + /** * Class representing result type for getCapabilities() */ -export class CapabilitiesResult { + export class CapabilitiesResult { /** * Create CapabilitiesResult * @param {object} param @@ -172,11 +198,10 @@ export class CapabilitiesResult { * @param {boolean} [param.supportsMos] True if vendor support MOS * @param {boolean} [param.hasSupervisorListenIn] True if vendor supports supervisor listening to a ongoing call * @param {boolean} [param.hasSupervisorBargeIn] True if vendor supports Supervisor barging into a ongoing call - * @param {boolean} [param.hasBlindTransfer] True if vendor supports blind transfers - * @param {boolean} [param.hasBlindTransfer] True if vendor supports transfer to omni flows + * @param {String} [param.signedRecordingUrl] * @param {boolean} [param.hasPendingStatusChange] True if vendor supports Pending Status Change */ - constructor({ hasMute, hasRecord, hasMerge, hasSwap, hasSignedRecordingUrl, debugEnabled, hasContactSearch, hasAgentAvailability, supportsMos, hasSupervisorListenIn, hasSupervisorBargeIn, hasBlindTransfer, hasTransferToOmniFlow, hasPendingStatusChange }: { + constructor({ hasMute, hasRecord, hasMerge, hasSwap, hasSignedRecordingUrl, debugEnabled, hasContactSearch, hasAgentAvailability, supportsMos, hasSupervisorListenIn, hasSupervisorBargeIn, hasPendingStatusChange }: { hasMute?: boolean; hasRecord?: boolean; hasMerge?: boolean; @@ -188,8 +213,6 @@ export class CapabilitiesResult { supportsMos?: boolean; hasSupervisorListenIn?: boolean; hasSupervisorBargeIn?: boolean; - hasBlindTransfer?: boolean; - hasBlindTransfer?: boolean; hasPendingStatusChange?: boolean; }); hasMute: boolean; @@ -203,41 +226,10 @@ export class CapabilitiesResult { supportsMos: boolean; hasSupervisorListenIn: boolean; hasSupervisorBargeIn: boolean; - hasBlindTransfer: boolean; - hasTransferToOmniFlow: any; hasPendingStatusChange: boolean; } -/** - * Class representing result type for getAgentConfig() - */ -export class AgentConfigResult { - /** - * Create AgentConfigResult - * @param {object} param - * @param {Phone[]} [param.phones] - * @param {Phone} [param.selectedPhone] - */ - constructor({ phones, selectedPhone }: { - phones?: Phone[]; - selectedPhone?: Phone; - }); - phones: Phone[]; - selectedPhone: Phone; -} -/** - * Class representing AgentConfig type for setAgentConfig() - */ -export class AgentConfig { - /** - * Create AgentConfig - * @param {object} param - * @param {Phone} [param.selectedPhone] - */ - constructor({ selectedPhone }: { - selectedPhone?: Phone; - }); - selectedPhone: Phone; -} + + /** * Class representing result type for pauseRecording() & resumeRecording */ @@ -295,14 +287,11 @@ export class PhoneContactsResult { * Create PhoneContactsResult * @param {object} param * @param {Contact[]} [param.contacts] - * @param {Array} [param.contactTypes] */ - constructor({ contacts, contactTypes }: { + constructor({ contacts }: { contacts?: Contact[]; - contactTypes?: any[]; }); contacts: Contact[]; - contactTypes: any[]; } /** * Class representing result type for accept(), decline(), dial() @@ -469,7 +458,7 @@ export class CallInfo { isReplayable?: boolean; isBargeable?: boolean; isExternalTransfer?: boolean; - removeParticipantVariant?: ("ALWAYS" | "NEVER" | "ALWAYS_EXCEPT_ON_HOLD"); + removeParticipantVariant?: string; }); callStateTimestamp: Date; isRecordingPaused: boolean; @@ -489,7 +478,7 @@ export class CallInfo { isReplayable: boolean; isBargeable: boolean; isExternalTransfer: boolean; - removeParticipantVariant: "ALWAYS" | "NEVER" | "ALWAYS_EXCEPT_ON_HOLD"; + removeParticipantVariant: string; } /** * Class representing a Contact. This object is used to represent @@ -509,7 +498,7 @@ export class Contact { * @param {string} [param.queue] * @param {string} [param.availability] * @param {string} [param.recordId] - Salesforce RecordId - * @param {string} [param.description] - Contact Description + * @param {string} [param.description] - Contact Description */ constructor({ phoneNumber, id, type, name, prefix, extension, endpointARN, queue, availability, recordId, description }: { id?: string; @@ -548,22 +537,19 @@ export class PhoneCallAttributes { * @param {DIALER_TYPE} [param.dialerType] - The dialer type of the call * @param {string} [param.parentId] - The parent call id of the call * @param {boolean} [param.isOnHold] - * @param {boolean} [param.hasSupervisorBargedIn] */ - constructor({ voiceCallId, participantType, dialerType, parentId, isOnHold, hasSupervisorBargedIn }: { + constructor({ voiceCallId, participantType, dialerType, parentId, isOnHold }: { voiceCallId?: string; participantType?: string; dialerType?: string; parentId?: string; isOnHold?: boolean; - hasSupervisorBargedIn?: boolean; }); voiceCallId: string; participantType: string; parentId: string; isOnHold: boolean; dialerType: string; - hasSupervisorBargedIn: boolean; } /** * Class representing a PhoneCall. @@ -675,7 +661,7 @@ export class VendorConnector { * Set agent status * @param {string} agentStatus * @param {StatusInfo} statusInfo - * @param {Boolean} enqueueNextState - flag to determine if this status change request should be enqueued if neccessary + * @param {boolean} enqueueNextState * @returns {Promise} * */ @@ -722,7 +708,7 @@ export class VendorConnector { * @param {PhoneCall} call * @returns {Promise} */ - addParticipant(contact: Contact, call: PhoneCall, isBlindTransfer: any): Promise; + addParticipant(contact: Contact, call: PhoneCall): Promise; /** * Pause recording * @param {PhoneCall} call @@ -747,7 +733,7 @@ export class VendorConnector { */ setAgentConfig(config: AgentConfig): Promise; /** - * Get Capabilities + * Get capabilities * @returns {Promise} */ getCapabilities(): Promise; @@ -776,9 +762,9 @@ export class VendorConnector { getSignedRecordingUrl(recordingUrl: string, vendorCallKey: string, callId: string): Promise; /** * Triggers a browser download for Vendor Logs - * @param {String[]} logs Array of log messages. + * * @param {String[]} logs Array of log messages */ - downloadLogs(logs: string[]): void; + downloadLogs(logs): void; /** * Sends the logs with a logLevel and payload to the vendor connector. * Does a no-op, if not implemented. @@ -789,9 +775,9 @@ export class VendorConnector { logMessageToVendor(logLevel: string, message: string, payload: any): void; /** * Supervise a call - * @param {SupervisedCallInfo} call Call to be supervised + * @param {PhoneCall} call Call to be supervised */ - superviseCall(supervisedCallInfo: SupervisedCallInfo): void; + superviseCall(call: PhoneCall): void; /** * Supervisor disconnects from a call * @param {PhoneCall} call Call to be disconnected @@ -984,4 +970,4 @@ export class SuperviseCallResult { * Class representing result type for supervisorDisconnected() */ export class SupervisorHangupResult extends HangupResult { -} +} \ No newline at end of file