@webex/calling 3.11.0 → 3.12.0-llmrefactor.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +596 -0
- package/dist/CallHistory/CallHistory.js.map +1 -0
- package/dist/CallHistory/CallHistory.test.js +916 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -0
- package/dist/CallHistory/callHistoryFixtures.js +650 -0
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
- package/dist/CallHistory/constants.js +38 -0
- package/dist/CallHistory/constants.js.map +1 -0
- package/dist/CallHistory/types.js +7 -0
- package/dist/CallHistory/types.js.map +1 -0
- package/dist/CallRecording/CallRecording.js +160 -0
- package/dist/CallRecording/CallRecording.js.map +1 -0
- package/dist/CallRecording/CallRecording.test.js +257 -0
- package/dist/CallRecording/CallRecording.test.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js +577 -0
- package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js +652 -0
- package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
- package/dist/CallRecording/callRecordingFixtures.js +235 -0
- package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
- package/dist/CallRecording/constants.js +50 -0
- package/dist/CallRecording/constants.js.map +1 -0
- package/dist/CallRecording/types.js +137 -0
- package/dist/CallRecording/types.js.map +1 -0
- package/dist/CallRecording/utils.js +42 -0
- package/dist/CallRecording/utils.js.map +1 -0
- package/dist/CallRecording/utils.test.js +97 -0
- package/dist/CallRecording/utils.test.js.map +1 -0
- package/dist/CallSettings/CallSettings.js +311 -0
- package/dist/CallSettings/CallSettings.js.map +1 -0
- package/dist/CallSettings/CallSettings.test.js +122 -0
- package/dist/CallSettings/CallSettings.test.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.js +308 -0
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
- package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.js +597 -0
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
- package/dist/CallSettings/constants.js +31 -0
- package/dist/CallSettings/constants.js.map +1 -0
- package/dist/CallSettings/testFixtures.js +68 -0
- package/dist/CallSettings/testFixtures.js.map +1 -0
- package/dist/CallSettings/types.js +7 -0
- package/dist/CallSettings/types.js.map +1 -0
- package/dist/CallingClient/CallingClient.js +1349 -0
- package/dist/CallingClient/CallingClient.js.map +1 -0
- package/dist/CallingClient/CallingClient.test.js +1625 -0
- package/dist/CallingClient/CallingClient.test.js.map +1 -0
- package/dist/CallingClient/callRecordFixtures.js +101 -0
- package/dist/CallingClient/callRecordFixtures.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.js +275 -0
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
- package/dist/CallingClient/calling/CallerId/types.js +7 -0
- package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
- package/dist/CallingClient/calling/call.js +3666 -0
- package/dist/CallingClient/calling/call.js.map +1 -0
- package/dist/CallingClient/calling/call.test.js +3970 -0
- package/dist/CallingClient/calling/call.test.js.map +1 -0
- package/dist/CallingClient/calling/callManager.js +531 -0
- package/dist/CallingClient/calling/callManager.js.map +1 -0
- package/dist/CallingClient/calling/callManager.test.js +881 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -0
- package/dist/CallingClient/calling/index.js +30 -0
- package/dist/CallingClient/calling/index.js.map +1 -0
- package/dist/CallingClient/calling/types.js +79 -0
- package/dist/CallingClient/calling/types.js.map +1 -0
- package/dist/CallingClient/callingClientFixtures.js +143 -0
- package/dist/CallingClient/callingClientFixtures.js.map +1 -0
- package/dist/CallingClient/constants.js +272 -0
- package/dist/CallingClient/constants.js.map +1 -0
- package/dist/CallingClient/line/index.js +339 -0
- package/dist/CallingClient/line/index.js.map +1 -0
- package/dist/CallingClient/line/line.test.js +379 -0
- package/dist/CallingClient/line/line.test.js.map +1 -0
- package/dist/CallingClient/line/types.js +21 -0
- package/dist/CallingClient/line/types.js.map +1 -0
- package/dist/CallingClient/registration/index.js +19 -0
- package/dist/CallingClient/registration/index.js.map +1 -0
- package/dist/CallingClient/registration/register.js +2079 -0
- package/dist/CallingClient/registration/register.js.map +1 -0
- package/dist/CallingClient/registration/register.test.js +2476 -0
- package/dist/CallingClient/registration/register.test.js.map +1 -0
- package/dist/CallingClient/registration/registerFixtures.js +36 -0
- package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
- package/dist/CallingClient/registration/types.js +33 -0
- package/dist/CallingClient/registration/types.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.js +67 -0
- package/dist/CallingClient/registration/webWorker.js.map +1 -0
- package/dist/CallingClient/registration/webWorker.test.js +189 -0
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
- package/dist/CallingClient/registration/webWorkerStr.js +15 -0
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
- package/dist/CallingClient/types.js +14 -0
- package/dist/CallingClient/types.js.map +1 -0
- package/dist/CallingClient/utils/constants.js +58 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +221 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +435 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +999 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +70 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
- package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
- package/dist/Contacts/ContactsClient.js +1208 -0
- package/dist/Contacts/ContactsClient.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +999 -0
- package/dist/Contacts/ContactsClient.test.js.map +1 -0
- package/dist/Contacts/constants.js +40 -0
- package/dist/Contacts/constants.js.map +1 -0
- package/dist/Contacts/contactFixtures.js +430 -0
- package/dist/Contacts/contactFixtures.js.map +1 -0
- package/dist/Contacts/types.js +43 -0
- package/dist/Contacts/types.js.map +1 -0
- package/dist/Errors/catalog/CallError.js +89 -0
- package/dist/Errors/catalog/CallError.js.map +1 -0
- package/dist/Errors/catalog/CallingDeviceError.js +83 -0
- package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
- package/dist/Errors/catalog/ExtendedError.js +42 -0
- package/dist/Errors/catalog/ExtendedError.js.map +1 -0
- package/dist/Errors/catalog/LineError.js +85 -0
- package/dist/Errors/catalog/LineError.js.map +1 -0
- package/dist/Errors/index.js +28 -0
- package/dist/Errors/index.js.map +1 -0
- package/dist/Errors/types.js +61 -0
- package/dist/Errors/types.js.map +1 -0
- package/dist/Events/impl/index.js +79 -0
- package/dist/Events/impl/index.js.map +1 -0
- package/dist/Events/types.js +134 -0
- package/dist/Events/types.js.map +1 -0
- package/dist/Logger/index.js +228 -0
- package/dist/Logger/index.js.map +1 -0
- package/dist/Logger/index.test.js +87 -0
- package/dist/Logger/index.test.js.map +1 -0
- package/dist/Logger/types.js +34 -0
- package/dist/Logger/types.js.map +1 -0
- package/dist/Metrics/index.js +595 -0
- package/dist/Metrics/index.js.map +1 -0
- package/dist/Metrics/index.test.js +819 -0
- package/dist/Metrics/index.test.js.map +1 -0
- package/dist/Metrics/types.js +82 -0
- package/dist/Metrics/types.js.map +1 -0
- package/dist/SDKConnector/index.js +102 -0
- package/dist/SDKConnector/index.js.map +1 -0
- package/dist/SDKConnector/index.test.js +9 -0
- package/dist/SDKConnector/index.test.js.map +1 -0
- package/dist/SDKConnector/types.js +7 -0
- package/dist/SDKConnector/types.js.map +1 -0
- package/dist/SDKConnector/utils.js +39 -0
- package/dist/SDKConnector/utils.js.map +1 -0
- package/dist/SDKConnector/utils.test.js +9 -0
- package/dist/SDKConnector/utils.test.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.js +628 -0
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
- package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/Voicemail.js +472 -0
- package/dist/Voicemail/Voicemail.js.map +1 -0
- package/dist/Voicemail/Voicemail.test.js +391 -0
- package/dist/Voicemail/Voicemail.test.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.js +657 -0
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
- package/dist/Voicemail/constants.js +61 -0
- package/dist/Voicemail/constants.js.map +1 -0
- package/dist/Voicemail/types.js +7 -0
- package/dist/Voicemail/types.js.map +1 -0
- package/dist/Voicemail/voicemailFixture.js +524 -0
- package/dist/Voicemail/voicemailFixture.js.map +1 -0
- package/dist/api.js +213 -0
- package/dist/api.js.map +1 -0
- package/dist/common/Utils.js +1624 -0
- package/dist/common/Utils.js.map +1 -0
- package/dist/common/Utils.test.js +2225 -0
- package/dist/common/Utils.test.js.map +1 -0
- package/dist/common/constants.js +62 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/index.js +19 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/testUtil.js +988 -0
- package/dist/common/testUtil.js.map +1 -0
- package/dist/common/types.js +78 -0
- package/dist/common/types.js.map +1 -0
- package/dist/index.js +452 -0
- package/dist/index.js.map +1 -0
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +143 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/errors.test.js +20 -0
- package/dist/mobius-socket/errors.test.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +492 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +849 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1898 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +55 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallHistory/CallHistory.js +28 -17
- package/dist/module/CallRecording/CallRecording.js +56 -0
- package/dist/module/CallRecording/WxcCallRecordingConnector.js +257 -0
- package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
- package/dist/module/CallRecording/constants.js +28 -0
- package/dist/module/CallRecording/types.js +19 -0
- package/dist/module/CallRecording/utils.js +14 -0
- package/dist/module/CallingClient/CallingClient.js +166 -8
- package/dist/module/CallingClient/calling/call.js +201 -68
- package/dist/module/CallingClient/calling/callManager.js +51 -11
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +29 -0
- package/dist/module/CallingClient/line/index.js +4 -2
- package/dist/module/CallingClient/registration/register.js +274 -64
- package/dist/module/CallingClient/registration/types.js +5 -1
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +36 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +211 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +41 -0
- package/dist/module/Contacts/ContactsClient.js +1 -1
- package/dist/module/Errors/types.js +2 -0
- package/dist/module/Events/types.js +23 -10
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/api.js +3 -2
- package/dist/module/common/Utils.js +85 -22
- package/dist/module/common/testUtil.js +6 -1
- package/dist/module/common/types.js +3 -0
- package/dist/module/index.js +7 -3
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +58 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +593 -0
- package/dist/module/mobius-socket/socket/constants.js +26 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallRecording/CallRecording.d.ts +18 -0
- package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
- package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
- package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
- package/dist/types/CallRecording/constants.d.ts +29 -0
- package/dist/types/CallRecording/constants.d.ts.map +1 -0
- package/dist/types/CallRecording/types.d.ts +176 -0
- package/dist/types/CallRecording/types.d.ts.map +1 -0
- package/dist/types/CallRecording/utils.d.ts +3 -0
- package/dist/types/CallRecording/utils.d.ts.map +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +10 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +17 -3
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +8 -4
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +38 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +29 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +10 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +29 -3
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +6 -3
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +35 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +28 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +34 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Errors/types.d.ts +2 -0
- package/dist/types/Errors/types.d.ts.map +1 -1
- package/dist/types/Events/types.d.ts +80 -16
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +19 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +39 -12
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/api.d.ts +6 -4
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +9 -4
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +5 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +9 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +9 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +27 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +21 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1,3666 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
7
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
8
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
9
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
10
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
11
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.createCall = exports.Call = void 0;
|
|
15
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
16
|
+
var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
|
|
17
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
18
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
19
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
20
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
21
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
23
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
25
|
+
var _internalMediaCore = require("@webex/internal-media-core");
|
|
26
|
+
var _xstate = require("xstate");
|
|
27
|
+
var _uuid = require("uuid");
|
|
28
|
+
var _mediaHelpers = require("@webex/media-helpers");
|
|
29
|
+
var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
|
|
30
|
+
var _types = require("../../Errors/types");
|
|
31
|
+
var _Utils = require("../../common/Utils");
|
|
32
|
+
var _types2 = require("../../common/types");
|
|
33
|
+
var _CallError = require("../../Errors/catalog/CallError");
|
|
34
|
+
var _constants = require("../constants");
|
|
35
|
+
var _SDKConnector = _interopRequireDefault(require("../../SDKConnector"));
|
|
36
|
+
var _impl = require("../../Events/impl");
|
|
37
|
+
var _types3 = require("../../Events/types");
|
|
38
|
+
var _types4 = require("./types");
|
|
39
|
+
var _Logger = _interopRequireDefault(require("../../Logger"));
|
|
40
|
+
var _CallerId = require("./CallerId");
|
|
41
|
+
var _types5 = require("../../Metrics/types");
|
|
42
|
+
var _Metrics = require("../../Metrics");
|
|
43
|
+
var _constants2 = require("../../common/constants");
|
|
44
|
+
var _request = require("../utils/request");
|
|
45
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
46
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
47
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
48
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable tsdoc/syntax */ /* eslint-disable no-param-reassign */
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
*/
|
|
52
|
+
var Call = exports.Call = /*#__PURE__*/function (_Eventing) {
|
|
53
|
+
/**
|
|
54
|
+
* @ignore
|
|
55
|
+
*/
|
|
56
|
+
function Call(activeUrl, webex, direction, deviceId, lineId, deleteCb, indicator, destination, iceGatheringConfig) {
|
|
57
|
+
var _this;
|
|
58
|
+
(0, _classCallCheck2.default)(this, Call);
|
|
59
|
+
_this = _callSuper(this, Call);
|
|
60
|
+
(0, _defineProperty2.default)(_this, "sdkConnector", void 0);
|
|
61
|
+
(0, _defineProperty2.default)(_this, "webex", void 0);
|
|
62
|
+
(0, _defineProperty2.default)(_this, "destination", void 0);
|
|
63
|
+
(0, _defineProperty2.default)(_this, "direction", void 0);
|
|
64
|
+
(0, _defineProperty2.default)(_this, "callId", void 0);
|
|
65
|
+
(0, _defineProperty2.default)(_this, "correlationId", void 0);
|
|
66
|
+
(0, _defineProperty2.default)(_this, "deviceId", void 0);
|
|
67
|
+
(0, _defineProperty2.default)(_this, "lineId", void 0);
|
|
68
|
+
(0, _defineProperty2.default)(_this, "disconnectReason", void 0);
|
|
69
|
+
(0, _defineProperty2.default)(_this, "callStateMachine", void 0);
|
|
70
|
+
(0, _defineProperty2.default)(_this, "mediaStateMachine", void 0);
|
|
71
|
+
(0, _defineProperty2.default)(_this, "seq", void 0);
|
|
72
|
+
// TODO: remove later
|
|
73
|
+
/* TODO: Need to change the type from any to RoapMediaConnection */
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
+
(0, _defineProperty2.default)(_this, "mediaConnection", void 0);
|
|
76
|
+
(0, _defineProperty2.default)(_this, "earlyMedia", void 0);
|
|
77
|
+
(0, _defineProperty2.default)(_this, "connected", void 0);
|
|
78
|
+
(0, _defineProperty2.default)(_this, "mediaInactivity", void 0);
|
|
79
|
+
(0, _defineProperty2.default)(_this, "callerInfo", void 0);
|
|
80
|
+
(0, _defineProperty2.default)(_this, "localRoapMessage", void 0);
|
|
81
|
+
// Use it for new offer
|
|
82
|
+
(0, _defineProperty2.default)(_this, "mobiusUrl", void 0);
|
|
83
|
+
(0, _defineProperty2.default)(_this, "remoteRoapMessage", void 0);
|
|
84
|
+
(0, _defineProperty2.default)(_this, "deleteCb", void 0);
|
|
85
|
+
(0, _defineProperty2.default)(_this, "callerId", void 0);
|
|
86
|
+
(0, _defineProperty2.default)(_this, "sessionTimer", void 0);
|
|
87
|
+
/* Used to wait for final responses for supplementary services */
|
|
88
|
+
(0, _defineProperty2.default)(_this, "supplementaryServicesTimer", void 0);
|
|
89
|
+
(0, _defineProperty2.default)(_this, "muted", void 0);
|
|
90
|
+
(0, _defineProperty2.default)(_this, "held", void 0);
|
|
91
|
+
(0, _defineProperty2.default)(_this, "metricManager", void 0);
|
|
92
|
+
(0, _defineProperty2.default)(_this, "broadworksCorrelationInfo", void 0);
|
|
93
|
+
// Used in WxCC calls
|
|
94
|
+
(0, _defineProperty2.default)(_this, "serviceIndicator", void 0);
|
|
95
|
+
(0, _defineProperty2.default)(_this, "mediaNegotiationCompleted", void 0);
|
|
96
|
+
(0, _defineProperty2.default)(_this, "connectPending", void 0);
|
|
97
|
+
(0, _defineProperty2.default)(_this, "receivedRoapOKSeq", void 0);
|
|
98
|
+
(0, _defineProperty2.default)(_this, "localAudioStream", void 0);
|
|
99
|
+
(0, _defineProperty2.default)(_this, "rtcMetrics", void 0);
|
|
100
|
+
(0, _defineProperty2.default)(_this, "callKeepaliveRetryCount", 0);
|
|
101
|
+
(0, _defineProperty2.default)(_this, "apiRequest", void 0);
|
|
102
|
+
(0, _defineProperty2.default)(_this, "iceGatheringConfig", void 0);
|
|
103
|
+
(0, _defineProperty2.default)(_this, "handleMediaRoapEvent", /*#__PURE__*/function () {
|
|
104
|
+
var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event) {
|
|
105
|
+
var _event$roapMessage, _event$roapMessage2;
|
|
106
|
+
var mediaOk, sdpVideoPortZero, _t;
|
|
107
|
+
return _regenerator.default.wrap(function (_context) {
|
|
108
|
+
while (1) switch (_context.prev = _context.next) {
|
|
109
|
+
case 0:
|
|
110
|
+
_Logger.default.info("ROAP message to send (rcv from MEDIA-SDK) :\n \n type: ".concat((_event$roapMessage = event.roapMessage) === null || _event$roapMessage === void 0 ? void 0 : _event$roapMessage.messageType, ", seq: ").concat(event.roapMessage.seq, " , version: ").concat(event.roapMessage.version), {
|
|
111
|
+
file: _constants.CALL_FILE,
|
|
112
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
113
|
+
});
|
|
114
|
+
_Logger.default.info("SDP message to send : \n ".concat((_event$roapMessage2 = event.roapMessage) === null || _event$roapMessage2 === void 0 ? void 0 : _event$roapMessage2.sdp), {
|
|
115
|
+
file: _constants.CALL_FILE,
|
|
116
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
117
|
+
});
|
|
118
|
+
_t = event.roapMessage.messageType;
|
|
119
|
+
_context.next = _t === _types4.RoapScenario.OK ? 1 : _t === _types4.RoapScenario.OFFER ? 2 : _t === _types4.RoapScenario.ANSWER ? 4 : _t === _types4.RoapScenario.ERROR ? 6 : _t === _types4.RoapScenario.OFFER_RESPONSE ? 7 : 9;
|
|
120
|
+
break;
|
|
121
|
+
case 1:
|
|
122
|
+
mediaOk = {
|
|
123
|
+
received: false,
|
|
124
|
+
message: event.roapMessage
|
|
125
|
+
};
|
|
126
|
+
_this.sendMediaStateMachineEvt({
|
|
127
|
+
type: 'E_ROAP_OK',
|
|
128
|
+
data: mediaOk
|
|
129
|
+
});
|
|
130
|
+
return _context.abrupt("continue", 9);
|
|
131
|
+
case 2:
|
|
132
|
+
if (event.roapMessage.sdp) {
|
|
133
|
+
_context.next = 3;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
_Logger.default.warn('Received OFFER without SDP from media SDK', {
|
|
137
|
+
file: _constants.CALL_FILE,
|
|
138
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
139
|
+
});
|
|
140
|
+
return _context.abrupt("continue", 9);
|
|
141
|
+
case 3:
|
|
142
|
+
// TODO: Remove these after the Media-Core adds the fix
|
|
143
|
+
// Check if at least one IPv6 "c=" line is present
|
|
144
|
+
_Logger.default.info("before modifying sdp: ".concat(event.roapMessage.sdp), {
|
|
145
|
+
file: _constants.CALL_FILE,
|
|
146
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
147
|
+
});
|
|
148
|
+
event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
|
|
149
|
+
sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
|
|
150
|
+
_Logger.default.info("after modification sdp: ".concat(sdpVideoPortZero), {
|
|
151
|
+
file: _constants.CALL_FILE,
|
|
152
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
153
|
+
});
|
|
154
|
+
event.roapMessage.sdp = sdpVideoPortZero;
|
|
155
|
+
_this.localRoapMessage = event.roapMessage;
|
|
156
|
+
_this.sendCallStateMachineEvt({
|
|
157
|
+
type: 'E_SEND_CALL_SETUP',
|
|
158
|
+
data: event.roapMessage
|
|
159
|
+
});
|
|
160
|
+
return _context.abrupt("continue", 9);
|
|
161
|
+
case 4:
|
|
162
|
+
if (event.roapMessage.sdp) {
|
|
163
|
+
_context.next = 5;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
_Logger.default.warn('Received OFFER without SDP from media SDK', {
|
|
167
|
+
file: _constants.CALL_FILE,
|
|
168
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
169
|
+
});
|
|
170
|
+
return _context.abrupt("continue", 9);
|
|
171
|
+
case 5:
|
|
172
|
+
event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
|
|
173
|
+
_this.localRoapMessage = event.roapMessage;
|
|
174
|
+
if (_this.connectPending) {
|
|
175
|
+
_this.sendCallStateMachineEvt({
|
|
176
|
+
type: 'E_SEND_CALL_CONNECT'
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
_this.sendMediaStateMachineEvt({
|
|
180
|
+
type: 'E_SEND_ROAP_ANSWER',
|
|
181
|
+
data: event.roapMessage
|
|
182
|
+
});
|
|
183
|
+
return _context.abrupt("continue", 9);
|
|
184
|
+
case 6:
|
|
185
|
+
_this.sendMediaStateMachineEvt({
|
|
186
|
+
type: 'E_ROAP_ERROR',
|
|
187
|
+
data: event.roapMessage
|
|
188
|
+
});
|
|
189
|
+
return _context.abrupt("continue", 9);
|
|
190
|
+
case 7:
|
|
191
|
+
if (event.roapMessage.sdp) {
|
|
192
|
+
_context.next = 8;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
_Logger.default.warn('Received OFFER without SDP from media SDK', {
|
|
196
|
+
file: _constants.CALL_FILE,
|
|
197
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
198
|
+
});
|
|
199
|
+
return _context.abrupt("continue", 9);
|
|
200
|
+
case 8:
|
|
201
|
+
event.roapMessage.sdp = (0, _Utils.modifySdpForIPv4)(event.roapMessage.sdp);
|
|
202
|
+
_this.localRoapMessage = event.roapMessage;
|
|
203
|
+
if (_this.connectPending) {
|
|
204
|
+
_this.sendCallStateMachineEvt({
|
|
205
|
+
type: 'E_SEND_CALL_CONNECT'
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
_this.sendMediaStateMachineEvt({
|
|
209
|
+
type: 'E_SEND_ROAP_OFFER',
|
|
210
|
+
data: event.roapMessage
|
|
211
|
+
});
|
|
212
|
+
return _context.abrupt("continue", 9);
|
|
213
|
+
case 9:
|
|
214
|
+
case "end":
|
|
215
|
+
return _context.stop();
|
|
216
|
+
}
|
|
217
|
+
}, _callee);
|
|
218
|
+
}));
|
|
219
|
+
return function (_x) {
|
|
220
|
+
return _ref.apply(this, arguments);
|
|
221
|
+
};
|
|
222
|
+
}());
|
|
223
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
224
|
+
(0, _defineProperty2.default)(_this, "handleRemoteTrackAdded", function (event) {
|
|
225
|
+
if (event.type === _types3.MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {
|
|
226
|
+
_this.emit(_types3.CALL_EVENT_KEYS.REMOTE_MEDIA, event.track);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
(0, _defineProperty2.default)(_this, "handleIceGatheringStateChanged", function (event) {
|
|
230
|
+
var iceGatheringState = Call.getPeerConnectionStateFromEvent(event, 'iceGatheringState');
|
|
231
|
+
_Logger.default.info("ICE gathering state changed to: ".concat(iceGatheringState), {
|
|
232
|
+
file: _constants.CALL_FILE,
|
|
233
|
+
method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
|
|
234
|
+
});
|
|
235
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.ICE_GATHERING_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, iceGatheringState);
|
|
236
|
+
});
|
|
237
|
+
(0, _defineProperty2.default)(_this, "handlePeerConnectionStateChanged", function (event) {
|
|
238
|
+
var connectionState = Call.getPeerConnectionStateFromEvent(event, 'connectionState');
|
|
239
|
+
_Logger.default.info("Peer connection state changed to: ".concat(connectionState), {
|
|
240
|
+
file: _constants.CALL_FILE,
|
|
241
|
+
method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
|
|
242
|
+
});
|
|
243
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.PEER_CONNECTION_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, connectionState);
|
|
244
|
+
});
|
|
245
|
+
(0, _defineProperty2.default)(_this, "handleIceConnectionStateChanged", function (event) {
|
|
246
|
+
var iceConnectionState = Call.getPeerConnectionStateFromEvent(event, 'iceConnectionState');
|
|
247
|
+
_Logger.default.info("ICE connection state changed to: ".concat(iceConnectionState), {
|
|
248
|
+
file: _constants.CALL_FILE,
|
|
249
|
+
method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
|
|
250
|
+
});
|
|
251
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, _types5.MEDIA_CONNECTION_ACTION.ICE_CONNECTION_STATE_CHANGED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, iceConnectionState);
|
|
252
|
+
});
|
|
253
|
+
(0, _defineProperty2.default)(_this, "handleIceCandidateError", function (event) {
|
|
254
|
+
var _event$address, _event$port;
|
|
255
|
+
var iceErrorPayload = {
|
|
256
|
+
address: (_event$address = event.address) !== null && _event$address !== void 0 ? _event$address : null,
|
|
257
|
+
errorCode: event.errorCode,
|
|
258
|
+
errorText: event.errorText,
|
|
259
|
+
port: (_event$port = event.port) !== null && _event$port !== void 0 ? _event$port : null,
|
|
260
|
+
url: event.url
|
|
261
|
+
};
|
|
262
|
+
_Logger.default.warn("ICE candidate error occurred: ".concat((0, _stringify.default)(iceErrorPayload)), {
|
|
263
|
+
file: _constants.CALL_FILE,
|
|
264
|
+
method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
|
|
265
|
+
});
|
|
266
|
+
var callError = (0, _CallError.createCallError)("ICE candidate error occurred: ".concat((0, _stringify.default)(iceErrorPayload)), {
|
|
267
|
+
file: _constants.CALL_FILE,
|
|
268
|
+
method: _constants.METHODS.MEDIA_ICE_EVENTS_LISTENER
|
|
269
|
+
}, _types.ERROR_TYPE.CALL_ERROR, _this.correlationId, _types.ERROR_LAYER.MEDIA);
|
|
270
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, _types5.MEDIA_CONNECTION_ACTION.ICE_CANDIDATE_ERROR, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, undefined, callError);
|
|
271
|
+
});
|
|
272
|
+
(0, _defineProperty2.default)(_this, "handleRoapFailure", function (error) {
|
|
273
|
+
var failureMessage = error.message || 'Unknown ROAP failure received from media SDK';
|
|
274
|
+
_Logger.default.warn("ROAP failure occurred: ".concat(failureMessage), {
|
|
275
|
+
file: _constants.CALL_FILE,
|
|
276
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
277
|
+
});
|
|
278
|
+
var callError = (0, _CallError.createCallError)("ROAP failure occurred: ".concat(failureMessage), {
|
|
279
|
+
file: _constants.CALL_FILE,
|
|
280
|
+
method: _constants.METHODS.MEDIA_ROAP_EVENTS_LISTENER
|
|
281
|
+
}, _types.ERROR_TYPE.CALL_ERROR, _this.correlationId, _types.ERROR_LAYER.MEDIA);
|
|
282
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, _types5.MEDIA_CONNECTION_ACTION.ROAP_FAILURE, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined, undefined, undefined, callError);
|
|
283
|
+
});
|
|
284
|
+
(0, _defineProperty2.default)(_this, "callKeepaliveRetryCallback", function (interval) {
|
|
285
|
+
if (_this.callKeepaliveRetryCount === _constants.MAX_CALL_KEEPALIVE_RETRY_COUNT) {
|
|
286
|
+
_Logger.default.warn("Max keepalive retry attempts reached. Aborting call keepalive for callId: ".concat(_this.callId), {
|
|
287
|
+
file: _constants.CALL_FILE,
|
|
288
|
+
method: 'keepaliveRetryCallback'
|
|
289
|
+
});
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
_this.callKeepaliveRetryCount += 1;
|
|
293
|
+
setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
294
|
+
var _t2;
|
|
295
|
+
return _regenerator.default.wrap(function (_context2) {
|
|
296
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
297
|
+
case 0:
|
|
298
|
+
_context2.prev = 0;
|
|
299
|
+
_context2.next = 1;
|
|
300
|
+
return _this.postStatus();
|
|
301
|
+
case 1:
|
|
302
|
+
_this.scheduleCallKeepaliveInterval();
|
|
303
|
+
_context2.next = 3;
|
|
304
|
+
break;
|
|
305
|
+
case 2:
|
|
306
|
+
_context2.prev = 2;
|
|
307
|
+
_t2 = _context2["catch"](0);
|
|
308
|
+
_context2.next = 3;
|
|
309
|
+
return _this.handleCallKeepaliveError(_t2);
|
|
310
|
+
case 3:
|
|
311
|
+
case "end":
|
|
312
|
+
return _context2.stop();
|
|
313
|
+
}
|
|
314
|
+
}, _callee2, null, [[0, 2]]);
|
|
315
|
+
})), interval * 1000);
|
|
316
|
+
});
|
|
317
|
+
(0, _defineProperty2.default)(_this, "handleCallKeepaliveError", /*#__PURE__*/function () {
|
|
318
|
+
var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(err) {
|
|
319
|
+
var error, abort;
|
|
320
|
+
return _regenerator.default.wrap(function (_context3) {
|
|
321
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
322
|
+
case 0:
|
|
323
|
+
error = err;
|
|
324
|
+
/* We are clearing the timer here as all are error scenarios. Only scenario where
|
|
325
|
+
* timer reset won't be required is 503 with retry after. But that case will
|
|
326
|
+
* be handled automatically as Mobius will also reset timer when we post status
|
|
327
|
+
* in retry-after scenario.
|
|
328
|
+
*/
|
|
329
|
+
/* istanbul ignore next */
|
|
330
|
+
if (_this.sessionTimer) {
|
|
331
|
+
clearInterval(_this.sessionTimer);
|
|
332
|
+
}
|
|
333
|
+
_context3.next = 1;
|
|
334
|
+
return (0, _Utils.handleCallErrors)(function (callError) {
|
|
335
|
+
_this.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, callError);
|
|
336
|
+
_this.submitCallErrorMetric(callError);
|
|
337
|
+
}, _types.ERROR_LAYER.CALL_CONTROL, _this.callKeepaliveRetryCallback, _this.getCorrelationId(), error, 'handleCallEstablished', _constants.CALL_FILE);
|
|
338
|
+
case 1:
|
|
339
|
+
abort = _context3.sent;
|
|
340
|
+
if (abort) {
|
|
341
|
+
_this.sendCallStateMachineEvt({
|
|
342
|
+
type: 'E_SEND_CALL_DISCONNECT'
|
|
343
|
+
});
|
|
344
|
+
_this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, _this.getCorrelationId());
|
|
345
|
+
_this.callKeepaliveRetryCount = 0;
|
|
346
|
+
}
|
|
347
|
+
_context3.next = 2;
|
|
348
|
+
return (0, _Utils.uploadLogs)({
|
|
349
|
+
correlationId: _this.correlationId,
|
|
350
|
+
callId: _this.callId,
|
|
351
|
+
broadworksCorrelationInfo: _this.broadworksCorrelationInfo
|
|
352
|
+
});
|
|
353
|
+
case 2:
|
|
354
|
+
case "end":
|
|
355
|
+
return _context3.stop();
|
|
356
|
+
}
|
|
357
|
+
}, _callee3);
|
|
358
|
+
}));
|
|
359
|
+
return function (_x2) {
|
|
360
|
+
return _ref3.apply(this, arguments);
|
|
361
|
+
};
|
|
362
|
+
}());
|
|
363
|
+
(0, _defineProperty2.default)(_this, "scheduleCallKeepaliveInterval", function () {
|
|
364
|
+
var loggerContext = {
|
|
365
|
+
file: _constants.CALL_FILE,
|
|
366
|
+
method: 'scheduleCallKeepaliveInterval'
|
|
367
|
+
};
|
|
368
|
+
clearInterval(_this.sessionTimer);
|
|
369
|
+
_this.sessionTimer = setInterval(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
370
|
+
var res, _t3;
|
|
371
|
+
return _regenerator.default.wrap(function (_context4) {
|
|
372
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
373
|
+
case 0:
|
|
374
|
+
_context4.prev = 0;
|
|
375
|
+
_context4.next = 1;
|
|
376
|
+
return _this.postStatus();
|
|
377
|
+
case 1:
|
|
378
|
+
res = _context4.sent;
|
|
379
|
+
_Logger.default.info("Session refresh successful", loggerContext);
|
|
380
|
+
_context4.next = 3;
|
|
381
|
+
break;
|
|
382
|
+
case 2:
|
|
383
|
+
_context4.prev = 2;
|
|
384
|
+
_t3 = _context4["catch"](0);
|
|
385
|
+
_context4.next = 3;
|
|
386
|
+
return _this.handleCallKeepaliveError(_t3);
|
|
387
|
+
case 3:
|
|
388
|
+
case "end":
|
|
389
|
+
return _context4.stop();
|
|
390
|
+
}
|
|
391
|
+
}, _callee4, null, [[0, 2]]);
|
|
392
|
+
})), _constants.DEFAULT_SESSION_TIMER);
|
|
393
|
+
});
|
|
394
|
+
/**
|
|
395
|
+
* Media failed, so collect a stats report from webrtc
|
|
396
|
+
* send a webrtc telemetry dump to the configured server using the internal media core check metrics configured callback
|
|
397
|
+
* @param {String} callFrom - the function calling this function, optional.
|
|
398
|
+
* @returns {Promise<void>}
|
|
399
|
+
*/
|
|
400
|
+
(0, _defineProperty2.default)(_this, "forceSendStatsReport", /*#__PURE__*/function () {
|
|
401
|
+
var _ref6 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee5(_ref5) {
|
|
402
|
+
var callFrom, loggerContext, errorInfo, errorStatus, _t4;
|
|
403
|
+
return _regenerator.default.wrap(function (_context5) {
|
|
404
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
405
|
+
case 0:
|
|
406
|
+
callFrom = _ref5.callFrom;
|
|
407
|
+
loggerContext = {
|
|
408
|
+
file: _constants.CALL_FILE,
|
|
409
|
+
method: _constants.METHODS.FORCE_SEND_STATS_REPORT
|
|
410
|
+
};
|
|
411
|
+
_context5.prev = 1;
|
|
412
|
+
_context5.next = 2;
|
|
413
|
+
return _this.mediaConnection.forceRtcMetricsSend();
|
|
414
|
+
case 2:
|
|
415
|
+
_Logger.default.info("Successfully uploaded available webrtc telemetry statistics", loggerContext);
|
|
416
|
+
_Logger.default.info("callFrom: ".concat(callFrom), loggerContext);
|
|
417
|
+
_context5.next = 5;
|
|
418
|
+
break;
|
|
419
|
+
case 3:
|
|
420
|
+
_context5.prev = 3;
|
|
421
|
+
_t4 = _context5["catch"](1);
|
|
422
|
+
errorInfo = _t4;
|
|
423
|
+
_context5.next = 4;
|
|
424
|
+
return (0, _Utils.serviceErrorCodeHandler)(errorInfo, loggerContext);
|
|
425
|
+
case 4:
|
|
426
|
+
errorStatus = _context5.sent;
|
|
427
|
+
_Logger.default.error("Failed to upload webrtc telemetry statistics. ".concat((0, _stringify.default)(errorStatus)), loggerContext);
|
|
428
|
+
_context5.next = 5;
|
|
429
|
+
return (0, _Utils.uploadLogs)({
|
|
430
|
+
correlationId: _this.correlationId,
|
|
431
|
+
callId: _this.callId,
|
|
432
|
+
broadworksCorrelationInfo: _this.broadworksCorrelationInfo
|
|
433
|
+
});
|
|
434
|
+
case 5:
|
|
435
|
+
case "end":
|
|
436
|
+
return _context5.stop();
|
|
437
|
+
}
|
|
438
|
+
}, _callee5, null, [[1, 3]]);
|
|
439
|
+
}));
|
|
440
|
+
return function (_x3) {
|
|
441
|
+
return _ref6.apply(this, arguments);
|
|
442
|
+
};
|
|
443
|
+
}());
|
|
444
|
+
/**
|
|
445
|
+
*
|
|
446
|
+
*/
|
|
447
|
+
(0, _defineProperty2.default)(_this, "getDirection", function () {
|
|
448
|
+
return _this.direction;
|
|
449
|
+
});
|
|
450
|
+
/**
|
|
451
|
+
*
|
|
452
|
+
*/
|
|
453
|
+
(0, _defineProperty2.default)(_this, "getCallId", function () {
|
|
454
|
+
return _this.callId;
|
|
455
|
+
});
|
|
456
|
+
/**
|
|
457
|
+
*
|
|
458
|
+
*/
|
|
459
|
+
(0, _defineProperty2.default)(_this, "getCorrelationId", function () {
|
|
460
|
+
return _this.correlationId;
|
|
461
|
+
});
|
|
462
|
+
/**
|
|
463
|
+
* @param callId -.
|
|
464
|
+
*/
|
|
465
|
+
(0, _defineProperty2.default)(_this, "setCallId", function (callId) {
|
|
466
|
+
_this.callId = callId;
|
|
467
|
+
_this.rtcMetrics.updateCallId(callId);
|
|
468
|
+
_Logger.default.info("Setting callId : ".concat(_this.callId, " for correlationId: ").concat(_this.correlationId), {
|
|
469
|
+
file: _constants.CALL_FILE,
|
|
470
|
+
method: _constants.METHODS.SET_CALL_ID
|
|
471
|
+
});
|
|
472
|
+
_this.callId = callId;
|
|
473
|
+
_this.rtcMetrics.updateCallId(callId);
|
|
474
|
+
});
|
|
475
|
+
/**
|
|
476
|
+
* Gets the disconnection reason.
|
|
477
|
+
*
|
|
478
|
+
* @returns Reason.
|
|
479
|
+
*/
|
|
480
|
+
(0, _defineProperty2.default)(_this, "getDisconnectReason", function () {
|
|
481
|
+
return _this.disconnectReason;
|
|
482
|
+
});
|
|
483
|
+
/**
|
|
484
|
+
* .
|
|
485
|
+
*
|
|
486
|
+
* @param roapMessage
|
|
487
|
+
*/
|
|
488
|
+
(0, _defineProperty2.default)(_this, "post", /*#__PURE__*/function () {
|
|
489
|
+
var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee6(roapMessage) {
|
|
490
|
+
var basePayload;
|
|
491
|
+
return _regenerator.default.wrap(function (_context6) {
|
|
492
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
493
|
+
case 0:
|
|
494
|
+
basePayload = {
|
|
495
|
+
device: {
|
|
496
|
+
deviceId: _this.deviceId,
|
|
497
|
+
correlationId: _this.correlationId
|
|
498
|
+
},
|
|
499
|
+
localMedia: {
|
|
500
|
+
roap: roapMessage,
|
|
501
|
+
mediaId: (0, _uuid.v4)()
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
return _context6.abrupt("return", _this.apiRequest.makeRequest({
|
|
505
|
+
uri: "".concat(_this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(_this.deviceId, "/").concat(_constants.CALL_ENDPOINT_RESOURCE),
|
|
506
|
+
method: _types2.HTTP_METHODS.POST,
|
|
507
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
508
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, _this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
509
|
+
body: _this.destination ? _objectSpread(_objectSpread({}, basePayload), {}, {
|
|
510
|
+
callee: {
|
|
511
|
+
type: _this.destination.type,
|
|
512
|
+
address: _this.destination.address
|
|
513
|
+
}
|
|
514
|
+
}) : basePayload
|
|
515
|
+
}));
|
|
516
|
+
case 1:
|
|
517
|
+
case "end":
|
|
518
|
+
return _context6.stop();
|
|
519
|
+
}
|
|
520
|
+
}, _callee6);
|
|
521
|
+
}));
|
|
522
|
+
return function (_x4) {
|
|
523
|
+
return _ref7.apply(this, arguments);
|
|
524
|
+
};
|
|
525
|
+
}());
|
|
526
|
+
(0, _defineProperty2.default)(_this, "onEffectEnabled", function () {
|
|
527
|
+
_this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_ENABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
|
|
528
|
+
});
|
|
529
|
+
(0, _defineProperty2.default)(_this, "onEffectDisabled", function () {
|
|
530
|
+
_this.metricManager.submitBNRMetric(_types5.METRIC_EVENT.BNR_DISABLED, _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId);
|
|
531
|
+
});
|
|
532
|
+
(0, _defineProperty2.default)(_this, "updateTrack", function (audioTrack) {
|
|
533
|
+
_this.mediaConnection.updateLocalTracks({
|
|
534
|
+
audio: audioTrack
|
|
535
|
+
});
|
|
536
|
+
});
|
|
537
|
+
(0, _defineProperty2.default)(_this, "registerEffectListener", function (addedEffect) {
|
|
538
|
+
if (_this.localAudioStream) {
|
|
539
|
+
var effect = _this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
|
|
540
|
+
if (effect && effect === addedEffect) {
|
|
541
|
+
effect.on(_mediaHelpers.EffectEvent.Enabled, _this.onEffectEnabled);
|
|
542
|
+
effect.on(_mediaHelpers.EffectEvent.Disabled, _this.onEffectDisabled);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
});
|
|
546
|
+
/**
|
|
547
|
+
*
|
|
548
|
+
*/
|
|
549
|
+
(0, _defineProperty2.default)(_this, "getCallerInfo", function () {
|
|
550
|
+
return _this.callerInfo;
|
|
551
|
+
});
|
|
552
|
+
/**
|
|
553
|
+
*
|
|
554
|
+
*/
|
|
555
|
+
(0, _defineProperty2.default)(_this, "end", function () {
|
|
556
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE), {
|
|
557
|
+
file: _constants.CALL_FILE,
|
|
558
|
+
method: _constants.METHODS.END
|
|
559
|
+
});
|
|
560
|
+
_this.sendCallStateMachineEvt({
|
|
561
|
+
type: 'E_SEND_CALL_DISCONNECT'
|
|
562
|
+
});
|
|
563
|
+
});
|
|
564
|
+
/**
|
|
565
|
+
*
|
|
566
|
+
*/
|
|
567
|
+
(0, _defineProperty2.default)(_this, "doHoldResume", function () {
|
|
568
|
+
if (_this.held) {
|
|
569
|
+
_this.sendCallStateMachineEvt({
|
|
570
|
+
type: 'E_CALL_RESUME'
|
|
571
|
+
});
|
|
572
|
+
} else {
|
|
573
|
+
_this.sendCallStateMachineEvt({
|
|
574
|
+
type: 'E_CALL_HOLD'
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
});
|
|
578
|
+
/**
|
|
579
|
+
* Mutes/Unmutes the call.
|
|
580
|
+
*
|
|
581
|
+
* @param localAudioStream - The local audio stream to mute or unmute.
|
|
582
|
+
* @param muteType - Identifies if mute was triggered by system or user.
|
|
583
|
+
*
|
|
584
|
+
* @example
|
|
585
|
+
* ```javascript
|
|
586
|
+
* call.mute(localAudioStream, 'system_mute')
|
|
587
|
+
* ```
|
|
588
|
+
*/
|
|
589
|
+
(0, _defineProperty2.default)(_this, "mute", function (localAudioStream, muteType) {
|
|
590
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(muteType || 'user mute'), {
|
|
591
|
+
file: _constants.CALL_FILE,
|
|
592
|
+
method: _constants.METHODS.MUTE
|
|
593
|
+
});
|
|
594
|
+
if (!localAudioStream) {
|
|
595
|
+
_Logger.default.warn("Did not find a local stream while muting the call ".concat(_this.getCorrelationId(), "."), {
|
|
596
|
+
file: _constants.CALL_FILE,
|
|
597
|
+
method: _constants.METHODS.MUTE
|
|
598
|
+
});
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
if (muteType === _types4.MUTE_TYPE.SYSTEM) {
|
|
602
|
+
if (!localAudioStream.userMuted) {
|
|
603
|
+
_this.muted = localAudioStream.systemMuted;
|
|
604
|
+
} else {
|
|
605
|
+
_Logger.default.info("Call is muted by the user already - ".concat(_this.getCorrelationId(), "."), {
|
|
606
|
+
file: _constants.CALL_FILE,
|
|
607
|
+
method: _constants.METHODS.MUTE
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
} else if (!localAudioStream.systemMuted) {
|
|
611
|
+
localAudioStream.setUserMuted(!_this.muted);
|
|
612
|
+
_this.muted = !_this.muted;
|
|
613
|
+
} else {
|
|
614
|
+
_Logger.default.info("Call is muted on the system - ".concat(_this.getCorrelationId(), "."), {
|
|
615
|
+
file: _constants.CALL_FILE,
|
|
616
|
+
method: _constants.METHODS.MUTE
|
|
617
|
+
});
|
|
618
|
+
}
|
|
619
|
+
});
|
|
620
|
+
/**
|
|
621
|
+
* Change the audio stream of the call.
|
|
622
|
+
*
|
|
623
|
+
* @param newAudioStream - The new audio stream to be used in the call.
|
|
624
|
+
*/
|
|
625
|
+
(0, _defineProperty2.default)(_this, "updateMedia", function (newAudioStream) {
|
|
626
|
+
var localAudioTrack = newAudioStream.outputStream.getAudioTracks()[0];
|
|
627
|
+
if (!localAudioTrack) {
|
|
628
|
+
_Logger.default.warn("Did not find a local track while updating media for call ".concat(_this.getCorrelationId(), ". Will not update media"), {
|
|
629
|
+
file: _constants.CALL_FILE,
|
|
630
|
+
method: _constants.METHODS.UPDATE_MEDIA
|
|
631
|
+
});
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
try {
|
|
635
|
+
_this.mediaConnection.updateLocalTracks({
|
|
636
|
+
audio: localAudioTrack
|
|
637
|
+
});
|
|
638
|
+
_this.unregisterListeners();
|
|
639
|
+
_this.registerListeners(newAudioStream);
|
|
640
|
+
_this.localAudioStream = newAudioStream;
|
|
641
|
+
} catch (e) {
|
|
642
|
+
_Logger.default.warn("Unable to update media on call ".concat(_this.getCorrelationId(), ". Error: ").concat(e.message), {
|
|
643
|
+
file: _constants.CALL_FILE,
|
|
644
|
+
method: _constants.METHODS.UPDATE_MEDIA
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
});
|
|
648
|
+
_this.destination = destination;
|
|
649
|
+
_this.direction = direction;
|
|
650
|
+
_this.sdkConnector = _SDKConnector.default;
|
|
651
|
+
_this.deviceId = deviceId;
|
|
652
|
+
_this.serviceIndicator = indicator;
|
|
653
|
+
_this.lineId = lineId;
|
|
654
|
+
_this.iceGatheringConfig = iceGatheringConfig;
|
|
655
|
+
|
|
656
|
+
/* istanbul ignore else */
|
|
657
|
+
if (!_this.sdkConnector.getWebex()) {
|
|
658
|
+
_SDKConnector.default.setWebex(webex);
|
|
659
|
+
}
|
|
660
|
+
_this.webex = _this.sdkConnector.getWebex();
|
|
661
|
+
_this.metricManager = (0, _Metrics.getMetricManager)(_this.webex, _this.serviceIndicator);
|
|
662
|
+
_this.callId = "".concat(_constants.DEFAULT_LOCAL_CALL_ID, "_").concat((0, _uuid.v4)());
|
|
663
|
+
_this.correlationId = (0, _uuid.v4)();
|
|
664
|
+
_this.deleteCb = deleteCb;
|
|
665
|
+
_this.connected = false;
|
|
666
|
+
_this.mediaInactivity = false;
|
|
667
|
+
_this.held = false;
|
|
668
|
+
_this.earlyMedia = false;
|
|
669
|
+
_this.callerInfo = {};
|
|
670
|
+
_this.localRoapMessage = {};
|
|
671
|
+
_this.mobiusUrl = activeUrl;
|
|
672
|
+
_this.receivedRoapOKSeq = 0;
|
|
673
|
+
_this.mediaNegotiationCompleted = false;
|
|
674
|
+
_this.connectPending = false;
|
|
675
|
+
_Logger.default.info("Webex Calling Url:- ".concat(_this.mobiusUrl), {
|
|
676
|
+
file: _constants.CALL_FILE,
|
|
677
|
+
method: _constants.METHODS.CONSTRUCTOR
|
|
678
|
+
});
|
|
679
|
+
_this.seq = _constants.INITIAL_SEQ_NUMBER;
|
|
680
|
+
_this.callerId = (0, _CallerId.createCallerId)(webex, function (callerInfo) {
|
|
681
|
+
_this.callerInfo = callerInfo;
|
|
682
|
+
var emitObj = {
|
|
683
|
+
correlationId: _this.correlationId,
|
|
684
|
+
callerId: _this.callerInfo
|
|
685
|
+
};
|
|
686
|
+
_this.emit(_types3.CALL_EVENT_KEYS.CALLER_ID, emitObj);
|
|
687
|
+
});
|
|
688
|
+
_this.remoteRoapMessage = null;
|
|
689
|
+
_this.disconnectReason = {
|
|
690
|
+
code: _types4.DisconnectCode.NORMAL,
|
|
691
|
+
cause: _types4.DisconnectCause.NORMAL
|
|
692
|
+
};
|
|
693
|
+
_this.rtcMetrics = new _internalPluginMetrics.RtcMetrics(_this.webex, {
|
|
694
|
+
callId: _this.callId
|
|
695
|
+
}, _this.correlationId);
|
|
696
|
+
_this.apiRequest = _request.APIRequest.getInstance({
|
|
697
|
+
webex: _this.webex
|
|
698
|
+
});
|
|
699
|
+
var callMachine = (0, _xstate.createMachine)({
|
|
700
|
+
schema: {
|
|
701
|
+
context: {},
|
|
702
|
+
// The events this machine handles
|
|
703
|
+
events: {}
|
|
704
|
+
},
|
|
705
|
+
id: 'call-state',
|
|
706
|
+
initial: 'S_IDLE',
|
|
707
|
+
context: {},
|
|
708
|
+
states: {
|
|
709
|
+
S_IDLE: {
|
|
710
|
+
on: {
|
|
711
|
+
E_RECV_CALL_SETUP: {
|
|
712
|
+
target: 'S_RECV_CALL_SETUP',
|
|
713
|
+
actions: ['incomingCallSetup']
|
|
714
|
+
},
|
|
715
|
+
E_SEND_CALL_SETUP: {
|
|
716
|
+
target: 'S_SEND_CALL_SETUP',
|
|
717
|
+
actions: ['outgoingCallSetup']
|
|
718
|
+
},
|
|
719
|
+
E_RECV_CALL_DISCONNECT: {
|
|
720
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
721
|
+
actions: ['incomingCallDisconnect']
|
|
722
|
+
},
|
|
723
|
+
E_SEND_CALL_DISCONNECT: {
|
|
724
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
725
|
+
actions: ['outgoingCallDisconnect']
|
|
726
|
+
},
|
|
727
|
+
E_UNKNOWN: {
|
|
728
|
+
target: 'S_UNKNOWN',
|
|
729
|
+
actions: ['unknownState']
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
},
|
|
733
|
+
/* CALL SETUP */
|
|
734
|
+
S_RECV_CALL_SETUP: {
|
|
735
|
+
after: {
|
|
736
|
+
10000: {
|
|
737
|
+
target: 'S_CALL_CLEARED',
|
|
738
|
+
actions: ['triggerTimeout']
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
on: {
|
|
742
|
+
E_SEND_CALL_ALERTING: {
|
|
743
|
+
target: 'S_SEND_CALL_PROGRESS',
|
|
744
|
+
actions: ['outgoingCallAlerting']
|
|
745
|
+
},
|
|
746
|
+
E_RECV_CALL_DISCONNECT: {
|
|
747
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
748
|
+
actions: ['incomingCallDisconnect']
|
|
749
|
+
},
|
|
750
|
+
E_SEND_CALL_DISCONNECT: {
|
|
751
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
752
|
+
actions: ['outgoingCallDisconnect']
|
|
753
|
+
},
|
|
754
|
+
E_UNKNOWN: {
|
|
755
|
+
target: 'S_UNKNOWN',
|
|
756
|
+
actions: ['unknownState']
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
},
|
|
760
|
+
S_SEND_CALL_SETUP: {
|
|
761
|
+
after: {
|
|
762
|
+
10000: {
|
|
763
|
+
target: 'S_CALL_CLEARED',
|
|
764
|
+
actions: ['triggerTimeout']
|
|
765
|
+
}
|
|
766
|
+
},
|
|
767
|
+
on: {
|
|
768
|
+
E_RECV_CALL_PROGRESS: {
|
|
769
|
+
target: 'S_RECV_CALL_PROGRESS',
|
|
770
|
+
actions: ['incomingCallProgress']
|
|
771
|
+
},
|
|
772
|
+
E_RECV_CALL_CONNECT: {
|
|
773
|
+
target: 'S_RECV_CALL_CONNECT',
|
|
774
|
+
actions: ['incomingCallConnect']
|
|
775
|
+
},
|
|
776
|
+
E_RECV_CALL_DISCONNECT: {
|
|
777
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
778
|
+
actions: ['incomingCallDisconnect']
|
|
779
|
+
},
|
|
780
|
+
E_SEND_CALL_DISCONNECT: {
|
|
781
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
782
|
+
actions: ['outgoingCallDisconnect']
|
|
783
|
+
},
|
|
784
|
+
E_UNKNOWN: {
|
|
785
|
+
target: 'S_UNKNOWN',
|
|
786
|
+
actions: ['unknownState']
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
},
|
|
790
|
+
/* CALL_PROGRESS */
|
|
791
|
+
S_RECV_CALL_PROGRESS: {
|
|
792
|
+
after: {
|
|
793
|
+
60000: {
|
|
794
|
+
target: 'S_CALL_CLEARED',
|
|
795
|
+
actions: ['triggerTimeout']
|
|
796
|
+
}
|
|
797
|
+
},
|
|
798
|
+
on: {
|
|
799
|
+
E_RECV_CALL_CONNECT: {
|
|
800
|
+
target: 'S_RECV_CALL_CONNECT',
|
|
801
|
+
actions: ['incomingCallConnect']
|
|
802
|
+
},
|
|
803
|
+
E_RECV_CALL_DISCONNECT: {
|
|
804
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
805
|
+
actions: ['incomingCallDisconnect']
|
|
806
|
+
},
|
|
807
|
+
E_SEND_CALL_DISCONNECT: {
|
|
808
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
809
|
+
actions: ['outgoingCallDisconnect']
|
|
810
|
+
},
|
|
811
|
+
// Possible to have multiple E_RECV_CALL_PROGRESS events, handler should handle it
|
|
812
|
+
E_RECV_CALL_PROGRESS: {
|
|
813
|
+
target: 'S_RECV_CALL_PROGRESS',
|
|
814
|
+
actions: ['incomingCallProgress']
|
|
815
|
+
},
|
|
816
|
+
E_UNKNOWN: {
|
|
817
|
+
target: 'S_UNKNOWN',
|
|
818
|
+
actions: ['unknownState']
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
},
|
|
822
|
+
S_SEND_CALL_PROGRESS: {
|
|
823
|
+
after: {
|
|
824
|
+
60000: {
|
|
825
|
+
target: 'S_CALL_CLEARED',
|
|
826
|
+
actions: ['triggerTimeout']
|
|
827
|
+
}
|
|
828
|
+
},
|
|
829
|
+
on: {
|
|
830
|
+
E_SEND_CALL_CONNECT: {
|
|
831
|
+
target: 'S_SEND_CALL_CONNECT',
|
|
832
|
+
actions: ['outgoingCallConnect']
|
|
833
|
+
},
|
|
834
|
+
E_RECV_CALL_DISCONNECT: {
|
|
835
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
836
|
+
actions: ['incomingCallDisconnect']
|
|
837
|
+
},
|
|
838
|
+
E_SEND_CALL_DISCONNECT: {
|
|
839
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
840
|
+
actions: ['outgoingCallDisconnect']
|
|
841
|
+
},
|
|
842
|
+
E_UNKNOWN: {
|
|
843
|
+
target: 'S_UNKNOWN',
|
|
844
|
+
actions: ['unknownState']
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
},
|
|
848
|
+
/* CALL_CONNECT */
|
|
849
|
+
S_RECV_CALL_CONNECT: {
|
|
850
|
+
after: {
|
|
851
|
+
10000: {
|
|
852
|
+
target: 'S_CALL_CLEARED',
|
|
853
|
+
actions: ['triggerTimeout']
|
|
854
|
+
}
|
|
855
|
+
},
|
|
856
|
+
on: {
|
|
857
|
+
E_CALL_ESTABLISHED: {
|
|
858
|
+
target: 'S_CALL_ESTABLISHED',
|
|
859
|
+
actions: ['callEstablished']
|
|
860
|
+
},
|
|
861
|
+
E_RECV_CALL_DISCONNECT: {
|
|
862
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
863
|
+
actions: ['incomingCallDisconnect']
|
|
864
|
+
},
|
|
865
|
+
E_SEND_CALL_DISCONNECT: {
|
|
866
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
867
|
+
actions: ['outgoingCallDisconnect']
|
|
868
|
+
},
|
|
869
|
+
E_UNKNOWN: {
|
|
870
|
+
target: 'S_UNKNOWN',
|
|
871
|
+
actions: ['unknownState']
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
},
|
|
875
|
+
S_SEND_CALL_CONNECT: {
|
|
876
|
+
after: {
|
|
877
|
+
10000: {
|
|
878
|
+
target: 'S_CALL_CLEARED',
|
|
879
|
+
actions: ['triggerTimeout']
|
|
880
|
+
}
|
|
881
|
+
},
|
|
882
|
+
on: {
|
|
883
|
+
E_SEND_CALL_CONNECT: {
|
|
884
|
+
cond: function cond() {
|
|
885
|
+
return _this.connectPending;
|
|
886
|
+
},
|
|
887
|
+
target: 'S_SEND_CALL_CONNECT',
|
|
888
|
+
actions: ['outgoingCallConnect']
|
|
889
|
+
},
|
|
890
|
+
E_CALL_ESTABLISHED: {
|
|
891
|
+
target: 'S_CALL_ESTABLISHED',
|
|
892
|
+
actions: ['callEstablished']
|
|
893
|
+
},
|
|
894
|
+
E_RECV_CALL_DISCONNECT: {
|
|
895
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
896
|
+
actions: ['incomingCallDisconnect']
|
|
897
|
+
},
|
|
898
|
+
E_SEND_CALL_DISCONNECT: {
|
|
899
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
900
|
+
actions: ['outgoingCallDisconnect']
|
|
901
|
+
},
|
|
902
|
+
E_UNKNOWN: {
|
|
903
|
+
target: 'S_UNKNOWN',
|
|
904
|
+
actions: ['unknownState']
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
},
|
|
908
|
+
S_CALL_HOLD: {
|
|
909
|
+
on: {
|
|
910
|
+
E_RECV_CALL_DISCONNECT: {
|
|
911
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
912
|
+
actions: ['incomingCallDisconnect']
|
|
913
|
+
},
|
|
914
|
+
E_SEND_CALL_DISCONNECT: {
|
|
915
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
916
|
+
actions: ['outgoingCallDisconnect']
|
|
917
|
+
},
|
|
918
|
+
E_CALL_ESTABLISHED: {
|
|
919
|
+
target: 'S_CALL_ESTABLISHED',
|
|
920
|
+
actions: ['callEstablished']
|
|
921
|
+
},
|
|
922
|
+
E_UNKNOWN: {
|
|
923
|
+
target: 'S_UNKNOWN',
|
|
924
|
+
actions: ['unknownState']
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
},
|
|
928
|
+
S_CALL_RESUME: {
|
|
929
|
+
on: {
|
|
930
|
+
E_RECV_CALL_DISCONNECT: {
|
|
931
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
932
|
+
actions: ['incomingCallDisconnect']
|
|
933
|
+
},
|
|
934
|
+
E_SEND_CALL_DISCONNECT: {
|
|
935
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
936
|
+
actions: ['outgoingCallDisconnect']
|
|
937
|
+
},
|
|
938
|
+
E_CALL_ESTABLISHED: {
|
|
939
|
+
target: 'S_CALL_ESTABLISHED',
|
|
940
|
+
actions: ['callEstablished']
|
|
941
|
+
},
|
|
942
|
+
E_UNKNOWN: {
|
|
943
|
+
target: 'S_UNKNOWN',
|
|
944
|
+
actions: ['unknownState']
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
/* CALL_ESTABLISHED */
|
|
949
|
+
S_CALL_ESTABLISHED: {
|
|
950
|
+
on: {
|
|
951
|
+
E_CALL_HOLD: {
|
|
952
|
+
target: 'S_CALL_HOLD',
|
|
953
|
+
actions: ['initiateCallHold']
|
|
954
|
+
},
|
|
955
|
+
E_CALL_RESUME: {
|
|
956
|
+
target: 'S_CALL_RESUME',
|
|
957
|
+
actions: ['initiateCallResume']
|
|
958
|
+
},
|
|
959
|
+
E_RECV_CALL_DISCONNECT: {
|
|
960
|
+
target: 'S_RECV_CALL_DISCONNECT',
|
|
961
|
+
actions: ['incomingCallDisconnect']
|
|
962
|
+
},
|
|
963
|
+
E_SEND_CALL_DISCONNECT: {
|
|
964
|
+
target: 'S_SEND_CALL_DISCONNECT',
|
|
965
|
+
actions: ['outgoingCallDisconnect']
|
|
966
|
+
},
|
|
967
|
+
E_CALL_ESTABLISHED: {
|
|
968
|
+
target: 'S_CALL_ESTABLISHED',
|
|
969
|
+
actions: ['callEstablished']
|
|
970
|
+
},
|
|
971
|
+
E_UNKNOWN: {
|
|
972
|
+
target: 'S_UNKNOWN',
|
|
973
|
+
actions: ['unknownState']
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
/* CALL_DISCONNECT */
|
|
978
|
+
S_RECV_CALL_DISCONNECT: {
|
|
979
|
+
on: {
|
|
980
|
+
E_CALL_CLEARED: 'S_CALL_CLEARED'
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
S_SEND_CALL_DISCONNECT: {
|
|
984
|
+
on: {
|
|
985
|
+
E_CALL_CLEARED: 'S_CALL_CLEARED'
|
|
986
|
+
}
|
|
987
|
+
},
|
|
988
|
+
/* UNKNOWN_EVENTS */
|
|
989
|
+
S_UNKNOWN: {
|
|
990
|
+
on: {
|
|
991
|
+
E_CALL_CLEARED: 'S_CALL_CLEARED'
|
|
992
|
+
}
|
|
993
|
+
},
|
|
994
|
+
/* ERROR_EVENTS */
|
|
995
|
+
S_ERROR: {
|
|
996
|
+
on: {
|
|
997
|
+
E_CALL_CLEARED: 'S_CALL_CLEARED'
|
|
998
|
+
}
|
|
999
|
+
},
|
|
1000
|
+
/* End of our state-machine */
|
|
1001
|
+
S_CALL_CLEARED: {
|
|
1002
|
+
type: 'final'
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
}, {
|
|
1006
|
+
actions: {
|
|
1007
|
+
/**
|
|
1008
|
+
* .
|
|
1009
|
+
*
|
|
1010
|
+
* @param context
|
|
1011
|
+
* @param event
|
|
1012
|
+
*/
|
|
1013
|
+
incomingCallSetup: function incomingCallSetup(context, event) {
|
|
1014
|
+
return _this.handleIncomingCallSetup(event);
|
|
1015
|
+
},
|
|
1016
|
+
/**
|
|
1017
|
+
* .
|
|
1018
|
+
*
|
|
1019
|
+
* @param context
|
|
1020
|
+
* @param event
|
|
1021
|
+
*/
|
|
1022
|
+
outgoingCallSetup: function outgoingCallSetup(context, event) {
|
|
1023
|
+
return _this.handleOutgoingCallSetup(event);
|
|
1024
|
+
},
|
|
1025
|
+
/**
|
|
1026
|
+
* .
|
|
1027
|
+
*
|
|
1028
|
+
* @param context
|
|
1029
|
+
* @param event
|
|
1030
|
+
*/
|
|
1031
|
+
incomingCallProgress: function incomingCallProgress(context, event) {
|
|
1032
|
+
return _this.handleIncomingCallProgress(event);
|
|
1033
|
+
},
|
|
1034
|
+
/**
|
|
1035
|
+
* .
|
|
1036
|
+
*
|
|
1037
|
+
* @param context
|
|
1038
|
+
* @param event
|
|
1039
|
+
*/
|
|
1040
|
+
outgoingCallAlerting: function outgoingCallAlerting(context, event) {
|
|
1041
|
+
return _this.handleOutgoingCallAlerting(event);
|
|
1042
|
+
},
|
|
1043
|
+
/**
|
|
1044
|
+
* .
|
|
1045
|
+
*
|
|
1046
|
+
* @param context
|
|
1047
|
+
* @param event
|
|
1048
|
+
*/
|
|
1049
|
+
incomingCallConnect: function incomingCallConnect(context, event) {
|
|
1050
|
+
return _this.handleIncomingCallConnect(event);
|
|
1051
|
+
},
|
|
1052
|
+
/**
|
|
1053
|
+
* .
|
|
1054
|
+
*
|
|
1055
|
+
* @param context
|
|
1056
|
+
* @param event
|
|
1057
|
+
*/
|
|
1058
|
+
outgoingCallConnect: function outgoingCallConnect(context, event) {
|
|
1059
|
+
return _this.handleOutgoingCallConnect(event);
|
|
1060
|
+
},
|
|
1061
|
+
/**
|
|
1062
|
+
* .
|
|
1063
|
+
*
|
|
1064
|
+
* @param context
|
|
1065
|
+
* @param event
|
|
1066
|
+
*/
|
|
1067
|
+
callEstablished: function callEstablished(context, event) {
|
|
1068
|
+
return _this.handleCallEstablished(event);
|
|
1069
|
+
},
|
|
1070
|
+
/**
|
|
1071
|
+
* .
|
|
1072
|
+
*
|
|
1073
|
+
* @param context
|
|
1074
|
+
* @param event
|
|
1075
|
+
*/
|
|
1076
|
+
initiateCallHold: function initiateCallHold(context, event) {
|
|
1077
|
+
return _this.handleCallHold(event);
|
|
1078
|
+
},
|
|
1079
|
+
/**
|
|
1080
|
+
* .
|
|
1081
|
+
*
|
|
1082
|
+
* @param context
|
|
1083
|
+
* @param event
|
|
1084
|
+
*/
|
|
1085
|
+
initiateCallResume: function initiateCallResume(context, event) {
|
|
1086
|
+
return _this.handleCallResume(event);
|
|
1087
|
+
},
|
|
1088
|
+
/**
|
|
1089
|
+
* .
|
|
1090
|
+
*
|
|
1091
|
+
* @param context
|
|
1092
|
+
* @param event
|
|
1093
|
+
*/
|
|
1094
|
+
incomingCallDisconnect: function incomingCallDisconnect(context, event) {
|
|
1095
|
+
return _this.handleIncomingCallDisconnect(event);
|
|
1096
|
+
},
|
|
1097
|
+
/**
|
|
1098
|
+
* .
|
|
1099
|
+
*
|
|
1100
|
+
* @param context
|
|
1101
|
+
* @param event
|
|
1102
|
+
*/
|
|
1103
|
+
outgoingCallDisconnect: function outgoingCallDisconnect(context, event) {
|
|
1104
|
+
return _this.handleOutgoingCallDisconnect(event);
|
|
1105
|
+
},
|
|
1106
|
+
/**
|
|
1107
|
+
* .
|
|
1108
|
+
*
|
|
1109
|
+
* @param context
|
|
1110
|
+
* @param event
|
|
1111
|
+
*/
|
|
1112
|
+
unknownState: function unknownState(context, event) {
|
|
1113
|
+
return _this.handleUnknownState(event);
|
|
1114
|
+
},
|
|
1115
|
+
/**
|
|
1116
|
+
*
|
|
1117
|
+
*/
|
|
1118
|
+
triggerTimeout: function triggerTimeout() {
|
|
1119
|
+
return _this.handleTimeout();
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
var mediaMachine = (0, _xstate.createMachine)({
|
|
1124
|
+
schema: {
|
|
1125
|
+
// The context (extended state) of the machine
|
|
1126
|
+
context: {},
|
|
1127
|
+
// The events this machine handles
|
|
1128
|
+
events: {}
|
|
1129
|
+
},
|
|
1130
|
+
id: 'roap-state',
|
|
1131
|
+
initial: 'S_ROAP_IDLE',
|
|
1132
|
+
context: {},
|
|
1133
|
+
states: {
|
|
1134
|
+
S_ROAP_IDLE: {
|
|
1135
|
+
on: {
|
|
1136
|
+
E_RECV_ROAP_OFFER_REQUEST: {
|
|
1137
|
+
target: 'S_RECV_ROAP_OFFER_REQUEST',
|
|
1138
|
+
actions: ['incomingRoapOfferRequest']
|
|
1139
|
+
},
|
|
1140
|
+
E_RECV_ROAP_OFFER: {
|
|
1141
|
+
target: 'S_RECV_ROAP_OFFER',
|
|
1142
|
+
actions: ['incomingRoapOffer']
|
|
1143
|
+
},
|
|
1144
|
+
E_SEND_ROAP_OFFER: {
|
|
1145
|
+
target: 'S_SEND_ROAP_OFFER',
|
|
1146
|
+
actions: ['outgoingRoapOffer']
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
},
|
|
1150
|
+
S_RECV_ROAP_OFFER_REQUEST: {
|
|
1151
|
+
on: {
|
|
1152
|
+
E_SEND_ROAP_OFFER: {
|
|
1153
|
+
target: 'S_SEND_ROAP_OFFER',
|
|
1154
|
+
actions: ['outgoingRoapOffer']
|
|
1155
|
+
},
|
|
1156
|
+
E_ROAP_OK: {
|
|
1157
|
+
target: 'S_ROAP_OK',
|
|
1158
|
+
actions: ['roapEstablished']
|
|
1159
|
+
},
|
|
1160
|
+
E_ROAP_ERROR: {
|
|
1161
|
+
target: 'S_ROAP_ERROR',
|
|
1162
|
+
actions: ['roapError']
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
},
|
|
1166
|
+
S_RECV_ROAP_OFFER: {
|
|
1167
|
+
on: {
|
|
1168
|
+
E_SEND_ROAP_ANSWER: {
|
|
1169
|
+
target: 'S_SEND_ROAP_ANSWER',
|
|
1170
|
+
actions: ['outgoingRoapAnswer']
|
|
1171
|
+
},
|
|
1172
|
+
E_ROAP_OK: {
|
|
1173
|
+
target: 'S_ROAP_OK',
|
|
1174
|
+
actions: ['roapEstablished']
|
|
1175
|
+
},
|
|
1176
|
+
E_ROAP_ERROR: {
|
|
1177
|
+
target: 'S_ROAP_ERROR',
|
|
1178
|
+
actions: ['roapError']
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
},
|
|
1182
|
+
S_SEND_ROAP_OFFER: {
|
|
1183
|
+
on: {
|
|
1184
|
+
E_RECV_ROAP_ANSWER: {
|
|
1185
|
+
target: 'S_RECV_ROAP_ANSWER',
|
|
1186
|
+
actions: ['incomingRoapAnswer']
|
|
1187
|
+
},
|
|
1188
|
+
E_SEND_ROAP_ANSWER: {
|
|
1189
|
+
target: 'S_SEND_ROAP_ANSWER',
|
|
1190
|
+
actions: ['outgoingRoapAnswer']
|
|
1191
|
+
},
|
|
1192
|
+
E_SEND_ROAP_OFFER: {
|
|
1193
|
+
target: 'S_SEND_ROAP_OFFER',
|
|
1194
|
+
actions: ['outgoingRoapOffer']
|
|
1195
|
+
},
|
|
1196
|
+
E_ROAP_ERROR: {
|
|
1197
|
+
target: 'S_ROAP_ERROR',
|
|
1198
|
+
actions: ['roapError']
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
},
|
|
1202
|
+
S_RECV_ROAP_ANSWER: {
|
|
1203
|
+
on: {
|
|
1204
|
+
E_ROAP_OK: {
|
|
1205
|
+
target: 'S_ROAP_OK',
|
|
1206
|
+
actions: ['roapEstablished']
|
|
1207
|
+
},
|
|
1208
|
+
E_ROAP_ERROR: {
|
|
1209
|
+
target: 'S_ROAP_ERROR',
|
|
1210
|
+
actions: ['roapError']
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
},
|
|
1214
|
+
S_SEND_ROAP_ANSWER: {
|
|
1215
|
+
on: {
|
|
1216
|
+
E_RECV_ROAP_OFFER_REQUEST: {
|
|
1217
|
+
target: 'S_RECV_ROAP_OFFER_REQUEST',
|
|
1218
|
+
actions: ['incomingRoapOfferRequest']
|
|
1219
|
+
},
|
|
1220
|
+
E_RECV_ROAP_OFFER: {
|
|
1221
|
+
target: 'S_RECV_ROAP_OFFER',
|
|
1222
|
+
actions: ['incomingRoapOffer']
|
|
1223
|
+
},
|
|
1224
|
+
E_ROAP_OK: {
|
|
1225
|
+
target: 'S_ROAP_OK',
|
|
1226
|
+
actions: ['roapEstablished']
|
|
1227
|
+
},
|
|
1228
|
+
E_SEND_ROAP_ANSWER: {
|
|
1229
|
+
target: 'S_SEND_ROAP_ANSWER',
|
|
1230
|
+
actions: ['outgoingRoapAnswer']
|
|
1231
|
+
},
|
|
1232
|
+
E_ROAP_ERROR: {
|
|
1233
|
+
target: 'S_ROAP_ERROR',
|
|
1234
|
+
actions: ['roapError']
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
},
|
|
1238
|
+
S_ROAP_OK: {
|
|
1239
|
+
on: {
|
|
1240
|
+
E_RECV_ROAP_OFFER_REQUEST: {
|
|
1241
|
+
target: 'S_RECV_ROAP_OFFER_REQUEST',
|
|
1242
|
+
actions: ['incomingRoapOfferRequest']
|
|
1243
|
+
},
|
|
1244
|
+
E_RECV_ROAP_OFFER: {
|
|
1245
|
+
target: 'S_RECV_ROAP_OFFER',
|
|
1246
|
+
actions: ['incomingRoapOffer']
|
|
1247
|
+
},
|
|
1248
|
+
E_ROAP_OK: {
|
|
1249
|
+
target: 'S_ROAP_OK',
|
|
1250
|
+
actions: ['roapEstablished']
|
|
1251
|
+
},
|
|
1252
|
+
E_SEND_ROAP_OFFER: {
|
|
1253
|
+
target: 'S_SEND_ROAP_OFFER',
|
|
1254
|
+
actions: ['outgoingRoapOffer']
|
|
1255
|
+
},
|
|
1256
|
+
E_ROAP_ERROR: {
|
|
1257
|
+
target: 'S_ROAP_ERROR',
|
|
1258
|
+
actions: ['roapError']
|
|
1259
|
+
},
|
|
1260
|
+
E_ROAP_TEARDOWN: {
|
|
1261
|
+
target: 'S_ROAP_TEARDOWN'
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
},
|
|
1265
|
+
S_ROAP_ERROR: {
|
|
1266
|
+
on: {
|
|
1267
|
+
E_ROAP_TEARDOWN: {
|
|
1268
|
+
target: 'S_ROAP_TEARDOWN'
|
|
1269
|
+
},
|
|
1270
|
+
E_RECV_ROAP_OFFER_REQUEST: {
|
|
1271
|
+
target: 'S_RECV_ROAP_OFFER_REQUEST',
|
|
1272
|
+
actions: ['incomingRoapOfferRequest']
|
|
1273
|
+
},
|
|
1274
|
+
E_RECV_ROAP_OFFER: {
|
|
1275
|
+
target: 'S_RECV_ROAP_OFFER',
|
|
1276
|
+
actions: ['incomingRoapOffer']
|
|
1277
|
+
},
|
|
1278
|
+
E_RECV_ROAP_ANSWER: {
|
|
1279
|
+
target: 'S_RECV_ROAP_ANSWER',
|
|
1280
|
+
actions: ['incomingRoapAnswer']
|
|
1281
|
+
},
|
|
1282
|
+
E_ROAP_OK: {
|
|
1283
|
+
target: 'S_ROAP_OK',
|
|
1284
|
+
actions: ['roapEstablished']
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
},
|
|
1288
|
+
S_ROAP_TEARDOWN: {
|
|
1289
|
+
type: 'final'
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
}, {
|
|
1293
|
+
actions: {
|
|
1294
|
+
/**
|
|
1295
|
+
* .
|
|
1296
|
+
*
|
|
1297
|
+
* @param context -.
|
|
1298
|
+
* @param event -.
|
|
1299
|
+
*/
|
|
1300
|
+
incomingRoapOffer: function incomingRoapOffer(context, event) {
|
|
1301
|
+
return _this.handleIncomingRoapOffer(context, event);
|
|
1302
|
+
},
|
|
1303
|
+
/**
|
|
1304
|
+
* .
|
|
1305
|
+
*
|
|
1306
|
+
* @param context -.
|
|
1307
|
+
* @param event -.
|
|
1308
|
+
*/
|
|
1309
|
+
incomingRoapAnswer: function incomingRoapAnswer(context, event) {
|
|
1310
|
+
return _this.handleIncomingRoapAnswer(context, event);
|
|
1311
|
+
},
|
|
1312
|
+
/**
|
|
1313
|
+
* .
|
|
1314
|
+
*
|
|
1315
|
+
* @param context -.
|
|
1316
|
+
* @param event -.
|
|
1317
|
+
*/
|
|
1318
|
+
incomingRoapOfferRequest: function incomingRoapOfferRequest(context, event) {
|
|
1319
|
+
return _this.handleIncomingRoapOfferRequest(context, event);
|
|
1320
|
+
},
|
|
1321
|
+
/**
|
|
1322
|
+
* .
|
|
1323
|
+
*
|
|
1324
|
+
* @param context -.
|
|
1325
|
+
* @param event -.
|
|
1326
|
+
*/
|
|
1327
|
+
outgoingRoapOffer: function outgoingRoapOffer(context, event) {
|
|
1328
|
+
return _this.handleOutgoingRoapOffer(context, event);
|
|
1329
|
+
},
|
|
1330
|
+
/**
|
|
1331
|
+
* .
|
|
1332
|
+
*
|
|
1333
|
+
* @param context -.
|
|
1334
|
+
* @param event -.
|
|
1335
|
+
*/
|
|
1336
|
+
outgoingRoapAnswer: function outgoingRoapAnswer(context, event) {
|
|
1337
|
+
return _this.handleOutgoingRoapAnswer(context, event);
|
|
1338
|
+
},
|
|
1339
|
+
/**
|
|
1340
|
+
* .
|
|
1341
|
+
*
|
|
1342
|
+
* @param context -.
|
|
1343
|
+
* @param event -.
|
|
1344
|
+
*/
|
|
1345
|
+
roapEstablished: function roapEstablished(context, event) {
|
|
1346
|
+
return _this.handleRoapEstablished(context, event);
|
|
1347
|
+
},
|
|
1348
|
+
/**
|
|
1349
|
+
* .
|
|
1350
|
+
*
|
|
1351
|
+
* @param context -.
|
|
1352
|
+
* @param event -.
|
|
1353
|
+
*/
|
|
1354
|
+
roapError: function roapError(context, event) {
|
|
1355
|
+
return _this.handleRoapError(context, event);
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
});
|
|
1359
|
+
_this.callStateMachine = (0, _xstate.interpret)(callMachine).onTransition(function (state, event) {
|
|
1360
|
+
_Logger.default.log("Call StateMachine:- state=".concat(state.value, ", event=").concat((0, _stringify.default)(event.type)), {
|
|
1361
|
+
file: _constants.CALL_FILE,
|
|
1362
|
+
method: _constants.METHODS.CONSTRUCTOR
|
|
1363
|
+
});
|
|
1364
|
+
if (state.value !== 'S_UNKNOWN') {
|
|
1365
|
+
_this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, undefined);
|
|
1366
|
+
}
|
|
1367
|
+
}).start();
|
|
1368
|
+
_this.mediaStateMachine = (0, _xstate.interpret)(mediaMachine).onTransition(function (state, event) {
|
|
1369
|
+
_Logger.default.log("Media StateMachine:- state=".concat(state.value, ", event=").concat((0, _stringify.default)(event.type)), {
|
|
1370
|
+
file: _constants.CALL_FILE,
|
|
1371
|
+
method: _constants.METHODS.CONSTRUCTOR
|
|
1372
|
+
});
|
|
1373
|
+
if (state.value !== 'S_ROAP_ERROR') {
|
|
1374
|
+
var _this$remoteRoapMessa;
|
|
1375
|
+
_this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA, state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, _this.callId, _this.correlationId, _this.localRoapMessage.sdp, (_this$remoteRoapMessa = _this.remoteRoapMessage) === null || _this$remoteRoapMessa === void 0 ? void 0 : _this$remoteRoapMessa.sdp, undefined);
|
|
1376
|
+
}
|
|
1377
|
+
}).start();
|
|
1378
|
+
_this.muted = false;
|
|
1379
|
+
return _this;
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
/**
|
|
1383
|
+
* Handle incoming Call setups.
|
|
1384
|
+
*
|
|
1385
|
+
* @param event - Call Events.
|
|
1386
|
+
*/
|
|
1387
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1388
|
+
(0, _inherits2.default)(Call, _Eventing);
|
|
1389
|
+
return (0, _createClass2.default)(Call, [{
|
|
1390
|
+
key: "isMuted",
|
|
1391
|
+
value:
|
|
1392
|
+
/**
|
|
1393
|
+
* Getter to check if the call is muted or not.
|
|
1394
|
+
*
|
|
1395
|
+
* @returns - Boolean.
|
|
1396
|
+
*/
|
|
1397
|
+
function isMuted() {
|
|
1398
|
+
return this.muted;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
/**
|
|
1402
|
+
* Getter to check if the call is connected or not.
|
|
1403
|
+
*
|
|
1404
|
+
* @returns - Boolean.
|
|
1405
|
+
*/
|
|
1406
|
+
}, {
|
|
1407
|
+
key: "isConnected",
|
|
1408
|
+
value: function isConnected() {
|
|
1409
|
+
return this.connected;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
/**
|
|
1413
|
+
* Getter to check if the call is held or not.
|
|
1414
|
+
*
|
|
1415
|
+
* @returns - Boolean.
|
|
1416
|
+
*/
|
|
1417
|
+
}, {
|
|
1418
|
+
key: "isHeld",
|
|
1419
|
+
value: function isHeld() {
|
|
1420
|
+
return this.held;
|
|
1421
|
+
}
|
|
1422
|
+
}, {
|
|
1423
|
+
key: "handleIncomingCallSetup",
|
|
1424
|
+
value: function handleIncomingCallSetup(event) {
|
|
1425
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1426
|
+
file: _constants.CALL_FILE,
|
|
1427
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_SETUP
|
|
1428
|
+
});
|
|
1429
|
+
this.sendCallStateMachineEvt({
|
|
1430
|
+
type: 'E_SEND_CALL_ALERTING'
|
|
1431
|
+
});
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Handle outgoing Call setups.
|
|
1436
|
+
* The handler sends a Post Message to the remote with ROAP body
|
|
1437
|
+
* as offer. We also set the callId here based on the response received.
|
|
1438
|
+
*
|
|
1439
|
+
* @param event - Call Events.
|
|
1440
|
+
*/
|
|
1441
|
+
}, {
|
|
1442
|
+
key: "handleOutgoingCallSetup",
|
|
1443
|
+
value: (function () {
|
|
1444
|
+
var _handleOutgoingCallSetup = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee7(event) {
|
|
1445
|
+
var _this2 = this;
|
|
1446
|
+
var message, response, errData, _t5;
|
|
1447
|
+
return _regenerator.default.wrap(function (_context7) {
|
|
1448
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
1449
|
+
case 0:
|
|
1450
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1451
|
+
file: _constants.CALL_FILE,
|
|
1452
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
|
|
1453
|
+
});
|
|
1454
|
+
message = event.data;
|
|
1455
|
+
_context7.prev = 1;
|
|
1456
|
+
_context7.next = 2;
|
|
1457
|
+
return this.post(message);
|
|
1458
|
+
case 2:
|
|
1459
|
+
response = _context7.sent;
|
|
1460
|
+
_Logger.default.info("Response: ".concat((0, _stringify.default)(response)), {
|
|
1461
|
+
file: _constants.CALL_FILE,
|
|
1462
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
|
|
1463
|
+
});
|
|
1464
|
+
_Logger.default.info("Response code: ".concat(response.statusCode), {
|
|
1465
|
+
file: _constants.CALL_FILE,
|
|
1466
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
|
|
1467
|
+
});
|
|
1468
|
+
this.setCallId(response.body.callId);
|
|
1469
|
+
_Logger.default.log("Call setup successful for callId: ".concat(response.body.callId), {
|
|
1470
|
+
file: _constants.CALL_FILE,
|
|
1471
|
+
method: this.handleOutgoingCallSetup.name
|
|
1472
|
+
});
|
|
1473
|
+
_context7.next = 4;
|
|
1474
|
+
break;
|
|
1475
|
+
case 3:
|
|
1476
|
+
_context7.prev = 3;
|
|
1477
|
+
_t5 = _context7["catch"](1);
|
|
1478
|
+
_Logger.default.error("Failed to setup the call: ".concat((0, _stringify.default)(_t5)), {
|
|
1479
|
+
file: _constants.CALL_FILE,
|
|
1480
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP
|
|
1481
|
+
});
|
|
1482
|
+
errData = _t5;
|
|
1483
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
1484
|
+
_this2.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
|
|
1485
|
+
_this2.submitCallErrorMetric(error);
|
|
1486
|
+
_this2.sendCallStateMachineEvt({
|
|
1487
|
+
type: 'E_UNKNOWN',
|
|
1488
|
+
data: errData
|
|
1489
|
+
});
|
|
1490
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
1491
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1492
|
+
/* istanbul ignore next */
|
|
1493
|
+
function (interval) {
|
|
1494
|
+
return undefined;
|
|
1495
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_SETUP, _constants.CALL_FILE);
|
|
1496
|
+
_context7.next = 4;
|
|
1497
|
+
return (0, _Utils.uploadLogs)({
|
|
1498
|
+
correlationId: this.correlationId,
|
|
1499
|
+
callId: this.callId,
|
|
1500
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
1501
|
+
});
|
|
1502
|
+
case 4:
|
|
1503
|
+
case "end":
|
|
1504
|
+
return _context7.stop();
|
|
1505
|
+
}
|
|
1506
|
+
}, _callee7, this, [[1, 3]]);
|
|
1507
|
+
}));
|
|
1508
|
+
function handleOutgoingCallSetup(_x5) {
|
|
1509
|
+
return _handleOutgoingCallSetup.apply(this, arguments);
|
|
1510
|
+
}
|
|
1511
|
+
return handleOutgoingCallSetup;
|
|
1512
|
+
}()
|
|
1513
|
+
/**
|
|
1514
|
+
* Handle Call Hold.
|
|
1515
|
+
*
|
|
1516
|
+
* @param event - Call Events.
|
|
1517
|
+
*/
|
|
1518
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1519
|
+
)
|
|
1520
|
+
}, {
|
|
1521
|
+
key: "handleCallHold",
|
|
1522
|
+
value: (function () {
|
|
1523
|
+
var _handleCallHold = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee9(event) {
|
|
1524
|
+
var _this3 = this;
|
|
1525
|
+
var response, errData, _t6;
|
|
1526
|
+
return _regenerator.default.wrap(function (_context9) {
|
|
1527
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
1528
|
+
case 0:
|
|
1529
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1530
|
+
file: _constants.CALL_FILE,
|
|
1531
|
+
method: _constants.METHODS.HANDLE_CALL_HOLD
|
|
1532
|
+
});
|
|
1533
|
+
_context9.prev = 1;
|
|
1534
|
+
_context9.next = 2;
|
|
1535
|
+
return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.HOLD);
|
|
1536
|
+
case 2:
|
|
1537
|
+
response = _context9.sent;
|
|
1538
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
1539
|
+
file: _constants.CALL_FILE,
|
|
1540
|
+
method: _constants.METHODS.HANDLE_CALL_HOLD
|
|
1541
|
+
});
|
|
1542
|
+
|
|
1543
|
+
/*
|
|
1544
|
+
* Avoid setting http response timeout if held event is already
|
|
1545
|
+
* received from Mobius and forwarded towards calling client
|
|
1546
|
+
*/
|
|
1547
|
+
if (this.isHeld() === false) {
|
|
1548
|
+
this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee8() {
|
|
1549
|
+
var errorContext, callError;
|
|
1550
|
+
return _regenerator.default.wrap(function (_context8) {
|
|
1551
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
1552
|
+
case 0:
|
|
1553
|
+
errorContext = {
|
|
1554
|
+
file: _constants.CALL_FILE,
|
|
1555
|
+
method: _constants.METHODS.HANDLE_CALL_HOLD
|
|
1556
|
+
};
|
|
1557
|
+
_Logger.default.warn('Hold response timed out', {
|
|
1558
|
+
file: _constants.CALL_FILE,
|
|
1559
|
+
method: _constants.METHODS.HANDLE_CALL_HOLD
|
|
1560
|
+
});
|
|
1561
|
+
callError = (0, _CallError.createCallError)('An error occurred while placing the call on hold. Wait a moment and try again.', errorContext, _types.ERROR_TYPE.TIMEOUT, _this3.getCorrelationId(), _types.ERROR_LAYER.CALL_CONTROL);
|
|
1562
|
+
_this3.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, callError);
|
|
1563
|
+
_this3.submitCallErrorMetric(callError);
|
|
1564
|
+
case 1:
|
|
1565
|
+
case "end":
|
|
1566
|
+
return _context8.stop();
|
|
1567
|
+
}
|
|
1568
|
+
}, _callee8);
|
|
1569
|
+
})), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
|
|
1570
|
+
}
|
|
1571
|
+
_context9.next = 4;
|
|
1572
|
+
break;
|
|
1573
|
+
case 3:
|
|
1574
|
+
_context9.prev = 3;
|
|
1575
|
+
_t6 = _context9["catch"](1);
|
|
1576
|
+
_Logger.default.error("Failed to put the call on hold: ".concat((0, _stringify.default)(_t6)), {
|
|
1577
|
+
file: _constants.CALL_FILE,
|
|
1578
|
+
method: _constants.METHODS.HANDLE_CALL_HOLD
|
|
1579
|
+
});
|
|
1580
|
+
errData = _t6;
|
|
1581
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
1582
|
+
_this3.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, error);
|
|
1583
|
+
_this3.submitCallErrorMetric(error);
|
|
1584
|
+
_this3.sendCallStateMachineEvt({
|
|
1585
|
+
type: 'E_CALL_ESTABLISHED',
|
|
1586
|
+
data: errData
|
|
1587
|
+
});
|
|
1588
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
1589
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1590
|
+
/* istanbul ignore next */
|
|
1591
|
+
function (interval) {
|
|
1592
|
+
return undefined;
|
|
1593
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_HOLD, _constants.CALL_FILE);
|
|
1594
|
+
_context9.next = 4;
|
|
1595
|
+
return (0, _Utils.uploadLogs)({
|
|
1596
|
+
correlationId: this.correlationId,
|
|
1597
|
+
callId: this.callId,
|
|
1598
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
1599
|
+
});
|
|
1600
|
+
case 4:
|
|
1601
|
+
case "end":
|
|
1602
|
+
return _context9.stop();
|
|
1603
|
+
}
|
|
1604
|
+
}, _callee9, this, [[1, 3]]);
|
|
1605
|
+
}));
|
|
1606
|
+
function handleCallHold(_x6) {
|
|
1607
|
+
return _handleCallHold.apply(this, arguments);
|
|
1608
|
+
}
|
|
1609
|
+
return handleCallHold;
|
|
1610
|
+
}()
|
|
1611
|
+
/**
|
|
1612
|
+
* Handle Call Resume.
|
|
1613
|
+
*
|
|
1614
|
+
* @param event - Call Events.
|
|
1615
|
+
*/
|
|
1616
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1617
|
+
)
|
|
1618
|
+
}, {
|
|
1619
|
+
key: "handleCallResume",
|
|
1620
|
+
value: (function () {
|
|
1621
|
+
var _handleCallResume = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee1(event) {
|
|
1622
|
+
var _this4 = this;
|
|
1623
|
+
var response, errData, _t7;
|
|
1624
|
+
return _regenerator.default.wrap(function (_context1) {
|
|
1625
|
+
while (1) switch (_context1.prev = _context1.next) {
|
|
1626
|
+
case 0:
|
|
1627
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1628
|
+
file: _constants.CALL_FILE,
|
|
1629
|
+
method: _constants.METHODS.HANDLE_CALL_RESUME
|
|
1630
|
+
});
|
|
1631
|
+
_context1.prev = 1;
|
|
1632
|
+
_context1.next = 2;
|
|
1633
|
+
return this.postSSRequest(undefined, _types3.SUPPLEMENTARY_SERVICES.RESUME);
|
|
1634
|
+
case 2:
|
|
1635
|
+
response = _context1.sent;
|
|
1636
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
1637
|
+
file: _constants.CALL_FILE,
|
|
1638
|
+
method: _constants.METHODS.HANDLE_CALL_RESUME
|
|
1639
|
+
});
|
|
1640
|
+
|
|
1641
|
+
/*
|
|
1642
|
+
* Avoid setting http response timeout if connected event is already
|
|
1643
|
+
* received from Mobius on resuming the call and forwarded towards calling client
|
|
1644
|
+
*/
|
|
1645
|
+
if (this.isHeld() === true) {
|
|
1646
|
+
this.supplementaryServicesTimer = setTimeout(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee0() {
|
|
1647
|
+
var errorContext, callError;
|
|
1648
|
+
return _regenerator.default.wrap(function (_context0) {
|
|
1649
|
+
while (1) switch (_context0.prev = _context0.next) {
|
|
1650
|
+
case 0:
|
|
1651
|
+
errorContext = {
|
|
1652
|
+
file: _constants.CALL_FILE,
|
|
1653
|
+
method: _constants.METHODS.HANDLE_CALL_RESUME
|
|
1654
|
+
};
|
|
1655
|
+
_Logger.default.warn('Resume response timed out', {
|
|
1656
|
+
file: _constants.CALL_FILE,
|
|
1657
|
+
method: _constants.METHODS.HANDLE_CALL_RESUME
|
|
1658
|
+
});
|
|
1659
|
+
callError = (0, _CallError.createCallError)('An error occurred while resuming the call. Wait a moment and try again.', errorContext, _types.ERROR_TYPE.TIMEOUT, _this4.getCorrelationId(), _types.ERROR_LAYER.CALL_CONTROL);
|
|
1660
|
+
_this4.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, callError);
|
|
1661
|
+
_this4.submitCallErrorMetric(callError);
|
|
1662
|
+
case 1:
|
|
1663
|
+
case "end":
|
|
1664
|
+
return _context0.stop();
|
|
1665
|
+
}
|
|
1666
|
+
}, _callee0);
|
|
1667
|
+
})), _constants.SUPPLEMENTARY_SERVICES_TIMEOUT);
|
|
1668
|
+
}
|
|
1669
|
+
_context1.next = 4;
|
|
1670
|
+
break;
|
|
1671
|
+
case 3:
|
|
1672
|
+
_context1.prev = 3;
|
|
1673
|
+
_t7 = _context1["catch"](1);
|
|
1674
|
+
_Logger.default.error("Failed to resume the call: ".concat((0, _stringify.default)(_t7)), {
|
|
1675
|
+
file: _constants.CALL_FILE,
|
|
1676
|
+
method: _constants.METHODS.HANDLE_CALL_RESUME
|
|
1677
|
+
});
|
|
1678
|
+
errData = _t7;
|
|
1679
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
1680
|
+
_this4.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, error);
|
|
1681
|
+
_this4.submitCallErrorMetric(error);
|
|
1682
|
+
_this4.sendCallStateMachineEvt({
|
|
1683
|
+
type: 'E_CALL_ESTABLISHED',
|
|
1684
|
+
data: errData
|
|
1685
|
+
});
|
|
1686
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
1687
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1688
|
+
/* istanbul ignore next */
|
|
1689
|
+
function (interval) {
|
|
1690
|
+
return undefined;
|
|
1691
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_CALL_RESUME, _constants.CALL_FILE);
|
|
1692
|
+
_context1.next = 4;
|
|
1693
|
+
return (0, _Utils.uploadLogs)({
|
|
1694
|
+
correlationId: this.correlationId,
|
|
1695
|
+
callId: this.callId,
|
|
1696
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
1697
|
+
});
|
|
1698
|
+
case 4:
|
|
1699
|
+
case "end":
|
|
1700
|
+
return _context1.stop();
|
|
1701
|
+
}
|
|
1702
|
+
}, _callee1, this, [[1, 3]]);
|
|
1703
|
+
}));
|
|
1704
|
+
function handleCallResume(_x7) {
|
|
1705
|
+
return _handleCallResume.apply(this, arguments);
|
|
1706
|
+
}
|
|
1707
|
+
return handleCallResume;
|
|
1708
|
+
}()
|
|
1709
|
+
/**
|
|
1710
|
+
* Handle incoming Call Progress.
|
|
1711
|
+
*
|
|
1712
|
+
* @param event - Call Events.
|
|
1713
|
+
*/
|
|
1714
|
+
)
|
|
1715
|
+
}, {
|
|
1716
|
+
key: "handleIncomingCallProgress",
|
|
1717
|
+
value: function handleIncomingCallProgress(event) {
|
|
1718
|
+
var _data$callProgressDat;
|
|
1719
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1720
|
+
file: _constants.CALL_FILE,
|
|
1721
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
|
|
1722
|
+
});
|
|
1723
|
+
var data = event.data;
|
|
1724
|
+
if (data !== null && data !== void 0 && (_data$callProgressDat = data.callProgressData) !== null && _data$callProgressDat !== void 0 && _data$callProgressDat.inbandMedia) {
|
|
1725
|
+
_Logger.default.log('Inband media present. Setting Early Media flag', {
|
|
1726
|
+
file: _constants.CALL_FILE,
|
|
1727
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
|
|
1728
|
+
});
|
|
1729
|
+
this.earlyMedia = true;
|
|
1730
|
+
} else {
|
|
1731
|
+
_Logger.default.log('Inband media not present.', {
|
|
1732
|
+
file: _constants.CALL_FILE,
|
|
1733
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
|
|
1734
|
+
});
|
|
1735
|
+
}
|
|
1736
|
+
if (data !== null && data !== void 0 && data.callerId) {
|
|
1737
|
+
_Logger.default.info('Processing Caller-Id data', {
|
|
1738
|
+
file: _constants.CALL_FILE,
|
|
1739
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_PROGRESS
|
|
1740
|
+
});
|
|
1741
|
+
this.startCallerIdResolution(data.callerId);
|
|
1742
|
+
}
|
|
1743
|
+
this.emit(_types3.CALL_EVENT_KEYS.PROGRESS, this.correlationId);
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
/**
|
|
1747
|
+
* Handle incoming Call Progress.
|
|
1748
|
+
*
|
|
1749
|
+
* @param context
|
|
1750
|
+
* @param event - Roap Events.
|
|
1751
|
+
*/
|
|
1752
|
+
}, {
|
|
1753
|
+
key: "handleIncomingRoapOfferRequest",
|
|
1754
|
+
value: function handleIncomingRoapOfferRequest(context, event) {
|
|
1755
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1756
|
+
file: _constants.CALL_FILE,
|
|
1757
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
|
|
1758
|
+
});
|
|
1759
|
+
var message = event.data;
|
|
1760
|
+
if (!this.mediaConnection) {
|
|
1761
|
+
_Logger.default.info('Media connection is not up, buffer the remote Offer Request for later handling', {
|
|
1762
|
+
file: _constants.CALL_FILE,
|
|
1763
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
|
|
1764
|
+
});
|
|
1765
|
+
this.seq = message.seq;
|
|
1766
|
+
_Logger.default.info("Setting Sequence No: ".concat(this.seq), {
|
|
1767
|
+
file: _constants.CALL_FILE,
|
|
1768
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
|
|
1769
|
+
});
|
|
1770
|
+
this.remoteRoapMessage = message;
|
|
1771
|
+
} else if (this.receivedRoapOKSeq === message.seq - 2) {
|
|
1772
|
+
_Logger.default.info('Waiting for Roap OK, buffer the remote Offer Request for later handling', {
|
|
1773
|
+
file: _constants.CALL_FILE,
|
|
1774
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER_REQUEST
|
|
1775
|
+
});
|
|
1776
|
+
this.remoteRoapMessage = message;
|
|
1777
|
+
} else {
|
|
1778
|
+
message.seq = this.seq + 1;
|
|
1779
|
+
this.seq = message.seq;
|
|
1780
|
+
this.mediaConnection.roapMessageReceived(message);
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
|
|
1784
|
+
/**
|
|
1785
|
+
* Handle Outgoing Call Progress.
|
|
1786
|
+
*
|
|
1787
|
+
* @param event - Call Events.
|
|
1788
|
+
*/
|
|
1789
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1790
|
+
}, {
|
|
1791
|
+
key: "handleOutgoingCallAlerting",
|
|
1792
|
+
value: (function () {
|
|
1793
|
+
var _handleOutgoingCallAlerting = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee10(event) {
|
|
1794
|
+
var _this5 = this;
|
|
1795
|
+
var res, errData, _t8;
|
|
1796
|
+
return _regenerator.default.wrap(function (_context10) {
|
|
1797
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
1798
|
+
case 0:
|
|
1799
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1800
|
+
file: _constants.CALL_FILE,
|
|
1801
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
|
|
1802
|
+
});
|
|
1803
|
+
_context10.prev = 1;
|
|
1804
|
+
_context10.next = 2;
|
|
1805
|
+
return this.patch(_types4.MobiusCallState.ALERTING);
|
|
1806
|
+
case 2:
|
|
1807
|
+
res = _context10.sent;
|
|
1808
|
+
_Logger.default.log("PATCH response: ".concat(res.statusCode), {
|
|
1809
|
+
file: _constants.CALL_FILE,
|
|
1810
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
|
|
1811
|
+
});
|
|
1812
|
+
_context10.next = 4;
|
|
1813
|
+
break;
|
|
1814
|
+
case 3:
|
|
1815
|
+
_context10.prev = 3;
|
|
1816
|
+
_t8 = _context10["catch"](1);
|
|
1817
|
+
_Logger.default.error("Failed to signal call progression: ".concat((0, _stringify.default)(_t8)), {
|
|
1818
|
+
file: _constants.CALL_FILE,
|
|
1819
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING
|
|
1820
|
+
});
|
|
1821
|
+
errData = _t8;
|
|
1822
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
1823
|
+
_this5.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
|
|
1824
|
+
_this5.submitCallErrorMetric(error);
|
|
1825
|
+
_this5.sendCallStateMachineEvt({
|
|
1826
|
+
type: 'E_UNKNOWN',
|
|
1827
|
+
data: errData
|
|
1828
|
+
});
|
|
1829
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
1830
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1831
|
+
/* istanbul ignore next */
|
|
1832
|
+
function (interval) {
|
|
1833
|
+
return undefined;
|
|
1834
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_ALERTING, _constants.CALL_FILE);
|
|
1835
|
+
_context10.next = 4;
|
|
1836
|
+
return (0, _Utils.uploadLogs)({
|
|
1837
|
+
correlationId: this.correlationId,
|
|
1838
|
+
callId: this.callId,
|
|
1839
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
1840
|
+
});
|
|
1841
|
+
case 4:
|
|
1842
|
+
case "end":
|
|
1843
|
+
return _context10.stop();
|
|
1844
|
+
}
|
|
1845
|
+
}, _callee10, this, [[1, 3]]);
|
|
1846
|
+
}));
|
|
1847
|
+
function handleOutgoingCallAlerting(_x8) {
|
|
1848
|
+
return _handleOutgoingCallAlerting.apply(this, arguments);
|
|
1849
|
+
}
|
|
1850
|
+
return handleOutgoingCallAlerting;
|
|
1851
|
+
}()
|
|
1852
|
+
/**
|
|
1853
|
+
* Handle incoming Call Connect.
|
|
1854
|
+
*
|
|
1855
|
+
* @param event - Call Events.
|
|
1856
|
+
*/
|
|
1857
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1858
|
+
)
|
|
1859
|
+
}, {
|
|
1860
|
+
key: "handleIncomingCallConnect",
|
|
1861
|
+
value: function handleIncomingCallConnect(event) {
|
|
1862
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1863
|
+
file: _constants.CALL_FILE,
|
|
1864
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_CONNECT
|
|
1865
|
+
});
|
|
1866
|
+
this.emit(_types3.CALL_EVENT_KEYS.CONNECT, this.correlationId);
|
|
1867
|
+
|
|
1868
|
+
/* In case of Early Media , media negotiations would have already started
|
|
1869
|
+
* So we can directly go to call established state */
|
|
1870
|
+
|
|
1871
|
+
if (this.earlyMedia || this.mediaNegotiationCompleted) {
|
|
1872
|
+
this.mediaNegotiationCompleted = false;
|
|
1873
|
+
this.sendCallStateMachineEvt({
|
|
1874
|
+
type: 'E_CALL_ESTABLISHED'
|
|
1875
|
+
});
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
/**
|
|
1880
|
+
* Handle outgoing Call Connect.
|
|
1881
|
+
*
|
|
1882
|
+
* @param event - Call Events.
|
|
1883
|
+
*/
|
|
1884
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1885
|
+
}, {
|
|
1886
|
+
key: "handleOutgoingCallConnect",
|
|
1887
|
+
value: (function () {
|
|
1888
|
+
var _handleOutgoingCallConnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(event) {
|
|
1889
|
+
var _this6 = this;
|
|
1890
|
+
var res, errData, _t9;
|
|
1891
|
+
return _regenerator.default.wrap(function (_context11) {
|
|
1892
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
1893
|
+
case 0:
|
|
1894
|
+
this.connectPending = false;
|
|
1895
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1896
|
+
file: _constants.CALL_FILE,
|
|
1897
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
|
|
1898
|
+
});
|
|
1899
|
+
|
|
1900
|
+
/* We should have received an Offer by now */
|
|
1901
|
+
if (this.remoteRoapMessage) {
|
|
1902
|
+
_context11.next = 1;
|
|
1903
|
+
break;
|
|
1904
|
+
}
|
|
1905
|
+
_Logger.default.warn('Offer not yet received from remote end... Exiting', {
|
|
1906
|
+
file: _constants.CALL_FILE,
|
|
1907
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
|
|
1908
|
+
});
|
|
1909
|
+
this.connectPending = true;
|
|
1910
|
+
return _context11.abrupt("return");
|
|
1911
|
+
case 1:
|
|
1912
|
+
_context11.prev = 1;
|
|
1913
|
+
/* Start Offer/Answer as we might have buffered the offer by now */
|
|
1914
|
+
this.mediaConnection.roapMessageReceived(this.remoteRoapMessage);
|
|
1915
|
+
|
|
1916
|
+
/* send call_connect PATCH */
|
|
1917
|
+
_context11.next = 2;
|
|
1918
|
+
return this.patch(_types4.MobiusCallState.CONNECTED);
|
|
1919
|
+
case 2:
|
|
1920
|
+
res = _context11.sent;
|
|
1921
|
+
_Logger.default.log("PATCH response: ".concat(res.statusCode), {
|
|
1922
|
+
file: _constants.CALL_FILE,
|
|
1923
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
|
|
1924
|
+
});
|
|
1925
|
+
_context11.next = 4;
|
|
1926
|
+
break;
|
|
1927
|
+
case 3:
|
|
1928
|
+
_context11.prev = 3;
|
|
1929
|
+
_t9 = _context11["catch"](1);
|
|
1930
|
+
_Logger.default.error("Failed to connect the call: ".concat((0, _stringify.default)(_t9)), {
|
|
1931
|
+
file: _constants.CALL_FILE,
|
|
1932
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT
|
|
1933
|
+
});
|
|
1934
|
+
errData = _t9;
|
|
1935
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
1936
|
+
_this6.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
|
|
1937
|
+
_this6.submitCallErrorMetric(error);
|
|
1938
|
+
_this6.sendCallStateMachineEvt({
|
|
1939
|
+
type: 'E_UNKNOWN',
|
|
1940
|
+
data: errData
|
|
1941
|
+
});
|
|
1942
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
1943
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1944
|
+
/* istanbul ignore next */
|
|
1945
|
+
function (interval) {
|
|
1946
|
+
return undefined;
|
|
1947
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_CALL_CONNECT, _constants.CALL_FILE);
|
|
1948
|
+
_context11.next = 4;
|
|
1949
|
+
return (0, _Utils.uploadLogs)({
|
|
1950
|
+
correlationId: this.correlationId,
|
|
1951
|
+
callId: this.callId,
|
|
1952
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
1953
|
+
});
|
|
1954
|
+
case 4:
|
|
1955
|
+
case "end":
|
|
1956
|
+
return _context11.stop();
|
|
1957
|
+
}
|
|
1958
|
+
}, _callee11, this, [[1, 3]]);
|
|
1959
|
+
}));
|
|
1960
|
+
function handleOutgoingCallConnect(_x9) {
|
|
1961
|
+
return _handleOutgoingCallConnect.apply(this, arguments);
|
|
1962
|
+
}
|
|
1963
|
+
return handleOutgoingCallConnect;
|
|
1964
|
+
}()
|
|
1965
|
+
/**
|
|
1966
|
+
* Handle incoming Call Disconnect.
|
|
1967
|
+
*
|
|
1968
|
+
* @param event - Call Events.
|
|
1969
|
+
*/
|
|
1970
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1971
|
+
)
|
|
1972
|
+
}, {
|
|
1973
|
+
key: "handleIncomingCallDisconnect",
|
|
1974
|
+
value: (function () {
|
|
1975
|
+
var _handleIncomingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(event) {
|
|
1976
|
+
var response, _t0;
|
|
1977
|
+
return _regenerator.default.wrap(function (_context12) {
|
|
1978
|
+
while (1) switch (_context12.prev = _context12.next) {
|
|
1979
|
+
case 0:
|
|
1980
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
1981
|
+
file: _constants.CALL_FILE,
|
|
1982
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
|
|
1983
|
+
});
|
|
1984
|
+
this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.correlationId);
|
|
1985
|
+
this.setDisconnectReason();
|
|
1986
|
+
_context12.prev = 1;
|
|
1987
|
+
_context12.next = 2;
|
|
1988
|
+
return this.delete();
|
|
1989
|
+
case 2:
|
|
1990
|
+
response = _context12.sent;
|
|
1991
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
1992
|
+
file: _constants.CALL_FILE,
|
|
1993
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
|
|
1994
|
+
});
|
|
1995
|
+
_context12.next = 4;
|
|
1996
|
+
break;
|
|
1997
|
+
case 3:
|
|
1998
|
+
_context12.prev = 3;
|
|
1999
|
+
_t0 = _context12["catch"](1);
|
|
2000
|
+
_Logger.default.warn("Failed to delete the call: ".concat((0, _stringify.default)(_t0)), {
|
|
2001
|
+
file: _constants.CALL_FILE,
|
|
2002
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
|
|
2003
|
+
});
|
|
2004
|
+
(0, _Utils.uploadLogs)({
|
|
2005
|
+
correlationId: this.correlationId,
|
|
2006
|
+
callId: this.callId,
|
|
2007
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2008
|
+
});
|
|
2009
|
+
case 4:
|
|
2010
|
+
this.deleteCb(this.correlationId);
|
|
2011
|
+
|
|
2012
|
+
/* Clear the stream listeners */
|
|
2013
|
+
this.unregisterListeners();
|
|
2014
|
+
|
|
2015
|
+
/* istanbul ignore else */
|
|
2016
|
+
if (this.sessionTimer) {
|
|
2017
|
+
clearInterval(this.sessionTimer);
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
/* istanbul ignore else */
|
|
2021
|
+
if (this.mediaConnection) {
|
|
2022
|
+
this.unregisterMediaConnectionListeners();
|
|
2023
|
+
this.mediaConnection.close();
|
|
2024
|
+
_Logger.default.info('Closing media channel', {
|
|
2025
|
+
file: _constants.CALL_FILE,
|
|
2026
|
+
method: _constants.METHODS.HANDLE_INCOMING_CALL_DISCONNECT
|
|
2027
|
+
});
|
|
2028
|
+
}
|
|
2029
|
+
this.sendMediaStateMachineEvt({
|
|
2030
|
+
type: 'E_ROAP_TEARDOWN'
|
|
2031
|
+
});
|
|
2032
|
+
this.sendCallStateMachineEvt({
|
|
2033
|
+
type: 'E_CALL_CLEARED'
|
|
2034
|
+
});
|
|
2035
|
+
case 5:
|
|
2036
|
+
case "end":
|
|
2037
|
+
return _context12.stop();
|
|
2038
|
+
}
|
|
2039
|
+
}, _callee12, this, [[1, 3]]);
|
|
2040
|
+
}));
|
|
2041
|
+
function handleIncomingCallDisconnect(_x0) {
|
|
2042
|
+
return _handleIncomingCallDisconnect.apply(this, arguments);
|
|
2043
|
+
}
|
|
2044
|
+
return handleIncomingCallDisconnect;
|
|
2045
|
+
}()
|
|
2046
|
+
/**
|
|
2047
|
+
* Handle outgoing Call Disconnect.
|
|
2048
|
+
*
|
|
2049
|
+
* @param event - Call Events.
|
|
2050
|
+
*/
|
|
2051
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2052
|
+
)
|
|
2053
|
+
}, {
|
|
2054
|
+
key: "handleOutgoingCallDisconnect",
|
|
2055
|
+
value: (function () {
|
|
2056
|
+
var _handleOutgoingCallDisconnect = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(event) {
|
|
2057
|
+
var response, _t1;
|
|
2058
|
+
return _regenerator.default.wrap(function (_context13) {
|
|
2059
|
+
while (1) switch (_context13.prev = _context13.next) {
|
|
2060
|
+
case 0:
|
|
2061
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2062
|
+
file: _constants.CALL_FILE,
|
|
2063
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
|
|
2064
|
+
});
|
|
2065
|
+
this.setDisconnectReason();
|
|
2066
|
+
_context13.prev = 1;
|
|
2067
|
+
_context13.next = 2;
|
|
2068
|
+
return this.delete();
|
|
2069
|
+
case 2:
|
|
2070
|
+
response = _context13.sent;
|
|
2071
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
2072
|
+
file: _constants.CALL_FILE,
|
|
2073
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
|
|
2074
|
+
});
|
|
2075
|
+
_Logger.default.log("Call disconnected successfully: ".concat(this.correlationId), {
|
|
2076
|
+
file: _constants.CALL_FILE,
|
|
2077
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
|
|
2078
|
+
});
|
|
2079
|
+
_context13.next = 4;
|
|
2080
|
+
break;
|
|
2081
|
+
case 3:
|
|
2082
|
+
_context13.prev = 3;
|
|
2083
|
+
_t1 = _context13["catch"](1);
|
|
2084
|
+
_Logger.default.warn('Failed to delete the call', {
|
|
2085
|
+
file: _constants.CALL_FILE,
|
|
2086
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
|
|
2087
|
+
});
|
|
2088
|
+
(0, _Utils.uploadLogs)({
|
|
2089
|
+
correlationId: this.correlationId,
|
|
2090
|
+
callId: this.callId,
|
|
2091
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2092
|
+
});
|
|
2093
|
+
case 4:
|
|
2094
|
+
this.deleteCb(this.correlationId);
|
|
2095
|
+
|
|
2096
|
+
/* Clear the stream listeners */
|
|
2097
|
+
this.unregisterListeners();
|
|
2098
|
+
|
|
2099
|
+
/* istanbul ignore else */
|
|
2100
|
+
if (this.sessionTimer) {
|
|
2101
|
+
clearInterval(this.sessionTimer);
|
|
2102
|
+
}
|
|
2103
|
+
|
|
2104
|
+
/* istanbul ignore else */
|
|
2105
|
+
if (this.mediaConnection) {
|
|
2106
|
+
this.unregisterMediaConnectionListeners();
|
|
2107
|
+
this.mediaConnection.close();
|
|
2108
|
+
_Logger.default.info('Closing media channel', {
|
|
2109
|
+
file: _constants.CALL_FILE,
|
|
2110
|
+
method: _constants.METHODS.HANDLE_OUTGOING_CALL_DISCONNECT
|
|
2111
|
+
});
|
|
2112
|
+
}
|
|
2113
|
+
this.sendMediaStateMachineEvt({
|
|
2114
|
+
type: 'E_ROAP_TEARDOWN'
|
|
2115
|
+
});
|
|
2116
|
+
this.sendCallStateMachineEvt({
|
|
2117
|
+
type: 'E_CALL_CLEARED'
|
|
2118
|
+
});
|
|
2119
|
+
case 5:
|
|
2120
|
+
case "end":
|
|
2121
|
+
return _context13.stop();
|
|
2122
|
+
}
|
|
2123
|
+
}, _callee13, this, [[1, 3]]);
|
|
2124
|
+
}));
|
|
2125
|
+
function handleOutgoingCallDisconnect(_x1) {
|
|
2126
|
+
return _handleOutgoingCallDisconnect.apply(this, arguments);
|
|
2127
|
+
}
|
|
2128
|
+
return handleOutgoingCallDisconnect;
|
|
2129
|
+
}())
|
|
2130
|
+
}, {
|
|
2131
|
+
key: "handleCallEstablished",
|
|
2132
|
+
value:
|
|
2133
|
+
/**
|
|
2134
|
+
* Handle Call Established - Roap related negotiations.
|
|
2135
|
+
*
|
|
2136
|
+
* @param event - Call Events.
|
|
2137
|
+
*/
|
|
2138
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2139
|
+
function handleCallEstablished(event) {
|
|
2140
|
+
var loggerContext = {
|
|
2141
|
+
file: _constants.CALL_FILE,
|
|
2142
|
+
method: _constants.METHODS.HANDLE_CALL_ESTABLISHED
|
|
2143
|
+
};
|
|
2144
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), loggerContext);
|
|
2145
|
+
this.emit(_types3.CALL_EVENT_KEYS.ESTABLISHED, this.correlationId);
|
|
2146
|
+
|
|
2147
|
+
/* Reset Early dialog parameters */
|
|
2148
|
+
this.earlyMedia = false;
|
|
2149
|
+
this.connected = true;
|
|
2150
|
+
this.scheduleCallKeepaliveInterval();
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
/**
|
|
2154
|
+
* Handle Unknown events.
|
|
2155
|
+
*
|
|
2156
|
+
* @param event - Call Events.
|
|
2157
|
+
*/
|
|
2158
|
+
}, {
|
|
2159
|
+
key: "handleUnknownState",
|
|
2160
|
+
value: (function () {
|
|
2161
|
+
var _handleUnknownState = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee14(event) {
|
|
2162
|
+
var eventData, response, _t10;
|
|
2163
|
+
return _regenerator.default.wrap(function (_context14) {
|
|
2164
|
+
while (1) switch (_context14.prev = _context14.next) {
|
|
2165
|
+
case 0:
|
|
2166
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2167
|
+
file: _constants.CALL_FILE,
|
|
2168
|
+
method: _constants.METHODS.HANDLE_UNKNOWN_STATE
|
|
2169
|
+
});
|
|
2170
|
+
|
|
2171
|
+
/* We are handling errors at the source , in this state we just log and
|
|
2172
|
+
* clear the resources
|
|
2173
|
+
*/
|
|
2174
|
+
eventData = event.data;
|
|
2175
|
+
if (!(eventData !== null && eventData !== void 0 && eventData.media)) {
|
|
2176
|
+
_Logger.default.warn('Call failed due to signalling issue', {
|
|
2177
|
+
file: _constants.CALL_FILE,
|
|
2178
|
+
method: _constants.METHODS.HANDLE_UNKNOWN_STATE
|
|
2179
|
+
});
|
|
2180
|
+
}
|
|
2181
|
+
|
|
2182
|
+
/* We need to clear the call at Mobius too. For delete failure
|
|
2183
|
+
* error handling is not required
|
|
2184
|
+
*/
|
|
2185
|
+
_context14.prev = 1;
|
|
2186
|
+
this.setDisconnectReason();
|
|
2187
|
+
_context14.next = 2;
|
|
2188
|
+
return this.delete();
|
|
2189
|
+
case 2:
|
|
2190
|
+
response = _context14.sent;
|
|
2191
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
2192
|
+
file: _constants.CALL_FILE,
|
|
2193
|
+
method: _constants.METHODS.HANDLE_UNKNOWN_STATE
|
|
2194
|
+
});
|
|
2195
|
+
_context14.next = 4;
|
|
2196
|
+
break;
|
|
2197
|
+
case 3:
|
|
2198
|
+
_context14.prev = 3;
|
|
2199
|
+
_t10 = _context14["catch"](1);
|
|
2200
|
+
_Logger.default.warn('Failed to delete the call', {
|
|
2201
|
+
file: _constants.CALL_FILE,
|
|
2202
|
+
method: _constants.METHODS.HANDLE_UNKNOWN_STATE
|
|
2203
|
+
});
|
|
2204
|
+
(0, _Utils.uploadLogs)({
|
|
2205
|
+
correlationId: this.correlationId,
|
|
2206
|
+
callId: this.callId,
|
|
2207
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2208
|
+
});
|
|
2209
|
+
case 4:
|
|
2210
|
+
this.deleteCb(this.correlationId);
|
|
2211
|
+
if (this.sessionTimer) {
|
|
2212
|
+
clearInterval(this.sessionTimer);
|
|
2213
|
+
}
|
|
2214
|
+
if (this.mediaConnection) {
|
|
2215
|
+
this.unregisterMediaConnectionListeners();
|
|
2216
|
+
this.mediaConnection.close();
|
|
2217
|
+
_Logger.default.info('Closing media channel', {
|
|
2218
|
+
file: _constants.CALL_FILE,
|
|
2219
|
+
method: _constants.METHODS.HANDLE_UNKNOWN_STATE
|
|
2220
|
+
});
|
|
2221
|
+
}
|
|
2222
|
+
this.sendMediaStateMachineEvt({
|
|
2223
|
+
type: 'E_ROAP_TEARDOWN'
|
|
2224
|
+
});
|
|
2225
|
+
this.sendCallStateMachineEvt({
|
|
2226
|
+
type: 'E_CALL_CLEARED'
|
|
2227
|
+
});
|
|
2228
|
+
case 5:
|
|
2229
|
+
case "end":
|
|
2230
|
+
return _context14.stop();
|
|
2231
|
+
}
|
|
2232
|
+
}, _callee14, this, [[1, 3]]);
|
|
2233
|
+
}));
|
|
2234
|
+
function handleUnknownState(_x10) {
|
|
2235
|
+
return _handleUnknownState.apply(this, arguments);
|
|
2236
|
+
}
|
|
2237
|
+
return handleUnknownState;
|
|
2238
|
+
}()
|
|
2239
|
+
/**
|
|
2240
|
+
* Returns an error emitter callback method for handleCallErrors which can be used during
|
|
2241
|
+
* midcall and call setup scenarios.
|
|
2242
|
+
* Emits Call errors for UI Client
|
|
2243
|
+
* Sends call error metrics
|
|
2244
|
+
* Handles further state machine changes.
|
|
2245
|
+
*
|
|
2246
|
+
* @param errData - Instance of CallError.
|
|
2247
|
+
*/
|
|
2248
|
+
)
|
|
2249
|
+
}, {
|
|
2250
|
+
key: "getEmitterCallback",
|
|
2251
|
+
value: function getEmitterCallback(errData) {
|
|
2252
|
+
var _this7 = this;
|
|
2253
|
+
return function (error) {
|
|
2254
|
+
switch (_this7.callStateMachine.state.value) {
|
|
2255
|
+
case 'S_CALL_HOLD':
|
|
2256
|
+
_this7.emit(_types3.CALL_EVENT_KEYS.HOLD_ERROR, error);
|
|
2257
|
+
if (_this7.supplementaryServicesTimer) {
|
|
2258
|
+
clearTimeout(_this7.supplementaryServicesTimer);
|
|
2259
|
+
_this7.supplementaryServicesTimer = undefined;
|
|
2260
|
+
}
|
|
2261
|
+
_this7.submitCallErrorMetric(error);
|
|
2262
|
+
_this7.sendCallStateMachineEvt({
|
|
2263
|
+
type: 'E_CALL_ESTABLISHED',
|
|
2264
|
+
data: errData
|
|
2265
|
+
});
|
|
2266
|
+
return;
|
|
2267
|
+
case 'S_CALL_RESUME':
|
|
2268
|
+
_this7.emit(_types3.CALL_EVENT_KEYS.RESUME_ERROR, error);
|
|
2269
|
+
_this7.submitCallErrorMetric(error);
|
|
2270
|
+
_this7.sendCallStateMachineEvt({
|
|
2271
|
+
type: 'E_CALL_ESTABLISHED',
|
|
2272
|
+
data: errData
|
|
2273
|
+
});
|
|
2274
|
+
return;
|
|
2275
|
+
default:
|
|
2276
|
+
_this7.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
|
|
2277
|
+
_this7.submitCallErrorMetric(error);
|
|
2278
|
+
/* Disconnect call if it's not a midcall case */
|
|
2279
|
+
/* istanbul ignore else */
|
|
2280
|
+
if (!_this7.connected) {
|
|
2281
|
+
_this7.sendMediaStateMachineEvt({
|
|
2282
|
+
type: 'E_ROAP_ERROR',
|
|
2283
|
+
data: errData
|
|
2284
|
+
});
|
|
2285
|
+
}
|
|
2286
|
+
}
|
|
2287
|
+
};
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
/**
|
|
2291
|
+
* Handle Roap Established events.
|
|
2292
|
+
*
|
|
2293
|
+
* For outbound MediaOk , the message will be truthy as we need to send ROAP OK .
|
|
2294
|
+
* For inbound MediaOK , we report it to Media-SDK and transition our state.
|
|
2295
|
+
* Both the cases should transition to Call Established state.
|
|
2296
|
+
*
|
|
2297
|
+
* @param context -.
|
|
2298
|
+
* @param event - Roap Events.
|
|
2299
|
+
*/
|
|
2300
|
+
}, {
|
|
2301
|
+
key: "handleRoapEstablished",
|
|
2302
|
+
value: (function () {
|
|
2303
|
+
var _handleRoapEstablished = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee15(context, event) {
|
|
2304
|
+
var _this8 = this;
|
|
2305
|
+
var _ref0, received, message, res, errData, _t11;
|
|
2306
|
+
return _regenerator.default.wrap(function (_context15) {
|
|
2307
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
2308
|
+
case 0:
|
|
2309
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2310
|
+
file: _constants.CALL_FILE,
|
|
2311
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2312
|
+
});
|
|
2313
|
+
_ref0 = event.data, received = _ref0.received, message = _ref0.message;
|
|
2314
|
+
this.receivedRoapOKSeq = message.seq;
|
|
2315
|
+
if (received) {
|
|
2316
|
+
_context15.next = 5;
|
|
2317
|
+
break;
|
|
2318
|
+
}
|
|
2319
|
+
_Logger.default.info('Sending Media Ok to the remote End', {
|
|
2320
|
+
file: _constants.CALL_FILE,
|
|
2321
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2322
|
+
});
|
|
2323
|
+
_context15.prev = 1;
|
|
2324
|
+
if (this.callStateMachine.state.value === 'S_RECV_CALL_PROGRESS' || this.callStateMachine.state.value === 'S_SEND_CALL_SETUP') {
|
|
2325
|
+
_Logger.default.info('Media negotiation completed before call connect. Setting media negotiation completed flag.', {
|
|
2326
|
+
file: _constants.CALL_FILE,
|
|
2327
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2328
|
+
});
|
|
2329
|
+
this.mediaNegotiationCompleted = true;
|
|
2330
|
+
}
|
|
2331
|
+
message.seq = this.seq;
|
|
2332
|
+
_context15.next = 2;
|
|
2333
|
+
return this.postMedia(message);
|
|
2334
|
+
case 2:
|
|
2335
|
+
res = _context15.sent;
|
|
2336
|
+
_Logger.default.log("Response code: ".concat(res.statusCode), {
|
|
2337
|
+
file: _constants.CALL_FILE,
|
|
2338
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2339
|
+
});
|
|
2340
|
+
/* istanbul ignore else */
|
|
2341
|
+
if (!this.earlyMedia && !this.mediaNegotiationCompleted) {
|
|
2342
|
+
this.sendCallStateMachineEvt({
|
|
2343
|
+
type: 'E_CALL_ESTABLISHED'
|
|
2344
|
+
});
|
|
2345
|
+
}
|
|
2346
|
+
_context15.next = 4;
|
|
2347
|
+
break;
|
|
2348
|
+
case 3:
|
|
2349
|
+
_context15.prev = 3;
|
|
2350
|
+
_t11 = _context15["catch"](1);
|
|
2351
|
+
_Logger.default.warn('Failed to process MediaOk request', {
|
|
2352
|
+
file: _constants.CALL_FILE,
|
|
2353
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2354
|
+
});
|
|
2355
|
+
errData = _t11;
|
|
2356
|
+
(0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
|
|
2357
|
+
/* Start retry if only it is a midcall case */
|
|
2358
|
+
/* istanbul ignore else */
|
|
2359
|
+
if (_this8.connected) {
|
|
2360
|
+
setTimeout(function () {
|
|
2361
|
+
_this8.sendMediaStateMachineEvt({
|
|
2362
|
+
type: 'E_ROAP_OK',
|
|
2363
|
+
data: event.data
|
|
2364
|
+
});
|
|
2365
|
+
}, interval * 1000);
|
|
2366
|
+
}
|
|
2367
|
+
}, this.getCorrelationId(), errData, this.handleRoapEstablished.name, _constants.CALL_FILE);
|
|
2368
|
+
_context15.next = 4;
|
|
2369
|
+
return (0, _Utils.uploadLogs)({
|
|
2370
|
+
correlationId: this.correlationId,
|
|
2371
|
+
callId: this.callId,
|
|
2372
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2373
|
+
});
|
|
2374
|
+
case 4:
|
|
2375
|
+
_context15.next = 6;
|
|
2376
|
+
break;
|
|
2377
|
+
case 5:
|
|
2378
|
+
_Logger.default.info('Notifying internal-media-core about ROAP OK message', {
|
|
2379
|
+
file: _constants.CALL_FILE,
|
|
2380
|
+
method: _constants.METHODS.HANDLE_ROAP_ESTABLISHED
|
|
2381
|
+
});
|
|
2382
|
+
message.seq = this.seq;
|
|
2383
|
+
|
|
2384
|
+
/* istanbul ignore else */
|
|
2385
|
+
if (this.mediaConnection) {
|
|
2386
|
+
this.mediaConnection.roapMessageReceived(message);
|
|
2387
|
+
}
|
|
2388
|
+
/* istanbul ignore else */
|
|
2389
|
+
if (!this.earlyMedia) {
|
|
2390
|
+
this.sendCallStateMachineEvt({
|
|
2391
|
+
type: 'E_CALL_ESTABLISHED'
|
|
2392
|
+
});
|
|
2393
|
+
}
|
|
2394
|
+
if (this.remoteRoapMessage && this.remoteRoapMessage.seq > this.seq) {
|
|
2395
|
+
if (this.remoteRoapMessage.messageType === 'OFFER_REQUEST') {
|
|
2396
|
+
this.sendMediaStateMachineEvt({
|
|
2397
|
+
type: 'E_RECV_ROAP_OFFER_REQUEST',
|
|
2398
|
+
data: this.remoteRoapMessage
|
|
2399
|
+
});
|
|
2400
|
+
} else if (this.remoteRoapMessage.messageType === 'OFFER') {
|
|
2401
|
+
this.sendMediaStateMachineEvt({
|
|
2402
|
+
type: 'E_RECV_ROAP_OFFER',
|
|
2403
|
+
data: this.remoteRoapMessage
|
|
2404
|
+
});
|
|
2405
|
+
}
|
|
2406
|
+
}
|
|
2407
|
+
case 6:
|
|
2408
|
+
case "end":
|
|
2409
|
+
return _context15.stop();
|
|
2410
|
+
}
|
|
2411
|
+
}, _callee15, this, [[1, 3]]);
|
|
2412
|
+
}));
|
|
2413
|
+
function handleRoapEstablished(_x11, _x12) {
|
|
2414
|
+
return _handleRoapEstablished.apply(this, arguments);
|
|
2415
|
+
}
|
|
2416
|
+
return handleRoapEstablished;
|
|
2417
|
+
}()
|
|
2418
|
+
/**
|
|
2419
|
+
* Handle Roap Error events.
|
|
2420
|
+
*
|
|
2421
|
+
* @param context
|
|
2422
|
+
* @param event - Roap Events.
|
|
2423
|
+
*/
|
|
2424
|
+
)
|
|
2425
|
+
}, {
|
|
2426
|
+
key: "handleRoapError",
|
|
2427
|
+
value: (function () {
|
|
2428
|
+
var _handleRoapError = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee16(context, event) {
|
|
2429
|
+
var _this9 = this;
|
|
2430
|
+
var message, res, errData, _t12;
|
|
2431
|
+
return _regenerator.default.wrap(function (_context16) {
|
|
2432
|
+
while (1) switch (_context16.prev = _context16.next) {
|
|
2433
|
+
case 0:
|
|
2434
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2435
|
+
file: _constants.CALL_FILE,
|
|
2436
|
+
method: _constants.METHODS.HANDLE_ROAP_ERROR
|
|
2437
|
+
});
|
|
2438
|
+
|
|
2439
|
+
/* if we receive ROAP_ERROR from internal-media-core , we post it to Mobius */
|
|
2440
|
+
message = event.data;
|
|
2441
|
+
/* istanbul ignore else */
|
|
2442
|
+
if (!(message && message.messageType === 'ERROR')) {
|
|
2443
|
+
_context16.next = 4;
|
|
2444
|
+
break;
|
|
2445
|
+
}
|
|
2446
|
+
_context16.prev = 1;
|
|
2447
|
+
_context16.next = 2;
|
|
2448
|
+
return this.postMedia(message);
|
|
2449
|
+
case 2:
|
|
2450
|
+
res = _context16.sent;
|
|
2451
|
+
_Logger.default.info("Response code: ".concat(res.statusCode), {
|
|
2452
|
+
file: _constants.CALL_FILE,
|
|
2453
|
+
method: _constants.METHODS.HANDLE_ROAP_ERROR
|
|
2454
|
+
});
|
|
2455
|
+
_context16.next = 4;
|
|
2456
|
+
break;
|
|
2457
|
+
case 3:
|
|
2458
|
+
_context16.prev = 3;
|
|
2459
|
+
_t12 = _context16["catch"](1);
|
|
2460
|
+
_Logger.default.warn('Failed to communicate ROAP error to Webex Calling', {
|
|
2461
|
+
file: _constants.CALL_FILE,
|
|
2462
|
+
method: _constants.METHODS.HANDLE_ROAP_ERROR
|
|
2463
|
+
});
|
|
2464
|
+
errData = _t12;
|
|
2465
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
2466
|
+
_this9.emit(_types3.CALL_EVENT_KEYS.CALL_ERROR, error);
|
|
2467
|
+
_this9.submitCallErrorMetric(error);
|
|
2468
|
+
}, _types.ERROR_LAYER.MEDIA,
|
|
2469
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2470
|
+
/* istanbul ignore next */
|
|
2471
|
+
function (interval) {
|
|
2472
|
+
return undefined;
|
|
2473
|
+
}, this.getCorrelationId(), errData, this.handleRoapError.name, _constants.CALL_FILE);
|
|
2474
|
+
_context16.next = 4;
|
|
2475
|
+
return (0, _Utils.uploadLogs)({
|
|
2476
|
+
correlationId: this.correlationId,
|
|
2477
|
+
callId: this.callId,
|
|
2478
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2479
|
+
});
|
|
2480
|
+
case 4:
|
|
2481
|
+
/* Only disconnect calls that are not yet connected yet */
|
|
2482
|
+
|
|
2483
|
+
if (!this.connected) {
|
|
2484
|
+
_Logger.default.warn('Call failed due to media issue', {
|
|
2485
|
+
file: _constants.CALL_FILE,
|
|
2486
|
+
method: _constants.METHODS.HANDLE_ROAP_ERROR
|
|
2487
|
+
});
|
|
2488
|
+
this.sendCallStateMachineEvt({
|
|
2489
|
+
type: 'E_UNKNOWN',
|
|
2490
|
+
data: {
|
|
2491
|
+
media: true
|
|
2492
|
+
}
|
|
2493
|
+
});
|
|
2494
|
+
}
|
|
2495
|
+
case 5:
|
|
2496
|
+
case "end":
|
|
2497
|
+
return _context16.stop();
|
|
2498
|
+
}
|
|
2499
|
+
}, _callee16, this, [[1, 3]]);
|
|
2500
|
+
}));
|
|
2501
|
+
function handleRoapError(_x13, _x14) {
|
|
2502
|
+
return _handleRoapError.apply(this, arguments);
|
|
2503
|
+
}
|
|
2504
|
+
return handleRoapError;
|
|
2505
|
+
}()
|
|
2506
|
+
/**
|
|
2507
|
+
* Handle Outgoing Roap Offer events.
|
|
2508
|
+
*
|
|
2509
|
+
* @param context
|
|
2510
|
+
* @param event - Roap Events.
|
|
2511
|
+
*/
|
|
2512
|
+
)
|
|
2513
|
+
}, {
|
|
2514
|
+
key: "handleOutgoingRoapOffer",
|
|
2515
|
+
value: (function () {
|
|
2516
|
+
var _handleOutgoingRoapOffer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee17(context, event) {
|
|
2517
|
+
var _this0 = this;
|
|
2518
|
+
var message, res, errData, _t13;
|
|
2519
|
+
return _regenerator.default.wrap(function (_context17) {
|
|
2520
|
+
while (1) switch (_context17.prev = _context17.next) {
|
|
2521
|
+
case 0:
|
|
2522
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2523
|
+
file: _constants.CALL_FILE,
|
|
2524
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
|
|
2525
|
+
});
|
|
2526
|
+
message = event.data;
|
|
2527
|
+
if (message !== null && message !== void 0 && message.sdp) {
|
|
2528
|
+
_context17.next = 1;
|
|
2529
|
+
break;
|
|
2530
|
+
}
|
|
2531
|
+
_Logger.default.info('Initializing Offer...', {
|
|
2532
|
+
file: _constants.CALL_FILE,
|
|
2533
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
|
|
2534
|
+
});
|
|
2535
|
+
this.mediaConnection.initiateOffer();
|
|
2536
|
+
return _context17.abrupt("return");
|
|
2537
|
+
case 1:
|
|
2538
|
+
_context17.prev = 1;
|
|
2539
|
+
_context17.next = 2;
|
|
2540
|
+
return this.postMedia(message);
|
|
2541
|
+
case 2:
|
|
2542
|
+
res = _context17.sent;
|
|
2543
|
+
_Logger.default.log("Response code: ".concat(res.statusCode), {
|
|
2544
|
+
file: _constants.CALL_FILE,
|
|
2545
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
|
|
2546
|
+
});
|
|
2547
|
+
_context17.next = 4;
|
|
2548
|
+
break;
|
|
2549
|
+
case 3:
|
|
2550
|
+
_context17.prev = 3;
|
|
2551
|
+
_t13 = _context17["catch"](1);
|
|
2552
|
+
_Logger.default.warn('Failed to send MediaOffer request', {
|
|
2553
|
+
file: _constants.CALL_FILE,
|
|
2554
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER
|
|
2555
|
+
});
|
|
2556
|
+
errData = _t13;
|
|
2557
|
+
(0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
|
|
2558
|
+
/* Start retry if only it is a midcall case */
|
|
2559
|
+
if (_this0.connected) {
|
|
2560
|
+
setTimeout(function () {
|
|
2561
|
+
_this0.sendMediaStateMachineEvt({
|
|
2562
|
+
type: 'E_SEND_ROAP_OFFER',
|
|
2563
|
+
data: event.data
|
|
2564
|
+
});
|
|
2565
|
+
}, interval * 1000);
|
|
2566
|
+
}
|
|
2567
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_OFFER, _constants.CALL_FILE);
|
|
2568
|
+
_context17.next = 4;
|
|
2569
|
+
return (0, _Utils.uploadLogs)({
|
|
2570
|
+
correlationId: this.correlationId,
|
|
2571
|
+
callId: this.callId,
|
|
2572
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2573
|
+
});
|
|
2574
|
+
case 4:
|
|
2575
|
+
case "end":
|
|
2576
|
+
return _context17.stop();
|
|
2577
|
+
}
|
|
2578
|
+
}, _callee17, this, [[1, 3]]);
|
|
2579
|
+
}));
|
|
2580
|
+
function handleOutgoingRoapOffer(_x15, _x16) {
|
|
2581
|
+
return _handleOutgoingRoapOffer.apply(this, arguments);
|
|
2582
|
+
}
|
|
2583
|
+
return handleOutgoingRoapOffer;
|
|
2584
|
+
}()
|
|
2585
|
+
/**
|
|
2586
|
+
* Handle Outgoing Roap Answer events.
|
|
2587
|
+
*
|
|
2588
|
+
* @param context
|
|
2589
|
+
* @param event - Roap Events.
|
|
2590
|
+
*/
|
|
2591
|
+
)
|
|
2592
|
+
}, {
|
|
2593
|
+
key: "handleOutgoingRoapAnswer",
|
|
2594
|
+
value: (function () {
|
|
2595
|
+
var _handleOutgoingRoapAnswer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee18(context, event) {
|
|
2596
|
+
var _this1 = this;
|
|
2597
|
+
var message, res, errData, _t14;
|
|
2598
|
+
return _regenerator.default.wrap(function (_context18) {
|
|
2599
|
+
while (1) switch (_context18.prev = _context18.next) {
|
|
2600
|
+
case 0:
|
|
2601
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2602
|
+
file: _constants.CALL_FILE,
|
|
2603
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
|
|
2604
|
+
});
|
|
2605
|
+
message = event.data;
|
|
2606
|
+
_context18.prev = 1;
|
|
2607
|
+
message.seq = this.seq;
|
|
2608
|
+
_context18.next = 2;
|
|
2609
|
+
return this.postMedia(message);
|
|
2610
|
+
case 2:
|
|
2611
|
+
res = _context18.sent;
|
|
2612
|
+
_Logger.default.log("Response code: ".concat(res.statusCode), {
|
|
2613
|
+
file: _constants.CALL_FILE,
|
|
2614
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
|
|
2615
|
+
});
|
|
2616
|
+
_context18.next = 4;
|
|
2617
|
+
break;
|
|
2618
|
+
case 3:
|
|
2619
|
+
_context18.prev = 3;
|
|
2620
|
+
_t14 = _context18["catch"](1);
|
|
2621
|
+
_Logger.default.warn('Failed to send MediaAnswer request', {
|
|
2622
|
+
file: _constants.CALL_FILE,
|
|
2623
|
+
method: _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER
|
|
2624
|
+
});
|
|
2625
|
+
errData = _t14;
|
|
2626
|
+
(0, _Utils.handleCallErrors)(this.getEmitterCallback(errData), _types.ERROR_LAYER.MEDIA, function (interval) {
|
|
2627
|
+
/* Start retry if only it is a midcall case */
|
|
2628
|
+
if (_this1.connected) {
|
|
2629
|
+
setTimeout(function () {
|
|
2630
|
+
_this1.sendMediaStateMachineEvt({
|
|
2631
|
+
type: 'E_SEND_ROAP_ANSWER',
|
|
2632
|
+
data: event.data
|
|
2633
|
+
});
|
|
2634
|
+
}, interval * 1000);
|
|
2635
|
+
}
|
|
2636
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.HANDLE_OUTGOING_ROAP_ANSWER, _constants.CALL_FILE);
|
|
2637
|
+
_context18.next = 4;
|
|
2638
|
+
return (0, _Utils.uploadLogs)({
|
|
2639
|
+
correlationId: this.correlationId,
|
|
2640
|
+
callId: this.callId,
|
|
2641
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
2642
|
+
});
|
|
2643
|
+
case 4:
|
|
2644
|
+
case "end":
|
|
2645
|
+
return _context18.stop();
|
|
2646
|
+
}
|
|
2647
|
+
}, _callee18, this, [[1, 3]]);
|
|
2648
|
+
}));
|
|
2649
|
+
function handleOutgoingRoapAnswer(_x17, _x18) {
|
|
2650
|
+
return _handleOutgoingRoapAnswer.apply(this, arguments);
|
|
2651
|
+
}
|
|
2652
|
+
return handleOutgoingRoapAnswer;
|
|
2653
|
+
}()
|
|
2654
|
+
/**
|
|
2655
|
+
* Handle Incoming Roap Offer events.
|
|
2656
|
+
*
|
|
2657
|
+
* @param context
|
|
2658
|
+
* @param event - Roap Events.
|
|
2659
|
+
*/
|
|
2660
|
+
)
|
|
2661
|
+
}, {
|
|
2662
|
+
key: "handleIncomingRoapOffer",
|
|
2663
|
+
value: function handleIncomingRoapOffer(context, event) {
|
|
2664
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2665
|
+
file: _constants.CALL_FILE,
|
|
2666
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
|
|
2667
|
+
});
|
|
2668
|
+
var message = event.data;
|
|
2669
|
+
this.remoteRoapMessage = message;
|
|
2670
|
+
if (!this.mediaConnection) {
|
|
2671
|
+
_Logger.default.info('Media connection is not up, buffer the remote offer for later handling', {
|
|
2672
|
+
file: _constants.CALL_FILE,
|
|
2673
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
|
|
2674
|
+
});
|
|
2675
|
+
this.seq = message.seq;
|
|
2676
|
+
_Logger.default.info("Setting Sequence No: ".concat(this.seq), {
|
|
2677
|
+
file: _constants.CALL_FILE,
|
|
2678
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
|
|
2679
|
+
});
|
|
2680
|
+
} else if (this.receivedRoapOKSeq === message.seq - 2) {
|
|
2681
|
+
_Logger.default.info('Waiting for Roap OK, buffer the remote offer for later handling', {
|
|
2682
|
+
file: _constants.CALL_FILE,
|
|
2683
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
|
|
2684
|
+
});
|
|
2685
|
+
this.remoteRoapMessage = message;
|
|
2686
|
+
} else {
|
|
2687
|
+
_Logger.default.info('Handling new offer...', {
|
|
2688
|
+
file: _constants.CALL_FILE,
|
|
2689
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_OFFER
|
|
2690
|
+
});
|
|
2691
|
+
this.seq = message.seq;
|
|
2692
|
+
/* istanbul ignore else */
|
|
2693
|
+
if (this.mediaConnection) {
|
|
2694
|
+
this.mediaConnection.roapMessageReceived(message);
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
/**
|
|
2700
|
+
* Handle Incoming Roap Answer events.
|
|
2701
|
+
*
|
|
2702
|
+
* @param context
|
|
2703
|
+
* @param event - Roap Events.
|
|
2704
|
+
*/
|
|
2705
|
+
}, {
|
|
2706
|
+
key: "handleIncomingRoapAnswer",
|
|
2707
|
+
value: function handleIncomingRoapAnswer(context, event) {
|
|
2708
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(this.getCorrelationId()), {
|
|
2709
|
+
file: _constants.CALL_FILE,
|
|
2710
|
+
method: _constants.METHODS.HANDLE_INCOMING_ROAP_ANSWER
|
|
2711
|
+
});
|
|
2712
|
+
var message = event.data;
|
|
2713
|
+
this.remoteRoapMessage = message;
|
|
2714
|
+
message.seq = this.seq;
|
|
2715
|
+
/* istanbul ignore else */
|
|
2716
|
+
if (this.mediaConnection) {
|
|
2717
|
+
this.mediaConnection.roapMessageReceived(message);
|
|
2718
|
+
}
|
|
2719
|
+
}
|
|
2720
|
+
}, {
|
|
2721
|
+
key: "getIceCandidatesTimeout",
|
|
2722
|
+
value:
|
|
2723
|
+
/**
|
|
2724
|
+
* Determines the ICE candidate gathering timeout to use for the media connection.
|
|
2725
|
+
*
|
|
2726
|
+
* When the remote peer advertises itself as an ICE-lite agent (a=ice-lite) in its ROAP offer,
|
|
2727
|
+
* it only provides host candidates and does not perform connectivity checks, so there is no
|
|
2728
|
+
* need to wait the full ICE_CANDIDATES_TIMEOUT for local candidate gathering. In that case a
|
|
2729
|
+
* shorter timeout is returned to avoid stalling media negotiation for ~3 seconds.
|
|
2730
|
+
*
|
|
2731
|
+
* This optimization is opt-in: it only applies when the SDK is initialized with
|
|
2732
|
+
* `iceGathering.reduceTimeoutForIceLite` set to `true`. Otherwise the default
|
|
2733
|
+
* ICE_CANDIDATES_TIMEOUT is always used.
|
|
2734
|
+
*
|
|
2735
|
+
* @returns The ICE candidates timeout in milliseconds.
|
|
2736
|
+
*/
|
|
2737
|
+
function getIceCandidatesTimeout() {
|
|
2738
|
+
var _this$iceGatheringCon, _this$remoteRoapMessa2;
|
|
2739
|
+
if (!((_this$iceGatheringCon = this.iceGatheringConfig) !== null && _this$iceGatheringCon !== void 0 && _this$iceGatheringCon.reduceTimeoutForIceLite)) {
|
|
2740
|
+
return _constants.ICE_CANDIDATES_TIMEOUT;
|
|
2741
|
+
}
|
|
2742
|
+
var remoteSdp = (_this$remoteRoapMessa2 = this.remoteRoapMessage) === null || _this$remoteRoapMessa2 === void 0 ? void 0 : _this$remoteRoapMessa2.sdp;
|
|
2743
|
+
if (remoteSdp && /^a=ice-lite[\r\n]*$/im.test(remoteSdp)) {
|
|
2744
|
+
var _this$iceGatheringCon2;
|
|
2745
|
+
_Logger.default.info('Remote offer advertises ice-lite, using reduced ICE candidates timeout', {
|
|
2746
|
+
file: _constants.CALL_FILE,
|
|
2747
|
+
method: _constants.METHODS.INIT_MEDIA_CONNECTION
|
|
2748
|
+
});
|
|
2749
|
+
return (_this$iceGatheringCon2 = this.iceGatheringConfig.iceLiteTimeout) !== null && _this$iceGatheringCon2 !== void 0 ? _this$iceGatheringCon2 : _constants.ICE_LITE_CANDIDATES_TIMEOUT;
|
|
2750
|
+
}
|
|
2751
|
+
return _constants.ICE_CANDIDATES_TIMEOUT;
|
|
2752
|
+
}
|
|
2753
|
+
|
|
2754
|
+
/* istanbul ignore next */
|
|
2755
|
+
/**
|
|
2756
|
+
* Initialize Media Connection.
|
|
2757
|
+
*
|
|
2758
|
+
* @param settings -.
|
|
2759
|
+
* @param settings.localAudioTrack - MediaStreamTrack.
|
|
2760
|
+
* @param settings.debugId - String.
|
|
2761
|
+
*/
|
|
2762
|
+
}, {
|
|
2763
|
+
key: "initMediaConnection",
|
|
2764
|
+
value: function initMediaConnection(localAudioTrack, debugId) {
|
|
2765
|
+
var _this10 = this;
|
|
2766
|
+
var mediaConnection = new _internalMediaCore.RoapMediaConnection({
|
|
2767
|
+
skipInactiveTransceivers: true,
|
|
2768
|
+
iceServers: [],
|
|
2769
|
+
iceCandidatesTimeout: this.getIceCandidatesTimeout(),
|
|
2770
|
+
sdpMunging: {
|
|
2771
|
+
convertPort9to0: true,
|
|
2772
|
+
addContentSlides: false,
|
|
2773
|
+
copyClineToSessionLevel: true
|
|
2774
|
+
}
|
|
2775
|
+
}, {
|
|
2776
|
+
localTracks: {
|
|
2777
|
+
audio: localAudioTrack
|
|
2778
|
+
},
|
|
2779
|
+
direction: {
|
|
2780
|
+
audio: 'sendrecv',
|
|
2781
|
+
video: 'inactive',
|
|
2782
|
+
screenShareVideo: 'inactive'
|
|
2783
|
+
}
|
|
2784
|
+
}, debugId || "WebexCallSDK-".concat(this.correlationId), function (data) {
|
|
2785
|
+
return _this10.rtcMetrics.addMetrics(data);
|
|
2786
|
+
}, function () {
|
|
2787
|
+
return _this10.rtcMetrics.closeMetrics();
|
|
2788
|
+
}, function () {
|
|
2789
|
+
return _this10.rtcMetrics.sendMetricsInQueue();
|
|
2790
|
+
});
|
|
2791
|
+
this.mediaConnection = mediaConnection;
|
|
2792
|
+
}
|
|
2793
|
+
}, {
|
|
2794
|
+
key: "sendCallStateMachineEvt",
|
|
2795
|
+
value:
|
|
2796
|
+
/**
|
|
2797
|
+
* .
|
|
2798
|
+
*
|
|
2799
|
+
* @param event -.
|
|
2800
|
+
*/
|
|
2801
|
+
function sendCallStateMachineEvt(event) {
|
|
2802
|
+
this.callStateMachine.send(event);
|
|
2803
|
+
}
|
|
2804
|
+
|
|
2805
|
+
/**
|
|
2806
|
+
* .
|
|
2807
|
+
*
|
|
2808
|
+
* @param event -.
|
|
2809
|
+
*/
|
|
2810
|
+
}, {
|
|
2811
|
+
key: "sendMediaStateMachineEvt",
|
|
2812
|
+
value: function sendMediaStateMachineEvt(event) {
|
|
2813
|
+
this.mediaStateMachine.send(event);
|
|
2814
|
+
}
|
|
2815
|
+
}, {
|
|
2816
|
+
key: "setDisconnectReason",
|
|
2817
|
+
value:
|
|
2818
|
+
/**
|
|
2819
|
+
* Sets the Disconnect reason.
|
|
2820
|
+
*
|
|
2821
|
+
*/
|
|
2822
|
+
function setDisconnectReason() {
|
|
2823
|
+
if (this.mediaInactivity) {
|
|
2824
|
+
this.disconnectReason.code = _types4.DisconnectCode.MEDIA_INACTIVITY;
|
|
2825
|
+
this.disconnectReason.cause = _types4.DisconnectCause.MEDIA_INACTIVITY;
|
|
2826
|
+
} else if (this.connected || this.direction === _types2.CallDirection.OUTBOUND) {
|
|
2827
|
+
this.disconnectReason.code = _types4.DisconnectCode.NORMAL;
|
|
2828
|
+
this.disconnectReason.cause = _types4.DisconnectCause.NORMAL;
|
|
2829
|
+
} else {
|
|
2830
|
+
this.disconnectReason.code = _types4.DisconnectCode.BUSY;
|
|
2831
|
+
this.disconnectReason.cause = _types4.DisconnectCause.BUSY;
|
|
2832
|
+
}
|
|
2833
|
+
}
|
|
2834
|
+
}, {
|
|
2835
|
+
key: "answer",
|
|
2836
|
+
value: (
|
|
2837
|
+
/**
|
|
2838
|
+
* Answers the call with the provided local audio stream.
|
|
2839
|
+
*
|
|
2840
|
+
* @param localAudioStream - The local audio stream for the call.
|
|
2841
|
+
*/
|
|
2842
|
+
function () {
|
|
2843
|
+
var _answer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee19(localAudioStream) {
|
|
2844
|
+
var localAudioTrack;
|
|
2845
|
+
return _regenerator.default.wrap(function (_context19) {
|
|
2846
|
+
while (1) switch (_context19.prev = _context19.next) {
|
|
2847
|
+
case 0:
|
|
2848
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
|
|
2849
|
+
file: _constants.CALL_FILE,
|
|
2850
|
+
method: _constants.METHODS.ANSWER
|
|
2851
|
+
});
|
|
2852
|
+
this.localAudioStream = localAudioStream;
|
|
2853
|
+
localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
|
|
2854
|
+
if (localAudioTrack) {
|
|
2855
|
+
_context19.next = 1;
|
|
2856
|
+
break;
|
|
2857
|
+
}
|
|
2858
|
+
_Logger.default.warn("Did not find a local track while answering the call ".concat(this.getCorrelationId()), {
|
|
2859
|
+
file: _constants.CALL_FILE,
|
|
2860
|
+
method: _constants.METHODS.ANSWER
|
|
2861
|
+
});
|
|
2862
|
+
this.mediaInactivity = true;
|
|
2863
|
+
this.sendCallStateMachineEvt({
|
|
2864
|
+
type: 'E_SEND_CALL_DISCONNECT'
|
|
2865
|
+
});
|
|
2866
|
+
return _context19.abrupt("return");
|
|
2867
|
+
case 1:
|
|
2868
|
+
localAudioTrack.enabled = true;
|
|
2869
|
+
if (!this.mediaConnection) {
|
|
2870
|
+
this.initMediaConnection(localAudioTrack);
|
|
2871
|
+
this.mediaRoapEventsListener();
|
|
2872
|
+
this.mediaTrackListener();
|
|
2873
|
+
this.mediaIceEventsListener();
|
|
2874
|
+
this.registerListeners(localAudioStream);
|
|
2875
|
+
}
|
|
2876
|
+
if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {
|
|
2877
|
+
this.sendCallStateMachineEvt({
|
|
2878
|
+
type: 'E_SEND_CALL_CONNECT'
|
|
2879
|
+
});
|
|
2880
|
+
} else {
|
|
2881
|
+
_Logger.default.warn("Call cannot be answered because the state is : ".concat(this.callStateMachine.state.value), {
|
|
2882
|
+
file: _constants.CALL_FILE,
|
|
2883
|
+
method: _constants.METHODS.ANSWER
|
|
2884
|
+
});
|
|
2885
|
+
}
|
|
2886
|
+
case 2:
|
|
2887
|
+
case "end":
|
|
2888
|
+
return _context19.stop();
|
|
2889
|
+
}
|
|
2890
|
+
}, _callee19, this);
|
|
2891
|
+
}));
|
|
2892
|
+
function answer(_x19) {
|
|
2893
|
+
return _answer.apply(this, arguments);
|
|
2894
|
+
}
|
|
2895
|
+
return answer;
|
|
2896
|
+
}()
|
|
2897
|
+
/**
|
|
2898
|
+
* @param settings
|
|
2899
|
+
* @param settings.localAudioTrack
|
|
2900
|
+
*/
|
|
2901
|
+
)
|
|
2902
|
+
}, {
|
|
2903
|
+
key: "dial",
|
|
2904
|
+
value: (function () {
|
|
2905
|
+
var _dial = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20(localAudioStream) {
|
|
2906
|
+
var localAudioTrack;
|
|
2907
|
+
return _regenerator.default.wrap(function (_context20) {
|
|
2908
|
+
while (1) switch (_context20.prev = _context20.next) {
|
|
2909
|
+
case 0:
|
|
2910
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with stream"), {
|
|
2911
|
+
file: _constants.CALL_FILE,
|
|
2912
|
+
method: _constants.METHODS.DIAL
|
|
2913
|
+
});
|
|
2914
|
+
this.localAudioStream = localAudioStream;
|
|
2915
|
+
localAudioTrack = localAudioStream.outputStream.getAudioTracks()[0];
|
|
2916
|
+
if (localAudioTrack) {
|
|
2917
|
+
_context20.next = 1;
|
|
2918
|
+
break;
|
|
2919
|
+
}
|
|
2920
|
+
_Logger.default.warn("Did not find a local track while dialing the call ".concat(this.getCorrelationId()), {
|
|
2921
|
+
file: _constants.CALL_FILE,
|
|
2922
|
+
method: _constants.METHODS.DIAL
|
|
2923
|
+
});
|
|
2924
|
+
this.deleteCb(this.getCorrelationId());
|
|
2925
|
+
this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
|
|
2926
|
+
return _context20.abrupt("return");
|
|
2927
|
+
case 1:
|
|
2928
|
+
localAudioTrack.enabled = true;
|
|
2929
|
+
if (!this.mediaConnection) {
|
|
2930
|
+
this.initMediaConnection(localAudioTrack);
|
|
2931
|
+
this.mediaRoapEventsListener();
|
|
2932
|
+
this.mediaTrackListener();
|
|
2933
|
+
this.mediaIceEventsListener();
|
|
2934
|
+
this.registerListeners(localAudioStream);
|
|
2935
|
+
}
|
|
2936
|
+
if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {
|
|
2937
|
+
this.sendMediaStateMachineEvt({
|
|
2938
|
+
type: 'E_SEND_ROAP_OFFER'
|
|
2939
|
+
});
|
|
2940
|
+
} else {
|
|
2941
|
+
_Logger.default.warn("Call cannot be dialed because the state is already : ".concat(this.mediaStateMachine.state.value), {
|
|
2942
|
+
file: _constants.CALL_FILE,
|
|
2943
|
+
method: _constants.METHODS.DIAL
|
|
2944
|
+
});
|
|
2945
|
+
}
|
|
2946
|
+
case 2:
|
|
2947
|
+
case "end":
|
|
2948
|
+
return _context20.stop();
|
|
2949
|
+
}
|
|
2950
|
+
}, _callee20, this);
|
|
2951
|
+
}));
|
|
2952
|
+
function dial(_x20) {
|
|
2953
|
+
return _dial.apply(this, arguments);
|
|
2954
|
+
}
|
|
2955
|
+
return dial;
|
|
2956
|
+
}())
|
|
2957
|
+
}, {
|
|
2958
|
+
key: "patch",
|
|
2959
|
+
value: (
|
|
2960
|
+
/**
|
|
2961
|
+
* .
|
|
2962
|
+
*
|
|
2963
|
+
* @param state -.
|
|
2964
|
+
*/
|
|
2965
|
+
function () {
|
|
2966
|
+
var _patch = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21(state) {
|
|
2967
|
+
return _regenerator.default.wrap(function (_context21) {
|
|
2968
|
+
while (1) switch (_context21.prev = _context21.next) {
|
|
2969
|
+
case 0:
|
|
2970
|
+
_Logger.default.info("Send a PATCH for ".concat(state, " to Webex Calling"), {
|
|
2971
|
+
file: _constants.CALL_FILE,
|
|
2972
|
+
method: 'patch'
|
|
2973
|
+
});
|
|
2974
|
+
return _context21.abrupt("return", this.apiRequest.makeRequest({
|
|
2975
|
+
uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
|
|
2976
|
+
method: _types2.HTTP_METHODS.PATCH,
|
|
2977
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
2978
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
2979
|
+
body: {
|
|
2980
|
+
device: {
|
|
2981
|
+
deviceId: this.deviceId,
|
|
2982
|
+
correlationId: this.correlationId
|
|
2983
|
+
},
|
|
2984
|
+
callId: this.callId,
|
|
2985
|
+
callState: state,
|
|
2986
|
+
inbandMedia: false // setting false for now
|
|
2987
|
+
}
|
|
2988
|
+
}));
|
|
2989
|
+
case 1:
|
|
2990
|
+
case "end":
|
|
2991
|
+
return _context21.stop();
|
|
2992
|
+
}
|
|
2993
|
+
}, _callee21, this);
|
|
2994
|
+
}));
|
|
2995
|
+
function patch(_x21) {
|
|
2996
|
+
return _patch.apply(this, arguments);
|
|
2997
|
+
}
|
|
2998
|
+
return patch;
|
|
2999
|
+
}()
|
|
3000
|
+
/**
|
|
3001
|
+
* Sends Supplementary request to Mobius.
|
|
3002
|
+
*
|
|
3003
|
+
* @param context - Context information related to a particular supplementary service.
|
|
3004
|
+
* @param type - Type of Supplementary service.
|
|
3005
|
+
*/
|
|
3006
|
+
)
|
|
3007
|
+
}, {
|
|
3008
|
+
key: "postSSRequest",
|
|
3009
|
+
value: (function () {
|
|
3010
|
+
var _postSSRequest = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22(context, type) {
|
|
3011
|
+
var request, transferContext, _t15;
|
|
3012
|
+
return _regenerator.default.wrap(function (_context22) {
|
|
3013
|
+
while (1) switch (_context22.prev = _context22.next) {
|
|
3014
|
+
case 0:
|
|
3015
|
+
request = {
|
|
3016
|
+
uri: "".concat(this.mobiusUrl).concat(_constants2.SERVICES_ENDPOINT),
|
|
3017
|
+
method: _types2.HTTP_METHODS.POST,
|
|
3018
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
3019
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
3020
|
+
body: {
|
|
3021
|
+
device: {
|
|
3022
|
+
deviceId: this.deviceId,
|
|
3023
|
+
correlationId: this.correlationId
|
|
3024
|
+
},
|
|
3025
|
+
callId: this.callId
|
|
3026
|
+
}
|
|
3027
|
+
};
|
|
3028
|
+
_t15 = type;
|
|
3029
|
+
_context22.next = _t15 === _types3.SUPPLEMENTARY_SERVICES.HOLD ? 1 : _t15 === _types3.SUPPLEMENTARY_SERVICES.RESUME ? 2 : _t15 === _types3.SUPPLEMENTARY_SERVICES.TRANSFER ? 3 : 4;
|
|
3030
|
+
break;
|
|
3031
|
+
case 1:
|
|
3032
|
+
request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.HOLD_ENDPOINT);
|
|
3033
|
+
return _context22.abrupt("continue", 5);
|
|
3034
|
+
case 2:
|
|
3035
|
+
request.uri = "".concat(request.uri, "/").concat(_constants.CALL_HOLD_SERVICE, "/").concat(_constants.RESUME_ENDPOINT);
|
|
3036
|
+
return _context22.abrupt("continue", 5);
|
|
3037
|
+
case 3:
|
|
3038
|
+
request.uri = "".concat(request.uri, "/").concat(_constants.CALL_TRANSFER_SERVICE, "/").concat(_constants.TRANSFER_ENDPOINT);
|
|
3039
|
+
transferContext = context;
|
|
3040
|
+
if (transferContext.destination) {
|
|
3041
|
+
(0, _assign.default)(request.body, {
|
|
3042
|
+
blindTransferContext: transferContext
|
|
3043
|
+
});
|
|
3044
|
+
(0, _assign.default)(request.body, {
|
|
3045
|
+
transferType: _types4.TransferType.BLIND
|
|
3046
|
+
});
|
|
3047
|
+
} /* istanbul ignore else */else if (transferContext.transferToCallId) {
|
|
3048
|
+
(0, _assign.default)(request.body, {
|
|
3049
|
+
consultTransferContext: transferContext
|
|
3050
|
+
});
|
|
3051
|
+
(0, _assign.default)(request.body, {
|
|
3052
|
+
transferType: _types4.TransferType.CONSULT
|
|
3053
|
+
});
|
|
3054
|
+
}
|
|
3055
|
+
return _context22.abrupt("continue", 5);
|
|
3056
|
+
case 4:
|
|
3057
|
+
_Logger.default.warn("Unknown type for PUT request: ".concat(type), {
|
|
3058
|
+
file: _constants.CALL_FILE,
|
|
3059
|
+
method: _constants.METHODS.POST_SS_REQUEST
|
|
3060
|
+
});
|
|
3061
|
+
case 5:
|
|
3062
|
+
return _context22.abrupt("return", this.apiRequest.makeRequest(request));
|
|
3063
|
+
case 6:
|
|
3064
|
+
case "end":
|
|
3065
|
+
return _context22.stop();
|
|
3066
|
+
}
|
|
3067
|
+
}, _callee22, this);
|
|
3068
|
+
}));
|
|
3069
|
+
function postSSRequest(_x22, _x23) {
|
|
3070
|
+
return _postSSRequest.apply(this, arguments);
|
|
3071
|
+
}
|
|
3072
|
+
return postSSRequest;
|
|
3073
|
+
}()
|
|
3074
|
+
/**
|
|
3075
|
+
* Sends Call status to Mobius.
|
|
3076
|
+
*/
|
|
3077
|
+
)
|
|
3078
|
+
}, {
|
|
3079
|
+
key: "postStatus",
|
|
3080
|
+
value: (function () {
|
|
3081
|
+
var _postStatus = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
|
|
3082
|
+
return _regenerator.default.wrap(function (_context23) {
|
|
3083
|
+
while (1) switch (_context23.prev = _context23.next) {
|
|
3084
|
+
case 0:
|
|
3085
|
+
return _context23.abrupt("return", this.apiRequest.makeRequest({
|
|
3086
|
+
uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.CALL_STATUS_RESOURCE),
|
|
3087
|
+
method: _types2.HTTP_METHODS.POST,
|
|
3088
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
3089
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
3090
|
+
body: {
|
|
3091
|
+
device: {
|
|
3092
|
+
deviceId: this.deviceId,
|
|
3093
|
+
correlationId: this.correlationId
|
|
3094
|
+
},
|
|
3095
|
+
callId: this.callId
|
|
3096
|
+
}
|
|
3097
|
+
}));
|
|
3098
|
+
case 1:
|
|
3099
|
+
case "end":
|
|
3100
|
+
return _context23.stop();
|
|
3101
|
+
}
|
|
3102
|
+
}, _callee23, this);
|
|
3103
|
+
}));
|
|
3104
|
+
function postStatus() {
|
|
3105
|
+
return _postStatus.apply(this, arguments);
|
|
3106
|
+
}
|
|
3107
|
+
return postStatus;
|
|
3108
|
+
}()
|
|
3109
|
+
/**
|
|
3110
|
+
* This function is called when user attempts to complete transfer(Blind or Consult)
|
|
3111
|
+
* It checks if we have a valid transferCallId or transfer target and transfer type.
|
|
3112
|
+
*
|
|
3113
|
+
* @param transferType - Transfer type.
|
|
3114
|
+
* @param transferCallId - Call Id where the current call will be merged for consult transfers.
|
|
3115
|
+
* @param transferTarget - Destination for blind transfer.
|
|
3116
|
+
*/
|
|
3117
|
+
)
|
|
3118
|
+
}, {
|
|
3119
|
+
key: "completeTransfer",
|
|
3120
|
+
value: (function () {
|
|
3121
|
+
var _completeTransfer = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24(transferType, transferCallId, transferTarget) {
|
|
3122
|
+
var _this11 = this;
|
|
3123
|
+
var context, errData, _context24, _errData, _t16, _t17;
|
|
3124
|
+
return _regenerator.default.wrap(function (_context25) {
|
|
3125
|
+
while (1) switch (_context25.prev = _context25.next) {
|
|
3126
|
+
case 0:
|
|
3127
|
+
if (!(transferType === _types4.TransferType.BLIND && transferTarget)) {
|
|
3128
|
+
_context25.next = 5;
|
|
3129
|
+
break;
|
|
3130
|
+
}
|
|
3131
|
+
/* blind transfer */
|
|
3132
|
+
|
|
3133
|
+
_Logger.default.info("Initiating Blind transfer with : ".concat(transferTarget), {
|
|
3134
|
+
file: _constants.CALL_FILE,
|
|
3135
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3136
|
+
});
|
|
3137
|
+
context = {
|
|
3138
|
+
transferorCallId: this.getCallId(),
|
|
3139
|
+
destination: transferTarget
|
|
3140
|
+
};
|
|
3141
|
+
_context25.prev = 1;
|
|
3142
|
+
_context25.next = 2;
|
|
3143
|
+
return this.postSSRequest(context, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
|
|
3144
|
+
case 2:
|
|
3145
|
+
_Logger.default.info("Blind Transfer completed for correlationId ".concat(this.getCorrelationId()), {
|
|
3146
|
+
file: _constants.CALL_FILE,
|
|
3147
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3148
|
+
});
|
|
3149
|
+
this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.BLIND, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
|
|
3150
|
+
_context25.next = 4;
|
|
3151
|
+
break;
|
|
3152
|
+
case 3:
|
|
3153
|
+
_context25.prev = 3;
|
|
3154
|
+
_t16 = _context25["catch"](1);
|
|
3155
|
+
_Logger.default.warn("Blind Transfer failed for correlationId ".concat(this.getCorrelationId()), {
|
|
3156
|
+
file: _constants.CALL_FILE,
|
|
3157
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3158
|
+
});
|
|
3159
|
+
errData = _t16;
|
|
3160
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
3161
|
+
_this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
|
|
3162
|
+
_this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.BLIND);
|
|
3163
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
3164
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3165
|
+
/* istanbul ignore next */
|
|
3166
|
+
function (interval) {
|
|
3167
|
+
return undefined;
|
|
3168
|
+
}, this.getCorrelationId(), errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
|
|
3169
|
+
_context25.next = 4;
|
|
3170
|
+
return (0, _Utils.uploadLogs)({
|
|
3171
|
+
correlationId: this.correlationId,
|
|
3172
|
+
callId: this.callId,
|
|
3173
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
3174
|
+
});
|
|
3175
|
+
case 4:
|
|
3176
|
+
_context25.next = 11;
|
|
3177
|
+
break;
|
|
3178
|
+
case 5:
|
|
3179
|
+
if (!(transferType === _types4.TransferType.CONSULT && transferCallId)) {
|
|
3180
|
+
_context25.next = 10;
|
|
3181
|
+
break;
|
|
3182
|
+
}
|
|
3183
|
+
/* Consult transfer */
|
|
3184
|
+
|
|
3185
|
+
_Logger.default.info("Initiating Consult transfer between : ".concat(this.callId, " and ").concat(transferCallId), {
|
|
3186
|
+
file: _constants.CALL_FILE,
|
|
3187
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3188
|
+
});
|
|
3189
|
+
_context24 = {
|
|
3190
|
+
transferorCallId: this.getCallId(),
|
|
3191
|
+
transferToCallId: transferCallId
|
|
3192
|
+
};
|
|
3193
|
+
_context25.prev = 6;
|
|
3194
|
+
_context25.next = 7;
|
|
3195
|
+
return this.postSSRequest(_context24, _types3.SUPPLEMENTARY_SERVICES.TRANSFER);
|
|
3196
|
+
case 7:
|
|
3197
|
+
_Logger.default.info("Consult Transfer completed for correlationId ".concat(this.getCorrelationId()), {
|
|
3198
|
+
file: _constants.CALL_FILE,
|
|
3199
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3200
|
+
});
|
|
3201
|
+
this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL, _types5.TRANSFER_ACTION.CONSULT, _types5.METRIC_TYPE.BEHAVIORAL, this.getCallId(), this.getCorrelationId(), undefined);
|
|
3202
|
+
_context25.next = 9;
|
|
3203
|
+
break;
|
|
3204
|
+
case 8:
|
|
3205
|
+
_context25.prev = 8;
|
|
3206
|
+
_t17 = _context25["catch"](6);
|
|
3207
|
+
_Logger.default.warn("Consult Transfer failed for correlationId ".concat(this.getCorrelationId()), {
|
|
3208
|
+
file: _constants.CALL_FILE,
|
|
3209
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3210
|
+
});
|
|
3211
|
+
_errData = _t17;
|
|
3212
|
+
(0, _Utils.handleCallErrors)(function (error) {
|
|
3213
|
+
_this11.emit(_types3.CALL_EVENT_KEYS.TRANSFER_ERROR, error);
|
|
3214
|
+
_this11.submitCallErrorMetric(error, _types5.TRANSFER_ACTION.CONSULT);
|
|
3215
|
+
}, _types.ERROR_LAYER.CALL_CONTROL,
|
|
3216
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
3217
|
+
/* istanbul ignore next */
|
|
3218
|
+
function (interval) {
|
|
3219
|
+
return undefined;
|
|
3220
|
+
}, this.getCorrelationId(), _errData, _constants.METHODS.COMPLETE_TRANSFER, _constants.CALL_FILE);
|
|
3221
|
+
_context25.next = 9;
|
|
3222
|
+
return (0, _Utils.uploadLogs)({
|
|
3223
|
+
correlationId: this.correlationId,
|
|
3224
|
+
callId: this.callId,
|
|
3225
|
+
broadworksCorrelationInfo: this.broadworksCorrelationInfo
|
|
3226
|
+
});
|
|
3227
|
+
case 9:
|
|
3228
|
+
_context25.next = 11;
|
|
3229
|
+
break;
|
|
3230
|
+
case 10:
|
|
3231
|
+
_Logger.default.warn("Invalid information received, transfer failed for correlationId: ".concat(this.getCorrelationId()), {
|
|
3232
|
+
file: _constants.CALL_FILE,
|
|
3233
|
+
method: _constants.METHODS.COMPLETE_TRANSFER
|
|
3234
|
+
});
|
|
3235
|
+
case 11:
|
|
3236
|
+
case "end":
|
|
3237
|
+
return _context25.stop();
|
|
3238
|
+
}
|
|
3239
|
+
}, _callee24, this, [[1, 3], [6, 8]]);
|
|
3240
|
+
}));
|
|
3241
|
+
function completeTransfer(_x24, _x25, _x26) {
|
|
3242
|
+
return _completeTransfer.apply(this, arguments);
|
|
3243
|
+
}
|
|
3244
|
+
return completeTransfer;
|
|
3245
|
+
}()
|
|
3246
|
+
/**
|
|
3247
|
+
*
|
|
3248
|
+
*/
|
|
3249
|
+
)
|
|
3250
|
+
}, {
|
|
3251
|
+
key: "getCallStats",
|
|
3252
|
+
value: (function () {
|
|
3253
|
+
var _getCallStats = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee25() {
|
|
3254
|
+
var stats, _t18;
|
|
3255
|
+
return _regenerator.default.wrap(function (_context26) {
|
|
3256
|
+
while (1) switch (_context26.prev = _context26.next) {
|
|
3257
|
+
case 0:
|
|
3258
|
+
_context26.prev = 0;
|
|
3259
|
+
_context26.next = 1;
|
|
3260
|
+
return this.mediaConnection.getStats();
|
|
3261
|
+
case 1:
|
|
3262
|
+
stats = _context26.sent;
|
|
3263
|
+
_context26.next = 3;
|
|
3264
|
+
break;
|
|
3265
|
+
case 2:
|
|
3266
|
+
_context26.prev = 2;
|
|
3267
|
+
_t18 = _context26["catch"](0);
|
|
3268
|
+
_Logger.default.warn('Stats collection failed, using dummy stats', {
|
|
3269
|
+
file: _constants.CALL_FILE,
|
|
3270
|
+
method: _constants.METHODS.GET_CALL_STATS
|
|
3271
|
+
});
|
|
3272
|
+
case 3:
|
|
3273
|
+
return _context26.abrupt("return", (0, _Utils.parseMediaQualityStatistics)(stats));
|
|
3274
|
+
case 4:
|
|
3275
|
+
case "end":
|
|
3276
|
+
return _context26.stop();
|
|
3277
|
+
}
|
|
3278
|
+
}, _callee25, this, [[0, 2]]);
|
|
3279
|
+
}));
|
|
3280
|
+
function getCallStats() {
|
|
3281
|
+
return _getCallStats.apply(this, arguments);
|
|
3282
|
+
}
|
|
3283
|
+
return getCallStats;
|
|
3284
|
+
}()
|
|
3285
|
+
/**
|
|
3286
|
+
* .
|
|
3287
|
+
*
|
|
3288
|
+
* @param roapMessage -.
|
|
3289
|
+
*/
|
|
3290
|
+
)
|
|
3291
|
+
}, {
|
|
3292
|
+
key: "postMedia",
|
|
3293
|
+
value: (function () {
|
|
3294
|
+
var _postMedia = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee26(roapMessage) {
|
|
3295
|
+
return _regenerator.default.wrap(function (_context27) {
|
|
3296
|
+
while (1) switch (_context27.prev = _context27.next) {
|
|
3297
|
+
case 0:
|
|
3298
|
+
_Logger.default.log('Posting message to Webex Calling', {
|
|
3299
|
+
file: _constants.CALL_FILE,
|
|
3300
|
+
method: _constants.METHODS.POST_MEDIA
|
|
3301
|
+
});
|
|
3302
|
+
return _context27.abrupt("return", this.apiRequest.makeRequest({
|
|
3303
|
+
uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId, "/").concat(_constants.MEDIA_ENDPOINT_RESOURCE),
|
|
3304
|
+
method: _types2.HTTP_METHODS.POST,
|
|
3305
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
3306
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
3307
|
+
body: {
|
|
3308
|
+
device: {
|
|
3309
|
+
deviceId: this.deviceId,
|
|
3310
|
+
correlationId: this.correlationId
|
|
3311
|
+
},
|
|
3312
|
+
callId: this.callId,
|
|
3313
|
+
localMedia: {
|
|
3314
|
+
roap: roapMessage,
|
|
3315
|
+
mediaId: (0, _uuid.v4)()
|
|
3316
|
+
}
|
|
3317
|
+
}
|
|
3318
|
+
}));
|
|
3319
|
+
case 1:
|
|
3320
|
+
case "end":
|
|
3321
|
+
return _context27.stop();
|
|
3322
|
+
}
|
|
3323
|
+
}, _callee26, this);
|
|
3324
|
+
}));
|
|
3325
|
+
function postMedia(_x27) {
|
|
3326
|
+
return _postMedia.apply(this, arguments);
|
|
3327
|
+
}
|
|
3328
|
+
return postMedia;
|
|
3329
|
+
}()
|
|
3330
|
+
/* istanbul ignore next */
|
|
3331
|
+
/**
|
|
3332
|
+
* Setup a listener for roap events emitted by the media sdk.
|
|
3333
|
+
*/
|
|
3334
|
+
)
|
|
3335
|
+
}, {
|
|
3336
|
+
key: "mediaRoapEventsListener",
|
|
3337
|
+
value: function mediaRoapEventsListener() {
|
|
3338
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
|
|
3339
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
|
|
3340
|
+
}
|
|
3341
|
+
|
|
3342
|
+
/* istanbul ignore next */
|
|
3343
|
+
/**
|
|
3344
|
+
* Setup a listener for remote track added event emitted by the media sdk.
|
|
3345
|
+
*/
|
|
3346
|
+
}, {
|
|
3347
|
+
key: "mediaTrackListener",
|
|
3348
|
+
value: function mediaTrackListener() {
|
|
3349
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
|
|
3350
|
+
}
|
|
3351
|
+
|
|
3352
|
+
/* istanbul ignore next */
|
|
3353
|
+
/**
|
|
3354
|
+
* Setup listeners for ICE-related media connection events.
|
|
3355
|
+
*/
|
|
3356
|
+
}, {
|
|
3357
|
+
key: "mediaIceEventsListener",
|
|
3358
|
+
value: function mediaIceEventsListener() {
|
|
3359
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
|
|
3360
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
|
|
3361
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
|
|
3362
|
+
this.mediaConnection.on(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
|
|
3363
|
+
}
|
|
3364
|
+
}, {
|
|
3365
|
+
key: "unregisterMediaConnectionListeners",
|
|
3366
|
+
value: function unregisterMediaConnectionListeners() {
|
|
3367
|
+
if (!this.mediaConnection || typeof this.mediaConnection.off !== 'function') {
|
|
3368
|
+
return;
|
|
3369
|
+
}
|
|
3370
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
|
|
3371
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
|
|
3372
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
|
|
3373
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
|
|
3374
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
|
|
3375
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
|
|
3376
|
+
this.mediaConnection.off(_internalMediaCore.MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
|
|
3377
|
+
}
|
|
3378
|
+
}, {
|
|
3379
|
+
key: "unregisterListeners",
|
|
3380
|
+
value: function unregisterListeners() {
|
|
3381
|
+
if (this.localAudioStream) {
|
|
3382
|
+
var effect = this.localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
|
|
3383
|
+
if (effect) {
|
|
3384
|
+
effect.off(_mediaHelpers.EffectEvent.Enabled, this.onEffectEnabled);
|
|
3385
|
+
effect.off(_mediaHelpers.EffectEvent.Disabled, this.onEffectDisabled);
|
|
3386
|
+
}
|
|
3387
|
+
this.localAudioStream.off(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
|
|
3388
|
+
this.localAudioStream.off(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, this.updateTrack);
|
|
3389
|
+
}
|
|
3390
|
+
}
|
|
3391
|
+
}, {
|
|
3392
|
+
key: "registerListeners",
|
|
3393
|
+
value: function registerListeners(localAudioStream) {
|
|
3394
|
+
localAudioStream.on(_internalMediaCore.LocalStreamEventNames.OutputTrackChange, this.updateTrack);
|
|
3395
|
+
localAudioStream.on(_internalMediaCore.LocalStreamEventNames.EffectAdded, this.registerEffectListener);
|
|
3396
|
+
var effect = localAudioStream.getEffectByKind(_constants.NOISE_REDUCTION_EFFECT);
|
|
3397
|
+
if (effect) {
|
|
3398
|
+
effect.on(_mediaHelpers.EffectEvent.Enabled, this.onEffectEnabled);
|
|
3399
|
+
effect.on(_mediaHelpers.EffectEvent.Disabled, this.onEffectDisabled);
|
|
3400
|
+
if (effect.isEnabled) {
|
|
3401
|
+
this.onEffectEnabled();
|
|
3402
|
+
}
|
|
3403
|
+
}
|
|
3404
|
+
}
|
|
3405
|
+
}, {
|
|
3406
|
+
key: "delete",
|
|
3407
|
+
value: function () {
|
|
3408
|
+
var _delete2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee27() {
|
|
3409
|
+
var disconnectMetrics;
|
|
3410
|
+
return _regenerator.default.wrap(function (_context28) {
|
|
3411
|
+
while (1) switch (_context28.prev = _context28.next) {
|
|
3412
|
+
case 0:
|
|
3413
|
+
_context28.next = 1;
|
|
3414
|
+
return this.getCallStats();
|
|
3415
|
+
case 1:
|
|
3416
|
+
disconnectMetrics = _context28.sent;
|
|
3417
|
+
return _context28.abrupt("return", this.apiRequest.makeRequest({
|
|
3418
|
+
uri: "".concat(this.mobiusUrl).concat(_constants.DEVICES_ENDPOINT_RESOURCE, "/").concat(this.deviceId, "/").concat(_constants.CALLS_ENDPOINT_RESOURCE, "/").concat(this.callId),
|
|
3419
|
+
method: _types2.HTTP_METHODS.DELETE,
|
|
3420
|
+
service: _types2.ALLOWED_SERVICES.MOBIUS,
|
|
3421
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants.SPARK_USER_AGENT, _constants.CALLING_USER_AGENT),
|
|
3422
|
+
body: {
|
|
3423
|
+
device: {
|
|
3424
|
+
deviceId: this.deviceId,
|
|
3425
|
+
correlationId: this.correlationId
|
|
3426
|
+
},
|
|
3427
|
+
callId: this.callId,
|
|
3428
|
+
metrics: disconnectMetrics,
|
|
3429
|
+
causecode: this.disconnectReason.code,
|
|
3430
|
+
cause: this.disconnectReason.cause
|
|
3431
|
+
}
|
|
3432
|
+
}));
|
|
3433
|
+
case 2:
|
|
3434
|
+
case "end":
|
|
3435
|
+
return _context28.stop();
|
|
3436
|
+
}
|
|
3437
|
+
}, _callee27, this);
|
|
3438
|
+
}));
|
|
3439
|
+
function _delete() {
|
|
3440
|
+
return _delete2.apply(this, arguments);
|
|
3441
|
+
}
|
|
3442
|
+
return _delete;
|
|
3443
|
+
}()
|
|
3444
|
+
/**
|
|
3445
|
+
* @param state - Current state of the call state machine.
|
|
3446
|
+
* @param error - Error object containing the message and type.
|
|
3447
|
+
* @param transferMetricAction - Metric action type incase of a transfer metric.
|
|
3448
|
+
*/
|
|
3449
|
+
}, {
|
|
3450
|
+
key: "submitCallErrorMetric",
|
|
3451
|
+
value: function submitCallErrorMetric(error, transferMetricAction) {
|
|
3452
|
+
if (error.getCallError().errorLayer === _types.ERROR_LAYER.CALL_CONTROL) {
|
|
3453
|
+
this.metricManager.submitCallMetric(_types5.METRIC_EVENT.CALL_ERROR, transferMetricAction || this.callStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, error);
|
|
3454
|
+
} else {
|
|
3455
|
+
var _this$remoteRoapMessa3;
|
|
3456
|
+
this.metricManager.submitMediaMetric(_types5.METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), _types5.METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, (_this$remoteRoapMessa3 = this.remoteRoapMessage) === null || _this$remoteRoapMessa3 === void 0 ? void 0 : _this$remoteRoapMessa3.sdp, undefined, error);
|
|
3457
|
+
}
|
|
3458
|
+
}
|
|
3459
|
+
|
|
3460
|
+
/**
|
|
3461
|
+
* Handler for mid call events.
|
|
3462
|
+
*
|
|
3463
|
+
* @param event - Midcall Events from Mobius.
|
|
3464
|
+
*/
|
|
3465
|
+
}, {
|
|
3466
|
+
key: "handleMidCallEvent",
|
|
3467
|
+
value: function handleMidCallEvent(event) {
|
|
3468
|
+
var eventType = event.eventType,
|
|
3469
|
+
eventData = event.eventData;
|
|
3470
|
+
switch (eventType) {
|
|
3471
|
+
case _types4.MidCallEventType.CALL_INFO:
|
|
3472
|
+
{
|
|
3473
|
+
_Logger.default.log("Received Midcall CallInfo Event for correlationId : ".concat(this.correlationId), {
|
|
3474
|
+
file: _constants.CALL_FILE,
|
|
3475
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3476
|
+
});
|
|
3477
|
+
var callerData = eventData;
|
|
3478
|
+
this.startCallerIdResolution(callerData.callerId);
|
|
3479
|
+
break;
|
|
3480
|
+
}
|
|
3481
|
+
case _types4.MidCallEventType.CALL_STATE:
|
|
3482
|
+
{
|
|
3483
|
+
_Logger.default.log("Received Midcall call event for correlationId : ".concat(this.correlationId), {
|
|
3484
|
+
file: _constants.CALL_FILE,
|
|
3485
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3486
|
+
});
|
|
3487
|
+
var data = eventData;
|
|
3488
|
+
|
|
3489
|
+
/* Emit Events as per the state.
|
|
3490
|
+
* We will enter this state only when media negotiation is done
|
|
3491
|
+
* So, it's safe to emit events from here.
|
|
3492
|
+
*/
|
|
3493
|
+
|
|
3494
|
+
switch (data.callState) {
|
|
3495
|
+
case _types3.MOBIUS_MIDCALL_STATE.HELD:
|
|
3496
|
+
{
|
|
3497
|
+
_Logger.default.log("Call is successfully held : ".concat(this.correlationId), {
|
|
3498
|
+
file: _constants.CALL_FILE,
|
|
3499
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3500
|
+
});
|
|
3501
|
+
this.emit(_types3.CALL_EVENT_KEYS.HELD, this.correlationId);
|
|
3502
|
+
this.held = true;
|
|
3503
|
+
if (this.supplementaryServicesTimer) {
|
|
3504
|
+
clearTimeout(this.supplementaryServicesTimer);
|
|
3505
|
+
this.supplementaryServicesTimer = undefined;
|
|
3506
|
+
}
|
|
3507
|
+
break;
|
|
3508
|
+
}
|
|
3509
|
+
case _types3.MOBIUS_MIDCALL_STATE.CONNECTED:
|
|
3510
|
+
{
|
|
3511
|
+
_Logger.default.log("Call is successfully resumed : ".concat(this.correlationId), {
|
|
3512
|
+
file: _constants.CALL_FILE,
|
|
3513
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3514
|
+
});
|
|
3515
|
+
this.emit(_types3.CALL_EVENT_KEYS.RESUMED, this.correlationId);
|
|
3516
|
+
this.held = false;
|
|
3517
|
+
if (this.supplementaryServicesTimer) {
|
|
3518
|
+
clearTimeout(this.supplementaryServicesTimer);
|
|
3519
|
+
this.supplementaryServicesTimer = undefined;
|
|
3520
|
+
}
|
|
3521
|
+
break;
|
|
3522
|
+
}
|
|
3523
|
+
default:
|
|
3524
|
+
{
|
|
3525
|
+
_Logger.default.warn("Unknown Supplementary service state: ".concat(data.callState, " for correlationId : ").concat(this.correlationId), {
|
|
3526
|
+
file: _constants.CALL_FILE,
|
|
3527
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3528
|
+
});
|
|
3529
|
+
}
|
|
3530
|
+
}
|
|
3531
|
+
break;
|
|
3532
|
+
}
|
|
3533
|
+
default:
|
|
3534
|
+
{
|
|
3535
|
+
_Logger.default.warn("Unknown Midcall type: ".concat(eventType, " for correlationId : ").concat(this.correlationId), {
|
|
3536
|
+
file: _constants.CALL_FILE,
|
|
3537
|
+
method: _constants.METHODS.HANDLE_MID_CALL_EVENT
|
|
3538
|
+
});
|
|
3539
|
+
}
|
|
3540
|
+
}
|
|
3541
|
+
}
|
|
3542
|
+
}, {
|
|
3543
|
+
key: "startCallerIdResolution",
|
|
3544
|
+
value:
|
|
3545
|
+
/**
|
|
3546
|
+
* .
|
|
3547
|
+
*
|
|
3548
|
+
* @param callerInfo
|
|
3549
|
+
*/
|
|
3550
|
+
function startCallerIdResolution(callerInfo) {
|
|
3551
|
+
this.callerInfo = this.callerId.fetchCallerDetails(callerInfo);
|
|
3552
|
+
}
|
|
3553
|
+
|
|
3554
|
+
/**
|
|
3555
|
+
* Sends digit over the established call.
|
|
3556
|
+
*
|
|
3557
|
+
* @param tone - DTMF tones.
|
|
3558
|
+
*/
|
|
3559
|
+
}, {
|
|
3560
|
+
key: "sendDigit",
|
|
3561
|
+
value: function sendDigit(tone) {
|
|
3562
|
+
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with: ").concat(tone), {
|
|
3563
|
+
file: _constants.CALL_FILE,
|
|
3564
|
+
method: _constants.METHODS.SEND_DIGIT
|
|
3565
|
+
});
|
|
3566
|
+
|
|
3567
|
+
/* istanbul ignore else */
|
|
3568
|
+
try {
|
|
3569
|
+
this.mediaConnection.insertDTMF(tone);
|
|
3570
|
+
} catch (e) {
|
|
3571
|
+
_Logger.default.warn("Unable to send digit on call: ".concat(e.message), {
|
|
3572
|
+
file: _constants.CALL_FILE,
|
|
3573
|
+
method: _constants.METHODS.SEND_DIGIT
|
|
3574
|
+
});
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3577
|
+
}, {
|
|
3578
|
+
key: "setBroadworksCorrelationInfo",
|
|
3579
|
+
value:
|
|
3580
|
+
/**
|
|
3581
|
+
* @param broadworksCorrelationInfo
|
|
3582
|
+
*/
|
|
3583
|
+
function setBroadworksCorrelationInfo(broadworksCorrelationInfo) {
|
|
3584
|
+
this.broadworksCorrelationInfo = broadworksCorrelationInfo;
|
|
3585
|
+
}
|
|
3586
|
+
|
|
3587
|
+
/**
|
|
3588
|
+
*
|
|
3589
|
+
*/
|
|
3590
|
+
}, {
|
|
3591
|
+
key: "getBroadworksCorrelationInfo",
|
|
3592
|
+
value: function getBroadworksCorrelationInfo() {
|
|
3593
|
+
return this.broadworksCorrelationInfo;
|
|
3594
|
+
}
|
|
3595
|
+
|
|
3596
|
+
/**
|
|
3597
|
+
* Get call stats for an active call.
|
|
3598
|
+
*
|
|
3599
|
+
* @returns Promise<CallRtpStats> Call Stats.
|
|
3600
|
+
*/
|
|
3601
|
+
}, {
|
|
3602
|
+
key: "getCallRtpStats",
|
|
3603
|
+
value: function getCallRtpStats() {
|
|
3604
|
+
return this.getCallStats();
|
|
3605
|
+
}
|
|
3606
|
+
|
|
3607
|
+
/**
|
|
3608
|
+
* Handle timeout for the missed events
|
|
3609
|
+
* @param expectedStates - An array of next expected states
|
|
3610
|
+
* @param errorMessage - Error message to be emitted if the call is not in the expected state in expected time
|
|
3611
|
+
*/
|
|
3612
|
+
}, {
|
|
3613
|
+
key: "handleTimeout",
|
|
3614
|
+
value: (function () {
|
|
3615
|
+
var _handleTimeout = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee28() {
|
|
3616
|
+
var response;
|
|
3617
|
+
return _regenerator.default.wrap(function (_context29) {
|
|
3618
|
+
while (1) switch (_context29.prev = _context29.next) {
|
|
3619
|
+
case 0:
|
|
3620
|
+
_Logger.default.warn("Call timed out", {
|
|
3621
|
+
file: _constants.CALL_FILE,
|
|
3622
|
+
method: _constants.METHODS.HANDLE_TIMEOUT
|
|
3623
|
+
});
|
|
3624
|
+
this.deleteCb(this.getCorrelationId());
|
|
3625
|
+
this.emit(_types3.CALL_EVENT_KEYS.DISCONNECT, this.getCorrelationId());
|
|
3626
|
+
_context29.next = 1;
|
|
3627
|
+
return this.delete();
|
|
3628
|
+
case 1:
|
|
3629
|
+
response = _context29.sent;
|
|
3630
|
+
_Logger.default.log("Response code: ".concat(response.statusCode), {
|
|
3631
|
+
file: _constants.CALL_FILE,
|
|
3632
|
+
method: _constants.METHODS.HANDLE_TIMEOUT
|
|
3633
|
+
});
|
|
3634
|
+
case 2:
|
|
3635
|
+
case "end":
|
|
3636
|
+
return _context29.stop();
|
|
3637
|
+
}
|
|
3638
|
+
}, _callee28, this);
|
|
3639
|
+
}));
|
|
3640
|
+
function handleTimeout() {
|
|
3641
|
+
return _handleTimeout.apply(this, arguments);
|
|
3642
|
+
}
|
|
3643
|
+
return handleTimeout;
|
|
3644
|
+
}())
|
|
3645
|
+
}], [{
|
|
3646
|
+
key: "getPeerConnectionStateFromEvent",
|
|
3647
|
+
value: function getPeerConnectionStateFromEvent(event, preferredKey) {
|
|
3648
|
+
return event[preferredKey] || event.state || 'unknown';
|
|
3649
|
+
}
|
|
3650
|
+
}]);
|
|
3651
|
+
}(_impl.Eventing);
|
|
3652
|
+
/**
|
|
3653
|
+
* @param activeUrl
|
|
3654
|
+
* @param webex -.
|
|
3655
|
+
* @param dir -.
|
|
3656
|
+
* @param deviceId -.
|
|
3657
|
+
* @param lineId -.
|
|
3658
|
+
* @param serverCb
|
|
3659
|
+
* @param deleteCb
|
|
3660
|
+
* @param indicator - Service Indicator.
|
|
3661
|
+
* @param dest -.
|
|
3662
|
+
*/
|
|
3663
|
+
var createCall = exports.createCall = function createCall(activeUrl, webex, dir, deviceId, lineId, deleteCb, indicator, dest, iceGatheringConfig) {
|
|
3664
|
+
return new Call(activeUrl, webex, dir, deviceId, lineId, deleteCb, indicator, dest, iceGatheringConfig);
|
|
3665
|
+
};
|
|
3666
|
+
//# sourceMappingURL=call.js.map
|