@webex/calling 3.12.0-next.4 → 3.12.0-next.41
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/CallingClient/CallingClient.js +463 -205
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +170 -77
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +589 -445
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +695 -445
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +25 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +4 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +712 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +46 -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 +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +354 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -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/Contacts/ContactsClient.js +13 -11
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Events/types.js +1 -11
- package/dist/Events/types.js.map +1 -1
- package/dist/Metrics/index.js +63 -2
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +357 -1
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +19 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +138 -44
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.js.map +1 -1
- 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 +841 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1845 -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/CallingClient/CallingClient.js +141 -10
- package/dist/module/CallingClient/calling/call.js +177 -61
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +21 -0
- package/dist/module/CallingClient/line/index.js +2 -2
- package/dist/module/CallingClient/registration/register.js +234 -62
- 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 +30 -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 +165 -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/Events/types.js +0 -10
- package/dist/module/Metrics/index.js +48 -1
- package/dist/module/Metrics/types.js +18 -0
- package/dist/module/common/Utils.js +52 -12
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- 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 +589 -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/CallingClient/CallingClient.d.ts +7 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +12 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +34 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +21 -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 +7 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +4 -2
- 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/utils/constants.d.ts +30 -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 +24 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -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/Events/types.d.ts +4 -11
- 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 +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +9 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.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 +20 -5
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -14,9 +14,10 @@ import { CALL_EVENT_KEYS, MEDIA_CONNECTION_EVENT_KEYS, MOBIUS_MIDCALL_STATE, SUP
|
|
|
14
14
|
import { DisconnectCause, DisconnectCode, MidCallEventType, MobiusCallState, MUTE_TYPE, RoapScenario, TransferType, } from './types';
|
|
15
15
|
import log from '../../Logger';
|
|
16
16
|
import { createCallerId } from './CallerId';
|
|
17
|
-
import { METRIC_TYPE, METRIC_EVENT, TRANSFER_ACTION } from '../../Metrics/types';
|
|
17
|
+
import { METRIC_TYPE, METRIC_EVENT, TRANSFER_ACTION, MEDIA_CONNECTION_ACTION, } from '../../Metrics/types';
|
|
18
18
|
import { getMetricManager } from '../../Metrics';
|
|
19
19
|
import { METHOD_START_MESSAGE, SERVICES_ENDPOINT } from '../../common/constants';
|
|
20
|
+
import { APIRequest } from '../utils/request';
|
|
20
21
|
export class Call extends Eventing {
|
|
21
22
|
sdkConnector;
|
|
22
23
|
webex;
|
|
@@ -48,10 +49,143 @@ export class Call extends Eventing {
|
|
|
48
49
|
broadworksCorrelationInfo;
|
|
49
50
|
serviceIndicator;
|
|
50
51
|
mediaNegotiationCompleted;
|
|
52
|
+
connectPending;
|
|
51
53
|
receivedRoapOKSeq;
|
|
52
54
|
localAudioStream;
|
|
53
55
|
rtcMetrics;
|
|
54
56
|
callKeepaliveRetryCount = 0;
|
|
57
|
+
apiRequest;
|
|
58
|
+
handleMediaRoapEvent = async (event) => {
|
|
59
|
+
log.info(`ROAP message to send (rcv from MEDIA-SDK) :
|
|
60
|
+
\n type: ${event.roapMessage?.messageType}, seq: ${event.roapMessage.seq} , version: ${event.roapMessage.version}`, { file: CALL_FILE, method: METHODS.MEDIA_ROAP_EVENTS_LISTENER });
|
|
61
|
+
log.info(`SDP message to send : \n ${event.roapMessage?.sdp}`, {
|
|
62
|
+
file: CALL_FILE,
|
|
63
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
64
|
+
});
|
|
65
|
+
switch (event.roapMessage.messageType) {
|
|
66
|
+
case RoapScenario.OK: {
|
|
67
|
+
const mediaOk = {
|
|
68
|
+
received: false,
|
|
69
|
+
message: event.roapMessage,
|
|
70
|
+
};
|
|
71
|
+
this.sendMediaStateMachineEvt({ type: 'E_ROAP_OK', data: mediaOk });
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case RoapScenario.OFFER: {
|
|
75
|
+
if (!event.roapMessage.sdp) {
|
|
76
|
+
log.warn('Received OFFER without SDP from media SDK', {
|
|
77
|
+
file: CALL_FILE,
|
|
78
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
79
|
+
});
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
log.info(`before modifying sdp: ${event.roapMessage.sdp}`, {
|
|
83
|
+
file: CALL_FILE,
|
|
84
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
85
|
+
});
|
|
86
|
+
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
87
|
+
const sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
|
|
88
|
+
log.info(`after modification sdp: ${sdpVideoPortZero}`, {
|
|
89
|
+
file: CALL_FILE,
|
|
90
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
91
|
+
});
|
|
92
|
+
event.roapMessage.sdp = sdpVideoPortZero;
|
|
93
|
+
this.localRoapMessage = event.roapMessage;
|
|
94
|
+
this.sendCallStateMachineEvt({ type: 'E_SEND_CALL_SETUP', data: event.roapMessage });
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
case RoapScenario.ANSWER:
|
|
98
|
+
if (!event.roapMessage.sdp) {
|
|
99
|
+
log.warn('Received OFFER without SDP from media SDK', {
|
|
100
|
+
file: CALL_FILE,
|
|
101
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
102
|
+
});
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
106
|
+
this.localRoapMessage = event.roapMessage;
|
|
107
|
+
if (this.connectPending) {
|
|
108
|
+
this.sendCallStateMachineEvt({ type: 'E_SEND_CALL_CONNECT' });
|
|
109
|
+
}
|
|
110
|
+
this.sendMediaStateMachineEvt({ type: 'E_SEND_ROAP_ANSWER', data: event.roapMessage });
|
|
111
|
+
break;
|
|
112
|
+
case RoapScenario.ERROR:
|
|
113
|
+
this.sendMediaStateMachineEvt({ type: 'E_ROAP_ERROR', data: event.roapMessage });
|
|
114
|
+
break;
|
|
115
|
+
case RoapScenario.OFFER_RESPONSE:
|
|
116
|
+
if (!event.roapMessage.sdp) {
|
|
117
|
+
log.warn('Received OFFER without SDP from media SDK', {
|
|
118
|
+
file: CALL_FILE,
|
|
119
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
120
|
+
});
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
124
|
+
this.localRoapMessage = event.roapMessage;
|
|
125
|
+
if (this.connectPending) {
|
|
126
|
+
this.sendCallStateMachineEvt({ type: 'E_SEND_CALL_CONNECT' });
|
|
127
|
+
}
|
|
128
|
+
this.sendMediaStateMachineEvt({ type: 'E_SEND_ROAP_OFFER', data: event.roapMessage });
|
|
129
|
+
break;
|
|
130
|
+
default:
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
handleRemoteTrackAdded = (event) => {
|
|
134
|
+
if (event.type === MEDIA_CONNECTION_EVENT_KEYS.MEDIA_TYPE_AUDIO) {
|
|
135
|
+
this.emit(CALL_EVENT_KEYS.REMOTE_MEDIA, event.track);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
static getPeerConnectionStateFromEvent(event, preferredKey) {
|
|
139
|
+
return event[preferredKey] || event.state || 'unknown';
|
|
140
|
+
}
|
|
141
|
+
handleIceGatheringStateChanged = (event) => {
|
|
142
|
+
const iceGatheringState = Call.getPeerConnectionStateFromEvent(event, 'iceGatheringState');
|
|
143
|
+
log.info(`ICE gathering state changed to: ${iceGatheringState}`, {
|
|
144
|
+
file: CALL_FILE,
|
|
145
|
+
method: METHODS.MEDIA_ICE_EVENTS_LISTENER,
|
|
146
|
+
});
|
|
147
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA, MEDIA_CONNECTION_ACTION.ICE_GATHERING_STATE_CHANGED, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, undefined, undefined, iceGatheringState);
|
|
148
|
+
};
|
|
149
|
+
handlePeerConnectionStateChanged = (event) => {
|
|
150
|
+
const connectionState = Call.getPeerConnectionStateFromEvent(event, 'connectionState');
|
|
151
|
+
log.info(`Peer connection state changed to: ${connectionState}`, {
|
|
152
|
+
file: CALL_FILE,
|
|
153
|
+
method: METHODS.MEDIA_ICE_EVENTS_LISTENER,
|
|
154
|
+
});
|
|
155
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA, MEDIA_CONNECTION_ACTION.PEER_CONNECTION_STATE_CHANGED, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, undefined, undefined, connectionState);
|
|
156
|
+
};
|
|
157
|
+
handleIceConnectionStateChanged = (event) => {
|
|
158
|
+
const iceConnectionState = Call.getPeerConnectionStateFromEvent(event, 'iceConnectionState');
|
|
159
|
+
log.info(`ICE connection state changed to: ${iceConnectionState}`, {
|
|
160
|
+
file: CALL_FILE,
|
|
161
|
+
method: METHODS.MEDIA_ICE_EVENTS_LISTENER,
|
|
162
|
+
});
|
|
163
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA, MEDIA_CONNECTION_ACTION.ICE_CONNECTION_STATE_CHANGED, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, undefined, undefined, iceConnectionState);
|
|
164
|
+
};
|
|
165
|
+
handleIceCandidateError = (event) => {
|
|
166
|
+
const iceErrorPayload = {
|
|
167
|
+
address: event.address ?? null,
|
|
168
|
+
errorCode: event.errorCode,
|
|
169
|
+
errorText: event.errorText,
|
|
170
|
+
port: event.port ?? null,
|
|
171
|
+
url: event.url,
|
|
172
|
+
};
|
|
173
|
+
log.warn(`ICE candidate error occurred: ${JSON.stringify(iceErrorPayload)}`, {
|
|
174
|
+
file: CALL_FILE,
|
|
175
|
+
method: METHODS.MEDIA_ICE_EVENTS_LISTENER,
|
|
176
|
+
});
|
|
177
|
+
const callError = createCallError(`ICE candidate error occurred: ${JSON.stringify(iceErrorPayload)}`, { file: CALL_FILE, method: METHODS.MEDIA_ICE_EVENTS_LISTENER }, ERROR_TYPE.CALL_ERROR, this.correlationId, ERROR_LAYER.MEDIA);
|
|
178
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA_ERROR, MEDIA_CONNECTION_ACTION.ICE_CANDIDATE_ERROR, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, undefined, undefined, undefined, callError);
|
|
179
|
+
};
|
|
180
|
+
handleRoapFailure = (error) => {
|
|
181
|
+
const failureMessage = error.message || 'Unknown ROAP failure received from media SDK';
|
|
182
|
+
log.warn(`ROAP failure occurred: ${failureMessage}`, {
|
|
183
|
+
file: CALL_FILE,
|
|
184
|
+
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
185
|
+
});
|
|
186
|
+
const callError = createCallError(`ROAP failure occurred: ${failureMessage}`, { file: CALL_FILE, method: METHODS.MEDIA_ROAP_EVENTS_LISTENER }, ERROR_TYPE.CALL_ERROR, this.correlationId, ERROR_LAYER.MEDIA);
|
|
187
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA_ERROR, MEDIA_CONNECTION_ACTION.ROAP_FAILURE, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, undefined, undefined, undefined, callError);
|
|
188
|
+
};
|
|
55
189
|
isMuted() {
|
|
56
190
|
return this.muted;
|
|
57
191
|
}
|
|
@@ -86,6 +220,7 @@ export class Call extends Eventing {
|
|
|
86
220
|
this.mobiusUrl = activeUrl;
|
|
87
221
|
this.receivedRoapOKSeq = 0;
|
|
88
222
|
this.mediaNegotiationCompleted = false;
|
|
223
|
+
this.connectPending = false;
|
|
89
224
|
log.info(`Webex Calling Url:- ${this.mobiusUrl}`, {
|
|
90
225
|
file: CALL_FILE,
|
|
91
226
|
method: METHODS.CONSTRUCTOR,
|
|
@@ -102,6 +237,7 @@ export class Call extends Eventing {
|
|
|
102
237
|
this.remoteRoapMessage = null;
|
|
103
238
|
this.disconnectReason = { code: DisconnectCode.NORMAL, cause: DisconnectCause.NORMAL };
|
|
104
239
|
this.rtcMetrics = new RtcMetrics(this.webex, { callId: this.callId }, this.correlationId);
|
|
240
|
+
this.apiRequest = APIRequest.getInstance({ webex: this.webex });
|
|
105
241
|
const callMachine = createMachine({
|
|
106
242
|
schema: {
|
|
107
243
|
context: {},
|
|
@@ -281,6 +417,11 @@ export class Call extends Eventing {
|
|
|
281
417
|
},
|
|
282
418
|
},
|
|
283
419
|
on: {
|
|
420
|
+
E_SEND_CALL_CONNECT: {
|
|
421
|
+
cond: () => this.connectPending,
|
|
422
|
+
target: 'S_SEND_CALL_CONNECT',
|
|
423
|
+
actions: ['outgoingCallConnect'],
|
|
424
|
+
},
|
|
284
425
|
E_CALL_ESTABLISHED: {
|
|
285
426
|
target: 'S_CALL_ESTABLISHED',
|
|
286
427
|
actions: ['callEstablished'],
|
|
@@ -842,6 +983,7 @@ export class Call extends Eventing {
|
|
|
842
983
|
}
|
|
843
984
|
}
|
|
844
985
|
async handleOutgoingCallConnect(event) {
|
|
986
|
+
this.connectPending = false;
|
|
845
987
|
log.info(`${METHOD_START_MESSAGE} with: ${this.getCorrelationId()}`, {
|
|
846
988
|
file: CALL_FILE,
|
|
847
989
|
method: METHODS.HANDLE_OUTGOING_CALL_CONNECT,
|
|
@@ -851,6 +993,7 @@ export class Call extends Eventing {
|
|
|
851
993
|
file: CALL_FILE,
|
|
852
994
|
method: METHODS.HANDLE_OUTGOING_CALL_CONNECT,
|
|
853
995
|
});
|
|
996
|
+
this.connectPending = true;
|
|
854
997
|
return;
|
|
855
998
|
}
|
|
856
999
|
try {
|
|
@@ -910,6 +1053,7 @@ export class Call extends Eventing {
|
|
|
910
1053
|
clearInterval(this.sessionTimer);
|
|
911
1054
|
}
|
|
912
1055
|
if (this.mediaConnection) {
|
|
1056
|
+
this.unregisterMediaConnectionListeners();
|
|
913
1057
|
this.mediaConnection.close();
|
|
914
1058
|
log.info('Closing media channel', {
|
|
915
1059
|
file: CALL_FILE,
|
|
@@ -953,6 +1097,7 @@ export class Call extends Eventing {
|
|
|
953
1097
|
clearInterval(this.sessionTimer);
|
|
954
1098
|
}
|
|
955
1099
|
if (this.mediaConnection) {
|
|
1100
|
+
this.unregisterMediaConnectionListeners();
|
|
956
1101
|
this.mediaConnection.close();
|
|
957
1102
|
log.info('Closing media channel', {
|
|
958
1103
|
file: CALL_FILE,
|
|
@@ -1064,6 +1209,7 @@ export class Call extends Eventing {
|
|
|
1064
1209
|
clearInterval(this.sessionTimer);
|
|
1065
1210
|
}
|
|
1066
1211
|
if (this.mediaConnection) {
|
|
1212
|
+
this.unregisterMediaConnectionListeners();
|
|
1067
1213
|
this.mediaConnection.close();
|
|
1068
1214
|
log.info('Closing media channel', {
|
|
1069
1215
|
file: CALL_FILE,
|
|
@@ -1435,6 +1581,7 @@ export class Call extends Eventing {
|
|
|
1435
1581
|
this.initMediaConnection(localAudioTrack);
|
|
1436
1582
|
this.mediaRoapEventsListener();
|
|
1437
1583
|
this.mediaTrackListener();
|
|
1584
|
+
this.mediaIceEventsListener();
|
|
1438
1585
|
this.registerListeners(localAudioStream);
|
|
1439
1586
|
}
|
|
1440
1587
|
if (this.callStateMachine.state.value === 'S_SEND_CALL_PROGRESS') {
|
|
@@ -1465,6 +1612,7 @@ export class Call extends Eventing {
|
|
|
1465
1612
|
this.initMediaConnection(localAudioTrack);
|
|
1466
1613
|
this.mediaRoapEventsListener();
|
|
1467
1614
|
this.mediaTrackListener();
|
|
1615
|
+
this.mediaIceEventsListener();
|
|
1468
1616
|
this.registerListeners(localAudioStream);
|
|
1469
1617
|
}
|
|
1470
1618
|
if (this.mediaStateMachine.state.value === 'S_ROAP_IDLE') {
|
|
@@ -1485,7 +1633,7 @@ export class Call extends Eventing {
|
|
|
1485
1633
|
mediaId: uuid(),
|
|
1486
1634
|
},
|
|
1487
1635
|
};
|
|
1488
|
-
return this.
|
|
1636
|
+
return this.apiRequest.makeRequest({
|
|
1489
1637
|
uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALL_ENDPOINT_RESOURCE}`,
|
|
1490
1638
|
method: HTTP_METHODS.POST,
|
|
1491
1639
|
service: ALLOWED_SERVICES.MOBIUS,
|
|
@@ -1509,7 +1657,7 @@ export class Call extends Eventing {
|
|
|
1509
1657
|
file: CALL_FILE,
|
|
1510
1658
|
method: 'patch',
|
|
1511
1659
|
});
|
|
1512
|
-
return this.
|
|
1660
|
+
return this.apiRequest.makeRequest({
|
|
1513
1661
|
uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,
|
|
1514
1662
|
method: HTTP_METHODS.PATCH,
|
|
1515
1663
|
service: ALLOWED_SERVICES.MOBIUS,
|
|
@@ -1574,10 +1722,10 @@ export class Call extends Eventing {
|
|
|
1574
1722
|
});
|
|
1575
1723
|
}
|
|
1576
1724
|
}
|
|
1577
|
-
return this.
|
|
1725
|
+
return this.apiRequest.makeRequest(request);
|
|
1578
1726
|
}
|
|
1579
1727
|
async postStatus() {
|
|
1580
|
-
return this.
|
|
1728
|
+
return this.apiRequest.makeRequest({
|
|
1581
1729
|
uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${CALL_STATUS_RESOURCE}`,
|
|
1582
1730
|
method: HTTP_METHODS.POST,
|
|
1583
1731
|
service: ALLOWED_SERVICES.MOBIUS,
|
|
@@ -1688,7 +1836,7 @@ export class Call extends Eventing {
|
|
|
1688
1836
|
file: CALL_FILE,
|
|
1689
1837
|
method: METHODS.POST_MEDIA,
|
|
1690
1838
|
});
|
|
1691
|
-
return this.
|
|
1839
|
+
return this.apiRequest.makeRequest({
|
|
1692
1840
|
uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}/${MEDIA_ENDPOINT_RESOURCE}`,
|
|
1693
1841
|
method: HTTP_METHODS.POST,
|
|
1694
1842
|
service: ALLOWED_SERVICES.MOBIUS,
|
|
@@ -1710,61 +1858,29 @@ export class Call extends Eventing {
|
|
|
1710
1858
|
});
|
|
1711
1859
|
}
|
|
1712
1860
|
mediaRoapEventsListener() {
|
|
1713
|
-
this.mediaConnection.on(MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND,
|
|
1714
|
-
|
|
1715
|
-
\n type: ${event.roapMessage?.messageType}, seq: ${event.roapMessage.seq} , version: ${event.roapMessage.version}`, { file: CALL_FILE, method: METHODS.MEDIA_ROAP_EVENTS_LISTENER });
|
|
1716
|
-
log.info(`SDP message to send : \n ${event.roapMessage?.sdp}`, {
|
|
1717
|
-
file: CALL_FILE,
|
|
1718
|
-
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
1719
|
-
});
|
|
1720
|
-
switch (event.roapMessage.messageType) {
|
|
1721
|
-
case RoapScenario.OK: {
|
|
1722
|
-
const mediaOk = {
|
|
1723
|
-
received: false,
|
|
1724
|
-
message: event.roapMessage,
|
|
1725
|
-
};
|
|
1726
|
-
this.sendMediaStateMachineEvt({ type: 'E_ROAP_OK', data: mediaOk });
|
|
1727
|
-
break;
|
|
1728
|
-
}
|
|
1729
|
-
case RoapScenario.OFFER: {
|
|
1730
|
-
log.info(`before modifying sdp: ${event.roapMessage.sdp}`, {
|
|
1731
|
-
file: CALL_FILE,
|
|
1732
|
-
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
1733
|
-
});
|
|
1734
|
-
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
1735
|
-
const sdpVideoPortZero = event.roapMessage.sdp.replace(/^m=(video) (?:\d+) /gim, 'm=$1 0 ');
|
|
1736
|
-
log.info(`after modification sdp: ${sdpVideoPortZero}`, {
|
|
1737
|
-
file: CALL_FILE,
|
|
1738
|
-
method: METHODS.MEDIA_ROAP_EVENTS_LISTENER,
|
|
1739
|
-
});
|
|
1740
|
-
event.roapMessage.sdp = sdpVideoPortZero;
|
|
1741
|
-
this.localRoapMessage = event.roapMessage;
|
|
1742
|
-
this.sendCallStateMachineEvt({ type: 'E_SEND_CALL_SETUP', data: event.roapMessage });
|
|
1743
|
-
break;
|
|
1744
|
-
}
|
|
1745
|
-
case RoapScenario.ANSWER:
|
|
1746
|
-
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
1747
|
-
this.localRoapMessage = event.roapMessage;
|
|
1748
|
-
this.sendMediaStateMachineEvt({ type: 'E_SEND_ROAP_ANSWER', data: event.roapMessage });
|
|
1749
|
-
break;
|
|
1750
|
-
case RoapScenario.ERROR:
|
|
1751
|
-
this.sendMediaStateMachineEvt({ type: 'E_ROAP_ERROR', data: event.roapMessage });
|
|
1752
|
-
break;
|
|
1753
|
-
case RoapScenario.OFFER_RESPONSE:
|
|
1754
|
-
event.roapMessage.sdp = modifySdpForIPv4(event.roapMessage.sdp);
|
|
1755
|
-
this.localRoapMessage = event.roapMessage;
|
|
1756
|
-
this.sendMediaStateMachineEvt({ type: 'E_SEND_ROAP_OFFER', data: event.roapMessage });
|
|
1757
|
-
break;
|
|
1758
|
-
default:
|
|
1759
|
-
}
|
|
1760
|
-
});
|
|
1861
|
+
this.mediaConnection.on(MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
|
|
1862
|
+
this.mediaConnection.on(MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
|
|
1761
1863
|
}
|
|
1762
1864
|
mediaTrackListener() {
|
|
1763
|
-
this.mediaConnection.on(MediaConnectionEventNames.REMOTE_TRACK_ADDED,
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1865
|
+
this.mediaConnection.on(MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
|
|
1866
|
+
}
|
|
1867
|
+
mediaIceEventsListener() {
|
|
1868
|
+
this.mediaConnection.on(MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
|
|
1869
|
+
this.mediaConnection.on(MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
|
|
1870
|
+
this.mediaConnection.on(MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
|
|
1871
|
+
this.mediaConnection.on(MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
|
|
1872
|
+
}
|
|
1873
|
+
unregisterMediaConnectionListeners() {
|
|
1874
|
+
if (!this.mediaConnection || typeof this.mediaConnection.off !== 'function') {
|
|
1875
|
+
return;
|
|
1876
|
+
}
|
|
1877
|
+
this.mediaConnection.off(MediaConnectionEventNames.ROAP_MESSAGE_TO_SEND, this.handleMediaRoapEvent);
|
|
1878
|
+
this.mediaConnection.off(MediaConnectionEventNames.ROAP_FAILURE, this.handleRoapFailure);
|
|
1879
|
+
this.mediaConnection.off(MediaConnectionEventNames.REMOTE_TRACK_ADDED, this.handleRemoteTrackAdded);
|
|
1880
|
+
this.mediaConnection.off(MediaConnectionEventNames.ICE_GATHERING_STATE_CHANGED, this.handleIceGatheringStateChanged);
|
|
1881
|
+
this.mediaConnection.off(MediaConnectionEventNames.PEER_CONNECTION_STATE_CHANGED, this.handlePeerConnectionStateChanged);
|
|
1882
|
+
this.mediaConnection.off(MediaConnectionEventNames.ICE_CONNECTION_STATE_CHANGED, this.handleIceConnectionStateChanged);
|
|
1883
|
+
this.mediaConnection.off(MediaConnectionEventNames.ICE_CANDIDATE_ERROR, this.handleIceCandidateError);
|
|
1768
1884
|
}
|
|
1769
1885
|
onEffectEnabled = () => {
|
|
1770
1886
|
this.metricManager.submitBNRMetric(METRIC_EVENT.BNR_ENABLED, METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId);
|
|
@@ -1809,7 +1925,7 @@ export class Call extends Eventing {
|
|
|
1809
1925
|
}
|
|
1810
1926
|
async delete() {
|
|
1811
1927
|
const disconnectMetrics = await this.getCallStats();
|
|
1812
|
-
return this.
|
|
1928
|
+
return this.apiRequest.makeRequest({
|
|
1813
1929
|
uri: `${this.mobiusUrl}${DEVICES_ENDPOINT_RESOURCE}/${this.deviceId}/${CALLS_ENDPOINT_RESOURCE}/${this.callId}`,
|
|
1814
1930
|
method: HTTP_METHODS.DELETE,
|
|
1815
1931
|
service: ALLOWED_SERVICES.MOBIUS,
|
|
@@ -1834,7 +1950,7 @@ export class Call extends Eventing {
|
|
|
1834
1950
|
this.metricManager.submitCallMetric(METRIC_EVENT.CALL_ERROR, transferMetricAction || this.callStateMachine.state.value.toString(), METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, error);
|
|
1835
1951
|
}
|
|
1836
1952
|
else {
|
|
1837
|
-
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, this.remoteRoapMessage?.sdp, error);
|
|
1953
|
+
this.metricManager.submitMediaMetric(METRIC_EVENT.MEDIA_ERROR, this.mediaStateMachine.state.value.toString(), METRIC_TYPE.BEHAVIORAL, this.callId, this.correlationId, this.localRoapMessage.sdp, this.remoteRoapMessage?.sdp, undefined, error);
|
|
1838
1954
|
}
|
|
1839
1955
|
}
|
|
1840
1956
|
handleMidCallEvent(event) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { APIRequest } from '../utils/request';
|
|
1
2
|
import { METHOD_START_MESSAGE } from '../../common/constants';
|
|
2
3
|
import { CALL_MANAGER_FILE, METHODS } from '../constants';
|
|
3
4
|
import { CALLING_CLIENT_EVENT_KEYS, LINE_EVENT_KEYS } from '../../Events/types';
|
|
@@ -15,6 +16,7 @@ export class CallManager extends Eventing {
|
|
|
15
16
|
activeMobiusUrl;
|
|
16
17
|
serviceIndicator;
|
|
17
18
|
lineDict;
|
|
19
|
+
apiRequest;
|
|
18
20
|
constructor(webex, indicator) {
|
|
19
21
|
super();
|
|
20
22
|
this.sdkConnector = SDKConnector;
|
|
@@ -24,6 +26,7 @@ export class CallManager extends Eventing {
|
|
|
24
26
|
}
|
|
25
27
|
this.lineDict = {};
|
|
26
28
|
this.webex = this.sdkConnector.getWebex();
|
|
29
|
+
this.apiRequest = APIRequest.getInstance({ webex: this.webex });
|
|
27
30
|
this.callCollection = {};
|
|
28
31
|
this.activeMobiusUrl = '';
|
|
29
32
|
this.listenForWsEvents();
|
|
@@ -59,13 +62,15 @@ export class CallManager extends Eventing {
|
|
|
59
62
|
});
|
|
60
63
|
}
|
|
61
64
|
listenForWsEvents() {
|
|
62
|
-
this.
|
|
63
|
-
this.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
if (!this.apiRequest.isSocketEnabled()) {
|
|
66
|
+
this.sdkConnector.registerListener('event:mobius', async (event) => {
|
|
67
|
+
this.dequeueWsEvents(event);
|
|
68
|
+
});
|
|
69
|
+
log.info('Successfully registered listener for Mobius events', {
|
|
70
|
+
file: CALL_MANAGER_FILE,
|
|
71
|
+
method: METHODS.REGISTER_SESSIONS_LISTENER,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
69
74
|
}
|
|
70
75
|
dequeueWsEvents(event) {
|
|
71
76
|
log.info(`${METHOD_START_MESSAGE} with event ${event}`, {
|
|
@@ -147,6 +152,21 @@ export class CallManager extends Eventing {
|
|
|
147
152
|
call.sendCallStateMachineEvt({ type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data });
|
|
148
153
|
break;
|
|
149
154
|
}
|
|
155
|
+
case MobiusEventType.CALL_INFO: {
|
|
156
|
+
log.log(`Received call info mobiusEvent for call: ${correlationId}`, {
|
|
157
|
+
file: CALL_MANAGER_FILE,
|
|
158
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
159
|
+
});
|
|
160
|
+
const call = this.getCall(correlationId);
|
|
161
|
+
if (call && mobiusEvent.data.callerId) {
|
|
162
|
+
log.info('Processing Caller-Id data', {
|
|
163
|
+
file: CALL_MANAGER_FILE,
|
|
164
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
165
|
+
});
|
|
166
|
+
call.startCallerIdResolution(mobiusEvent.data.callerId);
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
150
170
|
case MobiusEventType.CALL_MEDIA: {
|
|
151
171
|
log.log(`Received call media mobiusEvent for call: ${correlationId}`, {
|
|
152
172
|
file: CALL_MANAGER_FILE,
|
|
@@ -5,6 +5,8 @@ export var MobiusEventType;
|
|
|
5
5
|
MobiusEventType["CALL_CONNECTED"] = "mobius.callconnected";
|
|
6
6
|
MobiusEventType["CALL_MEDIA"] = "mobius.media";
|
|
7
7
|
MobiusEventType["CALL_DISCONNECTED"] = "mobius.calldisconnected";
|
|
8
|
+
MobiusEventType["CALL_INFO"] = "mobius.callinfo";
|
|
9
|
+
MobiusEventType["REGISTRATION_DOWN"] = "registration.down";
|
|
8
10
|
})(MobiusEventType || (MobiusEventType = {}));
|
|
9
11
|
export var MediaState;
|
|
10
12
|
(function (MediaState) {
|
|
@@ -69,6 +69,9 @@ export const CALL_FILE = 'call';
|
|
|
69
69
|
export const CALL_MANAGER_FILE = 'callManager';
|
|
70
70
|
export const METRIC_FILE = 'metric';
|
|
71
71
|
export const REGISTRATION_FILE = 'register';
|
|
72
|
+
export const REQUEST_FILE = 'REQUEST';
|
|
73
|
+
export const MOBIUS_SOCKET_MAPPER_FILE = 'mobiusSocketMapper';
|
|
74
|
+
export const WS_FEATURE_FLAG_FILE = 'wsFeatureFlag';
|
|
72
75
|
export const CODEC_ID = 'codecId';
|
|
73
76
|
export const MEDIA_ID = 'id';
|
|
74
77
|
export const RTC_ICE_CANDIDATE_PAIR = 'RTCIceCandidatePair_';
|
|
@@ -127,6 +130,7 @@ export const MOBIUS_EU_INT = 'mobius-eu-central-1.int.infra.webex.com';
|
|
|
127
130
|
export const FAILOVER_CACHE_PREFIX = 'wxc-failover-state';
|
|
128
131
|
export const ACTIVE_MOBIUS_STORAGE_KEY = 'wxc-active-mobius';
|
|
129
132
|
export const ICE_CANDIDATES_TIMEOUT = 3000;
|
|
133
|
+
export const WCC_CALLING_RTMS_DOMAIN = 'wcc-calling-rtms-domain';
|
|
130
134
|
export const METHODS = {
|
|
131
135
|
CONSTRUCTOR: 'constructor',
|
|
132
136
|
CREATE_CALL: 'createCall',
|
|
@@ -179,6 +183,7 @@ export const METHODS = {
|
|
|
179
183
|
POST_MEDIA: 'postMedia',
|
|
180
184
|
MEDIA_ROAP_EVENTS_LISTENER: 'mediaRoapEventsListener',
|
|
181
185
|
MEDIA_TRACK_LISTENER: 'mediaTrackListener',
|
|
186
|
+
MEDIA_ICE_EVENTS_LISTENER: 'mediaIceEventsListener',
|
|
182
187
|
ON_EFFECT_ENABLED: 'onEffectEnabled',
|
|
183
188
|
ON_EFFECT_DISABLED: 'onEffectDisabled',
|
|
184
189
|
UPDATE_TRACK: 'updateTrack',
|
|
@@ -230,4 +235,20 @@ export const METHODS = {
|
|
|
230
235
|
UPLOAD_LOGS: 'uploadLogs',
|
|
231
236
|
GET_SDK_CONNECTOR: 'getSDKConnector',
|
|
232
237
|
GET_CONNECTED_CALL: 'getConnectedCall',
|
|
238
|
+
CONNECT_TO_MOBIUS_SOCKET: 'connectToMobiusSocket',
|
|
239
|
+
REGISTER_MOBIUS_SOCKET_LISTENER: 'registerMobiusSocketListener',
|
|
240
|
+
UNREGISTER_MOBIUS_SOCKET_LISTENER: 'unregisterMobiusSocketListener',
|
|
241
|
+
HANDLE_MOBIUS_ASYNC_EVENT: 'handleMobiusAsyncEvent',
|
|
242
|
+
HANDLE_REGISTRATION_DOWN_EVENT: 'handleRegistrationDownEvent',
|
|
243
|
+
DISCONNECT_FROM_MOBIUS_SOCKET: 'disconnectFromMobiusSocket',
|
|
244
|
+
MAKE_REQUEST: 'makeRequest',
|
|
245
|
+
DERIVE_MOBIUS_SOCKET_MESSAGE_TYPE: 'deriveMobiusSocketMessageType',
|
|
246
|
+
IS_MOBIUS_WSS_ENABLED: 'isMobiusWssEnabled',
|
|
247
|
+
RESTORE_PREVIOUS_REGISTRATION: 'restorePreviousRegistration',
|
|
248
|
+
RESTART_REGISTRATION: 'restartRegistration',
|
|
249
|
+
TRIGGER_REGISTRATION: 'triggerRegistration',
|
|
250
|
+
HANDLE_404_KEEPALIVE_FAILURE: 'handle404KeepaliveFailure',
|
|
251
|
+
INITIATE_FAILBACK: 'initiateFailback',
|
|
252
|
+
EXECUTE_FAILBACK: 'executeFailback',
|
|
253
|
+
GET_RTMS_DOMAIN: 'getRTMSDomain',
|
|
233
254
|
};
|
|
@@ -70,12 +70,12 @@ export default class Line extends Eventing {
|
|
|
70
70
|
await this.registration.triggerRegistration();
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
async deregister() {
|
|
73
|
+
async deregister(closeMobiusWss = false) {
|
|
74
74
|
log.info(METHOD_START_MESSAGE, {
|
|
75
75
|
file: LINE_FILE,
|
|
76
76
|
method: METHODS.DEREGISTER,
|
|
77
77
|
});
|
|
78
|
-
await this.registration.deregister();
|
|
78
|
+
await this.registration.deregister(closeMobiusWss);
|
|
79
79
|
this.registration.setStatus(RegistrationStatus.IDLE);
|
|
80
80
|
}
|
|
81
81
|
normalizeLine(deviceInfo) {
|