@exotel-npm-dev/webrtc-client-sdk 1.0.22 → 1.0.24
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/Changelog +0 -3
- package/Makefile +9 -0
- package/dist/exotelsdk.js +71 -176
- package/dist/exotelsdk.js.map +1 -1
- package/package.json +3 -3
- package/src/api/callAPI/Call.js +10 -17
- package/src/listeners/ExWebClient.js +18 -39
- package/src/api/LogManager.js +0 -40
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@exotel-npm-dev/webrtc-client-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.24",
|
|
4
4
|
"description": "client sdk for webrtc based on webrtc core sdk",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -29,6 +29,6 @@
|
|
|
29
29
|
"webpack-cli": "^4.10.0"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@exotel-npm-dev/webrtc-core-sdk": "
|
|
32
|
+
"@exotel-npm-dev/webrtc-core-sdk": "1.0.18"
|
|
33
33
|
}
|
|
34
|
-
}
|
|
34
|
+
}
|
package/src/api/callAPI/Call.js
CHANGED
|
@@ -24,34 +24,27 @@ export function Call() {
|
|
|
24
24
|
/**
|
|
25
25
|
* When agent clicks on mute
|
|
26
26
|
*/
|
|
27
|
-
logger.log('
|
|
28
|
-
|
|
27
|
+
logger.log('mute toggle clicked')
|
|
28
|
+
let dummyFlag = null;
|
|
29
|
+
webrtcSIPPhone.webRTCMuteUnmute(null);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
this.Mute = function () {
|
|
32
33
|
/**
|
|
33
34
|
* When agent clicks on mute
|
|
34
35
|
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
webrtcSIPPhone.muteAction(true);
|
|
39
|
-
} else {
|
|
40
|
-
logger.log('Call: Mute: Already muted');
|
|
41
|
-
}
|
|
36
|
+
logger.log('mute clicked')
|
|
37
|
+
let dummyFlag = true;
|
|
38
|
+
webrtcSIPPhone.webRTCMuteUnmute(dummyFlag);
|
|
42
39
|
}
|
|
43
|
-
|
|
40
|
+
|
|
44
41
|
this.UnMute = function () {
|
|
45
42
|
/**
|
|
46
43
|
* When agent clicks on mute
|
|
47
44
|
*/
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
logger.log('Call: Unmute: Already unmuted');
|
|
52
|
-
} else {
|
|
53
|
-
webrtcSIPPhone.muteAction(false);
|
|
54
|
-
}
|
|
45
|
+
logger.log('unmute clicked')
|
|
46
|
+
let dummyFlag = false;
|
|
47
|
+
webrtcSIPPhone.webRTCMuteUnmute(dummyFlag);
|
|
55
48
|
}
|
|
56
49
|
|
|
57
50
|
this.HoldToggle = function () {
|
|
@@ -12,7 +12,6 @@ import { webrtcTroubleshooterEventBus } from "./Callback";
|
|
|
12
12
|
|
|
13
13
|
import { webrtcSIPPhone } from '@exotel-npm-dev/webrtc-core-sdk';
|
|
14
14
|
import { CallDetails } from "../api/callAPI/CallDetails";
|
|
15
|
-
import LogManager from '../api/LogManager.js';
|
|
16
15
|
|
|
17
16
|
var intervalId;
|
|
18
17
|
var intervalIDMap = new Map();
|
|
@@ -68,7 +67,7 @@ export function ExDelegationHandler(exClient_) {
|
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
this.onCallStatSipJsSessionEvent = function (ev) {
|
|
71
|
-
logger.log("delegationHandler: onCallStatSipJsSessionEvent"
|
|
70
|
+
logger.log("delegationHandler: onCallStatSipJsSessionEvent\n");
|
|
72
71
|
}
|
|
73
72
|
|
|
74
73
|
this.sendWebRTCEventsToFSM = function (eventType, sipMethod) {
|
|
@@ -225,21 +224,6 @@ export class ExotelWebClient {
|
|
|
225
224
|
//this.webRTCPhones = {};
|
|
226
225
|
|
|
227
226
|
sipAccountInfo = null;
|
|
228
|
-
clientSDKLoggerCallback = null;
|
|
229
|
-
|
|
230
|
-
constructor() {
|
|
231
|
-
/*
|
|
232
|
-
Register the logger callback and emit the onLog event
|
|
233
|
-
*/
|
|
234
|
-
logger.registerLoggerCallback(function (type, message, args) {
|
|
235
|
-
|
|
236
|
-
LogManager.onLog(type, message, args);
|
|
237
|
-
if (this.clientSDKLoggerCallback)
|
|
238
|
-
this.clientSDKLoggerCallback("log", arg1, args);
|
|
239
|
-
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
|
|
243
227
|
|
|
244
228
|
initWebrtc = (sipAccountInfo_,
|
|
245
229
|
RegisterEventCallBack, CallListenerCallback, SessionCallback) => {
|
|
@@ -260,7 +244,7 @@ export class ExotelWebClient {
|
|
|
260
244
|
this.call = new Call();
|
|
261
245
|
}
|
|
262
246
|
|
|
263
|
-
logger.log("
|
|
247
|
+
logger.log("Exotel Client Initialised with " + JSON.stringify(sipAccountInfo_))
|
|
264
248
|
this.sipAccountInfo = sipAccountInfo_;
|
|
265
249
|
if (!this.sipAccountInfo["userName"] || !this.sipAccountInfo["sipdomain"] || !this.sipAccountInfo["port"]) {
|
|
266
250
|
return false;
|
|
@@ -269,16 +253,16 @@ export class ExotelWebClient {
|
|
|
269
253
|
|
|
270
254
|
callbacks.initializeCallback(CallListenerCallback);
|
|
271
255
|
registerCallback.initializeRegisterCallback(RegisterEventCallBack);
|
|
272
|
-
logger.log("
|
|
256
|
+
logger.log("Initializing session callback")
|
|
273
257
|
sessionCallback.initializeSessionCallback(SessionCallback);
|
|
274
258
|
this.setEventListener(this.eventListener);
|
|
275
259
|
return true;
|
|
276
260
|
};
|
|
277
261
|
|
|
278
262
|
DoRegister = () => {
|
|
279
|
-
logger.log("ExWebClient:
|
|
263
|
+
logger.log("ExWebClient:DoRegister Entry")
|
|
280
264
|
if (!this.isReadyToRegister) {
|
|
281
|
-
logger.warn("ExWebClient:
|
|
265
|
+
logger.warn("ExWebClient:DoRegister SDK is not ready to register");
|
|
282
266
|
return false;
|
|
283
267
|
}
|
|
284
268
|
DoRegisterRL(this.sipAccountInfo, this);
|
|
@@ -286,7 +270,7 @@ export class ExotelWebClient {
|
|
|
286
270
|
};
|
|
287
271
|
|
|
288
272
|
UnRegister = () => {
|
|
289
|
-
logger.log("ExWebClient:
|
|
273
|
+
logger.log("ExWebClient:UnRegister Entry")
|
|
290
274
|
UnRegisterRL(this.sipAccountInfo, this)
|
|
291
275
|
};
|
|
292
276
|
|
|
@@ -359,7 +343,7 @@ export class ExotelWebClient {
|
|
|
359
343
|
|
|
360
344
|
registerEventCallback = (event, phone, param) => {
|
|
361
345
|
|
|
362
|
-
logger.log("
|
|
346
|
+
logger.log("Dialer: registerEventCallback: Received ---> " + event + 'phone....', phone + 'param....', param)
|
|
363
347
|
if (event === "connected") {
|
|
364
348
|
/**
|
|
365
349
|
* When registration is successful then send the phone number of the same to UI
|
|
@@ -367,7 +351,7 @@ export class ExotelWebClient {
|
|
|
367
351
|
this.eventListener.onInitializationSuccess(phone);
|
|
368
352
|
this.registrationInProgress = false;
|
|
369
353
|
if (this.unregisterInitiated) {
|
|
370
|
-
logger.log("ExWebClient:
|
|
354
|
+
logger.log("ExWebClient:registerEventCallback unregistering due to unregisterInitiated");
|
|
371
355
|
this.unregisterInitiated = false;
|
|
372
356
|
this.unregister();
|
|
373
357
|
}
|
|
@@ -382,7 +366,7 @@ export class ExotelWebClient {
|
|
|
382
366
|
this.isReadyToRegister = true;
|
|
383
367
|
}
|
|
384
368
|
if (this.shouldAutoRetry) {
|
|
385
|
-
logger.log("ExWebClient:
|
|
369
|
+
logger.log("ExWebClient:registerEventCallback Autoretrying");
|
|
386
370
|
DoRegisterRL(this.sipAccountInfo, this, 5000);
|
|
387
371
|
}
|
|
388
372
|
} else if (event === "sent_request") {
|
|
@@ -399,7 +383,7 @@ export class ExotelWebClient {
|
|
|
399
383
|
* @param {*} param
|
|
400
384
|
*/
|
|
401
385
|
callEventCallback = (event, phone, param) => {
|
|
402
|
-
logger.log("
|
|
386
|
+
logger.log("Dialer: callEventCallback: Received ---> " + event + 'param sent....' + param + 'for phone....' + phone)
|
|
403
387
|
if (event === "i_new_call") {
|
|
404
388
|
this.callListener.onIncomingCall(param, phone)
|
|
405
389
|
} else if (event === "connected") {
|
|
@@ -424,7 +408,7 @@ export class ExotelWebClient {
|
|
|
424
408
|
* @param {*} sipAccountInfo
|
|
425
409
|
*/
|
|
426
410
|
unregister = (sipAccountInfo) => {
|
|
427
|
-
logger.log("ExWebClient:
|
|
411
|
+
logger.log("ExWebClient:unregister Entry");
|
|
428
412
|
this.shouldAutoRetry = false;
|
|
429
413
|
this.unregisterInitiated = true;
|
|
430
414
|
if (!this.registrationInProgress) {
|
|
@@ -436,7 +420,7 @@ export class ExotelWebClient {
|
|
|
436
420
|
|
|
437
421
|
|
|
438
422
|
webRTCStatusCallbackHandler = (msg1, arg1) => {
|
|
439
|
-
logger.log("
|
|
423
|
+
logger.log("webRTCStatusCallbackHandler: " + msg1 + " " + arg1)
|
|
440
424
|
};
|
|
441
425
|
|
|
442
426
|
/**
|
|
@@ -465,7 +449,7 @@ export class ExotelWebClient {
|
|
|
465
449
|
'contactHost': ''
|
|
466
450
|
}
|
|
467
451
|
|
|
468
|
-
logger.log('
|
|
452
|
+
logger.log('Sending register for the number..', subscriberName);
|
|
469
453
|
|
|
470
454
|
fetchPublicIP(sipAccountInfo);
|
|
471
455
|
|
|
@@ -573,33 +557,28 @@ export class ExotelWebClient {
|
|
|
573
557
|
}
|
|
574
558
|
})
|
|
575
559
|
.catch(function (error) {
|
|
576
|
-
logger.log("
|
|
560
|
+
logger.log("something went wrong during checkClientStatus ", error);
|
|
577
561
|
callback("media_permission_denied");
|
|
578
562
|
});
|
|
579
563
|
};
|
|
580
564
|
|
|
581
565
|
changeAudioInputDevice(deviceId, onSuccess, onError) {
|
|
582
|
-
logger.log(`
|
|
566
|
+
logger.log(`in changeAudioInputDevice() of ExWebClient.js`);
|
|
583
567
|
webrtcSIPPhone.changeAudioInputDevice(deviceId, onSuccess, onError);
|
|
584
568
|
}
|
|
585
569
|
|
|
586
570
|
changeAudioOutputDevice(deviceId, onSuccess, onError) {
|
|
587
|
-
logger.log(`
|
|
571
|
+
logger.log(`in changeAudioOutputDevice() of ExWebClient.js`);
|
|
588
572
|
webrtcSIPPhone.changeAudioOutputDevice(deviceId, onSuccess, onError);
|
|
589
573
|
}
|
|
590
574
|
|
|
591
|
-
downloadLogs() {
|
|
592
|
-
logger.log(`ExWebClient: downloadLogs: Entry`);
|
|
593
|
-
LogManager.downloadLogs();
|
|
594
|
-
}
|
|
595
|
-
|
|
596
575
|
setPreferredCodec(codecName) {
|
|
597
|
-
logger.log("ExWebClient:
|
|
576
|
+
logger.log("ExWebClient:setPreferredCodec entry");
|
|
598
577
|
webrtcSIPPhone.setPreferredCodec(codecName);
|
|
599
578
|
}
|
|
600
579
|
|
|
601
580
|
registerLoggerCallback(callback) {
|
|
602
|
-
|
|
581
|
+
logger.registerLoggerCallback(callback);
|
|
603
582
|
}
|
|
604
583
|
|
|
605
584
|
registerAudioDeviceChangeCallback(audioInputDeviceChangeCallback, audioOutputDeviceChangeCallback, onDeviceChangeCallback) {
|
package/src/api/LogManager.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const MAX_LOG_LINES = 1000;
|
|
2
|
-
const LOG_STORAGE_KEY = 'webrtc_sdk_logs';
|
|
3
|
-
|
|
4
|
-
const LogManager = {
|
|
5
|
-
onLog(level, msg, args = []) {
|
|
6
|
-
const timestamp = new Date().toISOString();
|
|
7
|
-
const line = `[${timestamp}] [${level.toUpperCase()}] ${msg} ${args.map(arg => JSON.stringify(arg)).join(" ")}`.trim();
|
|
8
|
-
|
|
9
|
-
let logs = JSON.parse(localStorage.getItem(LOG_STORAGE_KEY)) || [];
|
|
10
|
-
logs.push(line);
|
|
11
|
-
if (logs.length > MAX_LOG_LINES) {
|
|
12
|
-
logs = logs.slice(-MAX_LOG_LINES); // rotate
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
localStorage.setItem(LOG_STORAGE_KEY, JSON.stringify(logs));
|
|
16
|
-
},
|
|
17
|
-
|
|
18
|
-
getLogs() {
|
|
19
|
-
return JSON.parse(localStorage.getItem(LOG_STORAGE_KEY)) || [];
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
downloadLogs(filename) {
|
|
23
|
-
if (!filename) {
|
|
24
|
-
const now = new Date();
|
|
25
|
-
const formattedDate = now.toISOString().split('T')[0]; // Gets YYYY-MM-DD
|
|
26
|
-
filename = `webrtc_sdk_logs_${formattedDate}.txt`;
|
|
27
|
-
}
|
|
28
|
-
const blob = new Blob([LogManager.getLogs().join('\n')], { type: 'text/plain' });
|
|
29
|
-
const url = URL.createObjectURL(blob);
|
|
30
|
-
|
|
31
|
-
const a = document.createElement('a');
|
|
32
|
-
a.href = url;
|
|
33
|
-
a.download = filename;
|
|
34
|
-
a.click();
|
|
35
|
-
URL.revokeObjectURL(url);
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export default LogManager;
|