@wazo/sdk 0.37.20 → 0.37.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.
Files changed (147) hide show
  1. package/dist/wazo-sdk.js +6 -6
  2. package/esm/__tests__/api-client.test.js +91 -21
  3. package/esm/__tests__/web-rtc-client.test.js +214 -165
  4. package/esm/api/agentd.js +25 -2
  5. package/esm/api/amid.js +26 -3
  6. package/esm/api/application.js +25 -2
  7. package/esm/api/auth.js +25 -2
  8. package/esm/api/call-logd.js +34 -4
  9. package/esm/api/calld.js +35 -2
  10. package/esm/api/chatd.js +32 -2
  11. package/esm/api/confd.js +56 -9
  12. package/esm/api/ctid-ng.js +38 -5
  13. package/esm/api/dird.js +29 -3
  14. package/esm/api/webhookd.js +26 -3
  15. package/esm/api-client.js +91 -21
  16. package/esm/checker/Checker.js +241 -190
  17. package/esm/checker/checks/aor.js +91 -21
  18. package/esm/checker/checks/api.js +91 -21
  19. package/esm/checker/checks/index.js +231 -180
  20. package/esm/checker/checks/wazo-websocket.js +42 -17
  21. package/esm/checker/checks/webrtc-transport.js +214 -165
  22. package/esm/checker/checks/webrtc.js +214 -165
  23. package/esm/domain/AdHocAPIConference.js +91 -21
  24. package/esm/domain/Call.js +3 -0
  25. package/esm/domain/CallLog.js +8 -1
  26. package/esm/domain/ChatMessage.js +4 -0
  27. package/esm/domain/ChatRoom.js +3 -0
  28. package/esm/domain/Contact.js +4 -1
  29. package/esm/domain/Features.js +91 -21
  30. package/esm/domain/Meeting.js +28 -5
  31. package/esm/domain/Phone/CTIPhone.js +109 -35
  32. package/esm/domain/Phone/WebRTCPhone.js +159 -102
  33. package/esm/domain/Recording.js +3 -0
  34. package/esm/domain/Voicemail.js +3 -0
  35. package/esm/domain/__tests__/Call.test.js +3 -0
  36. package/esm/domain/__tests__/CallLog.test.js +8 -1
  37. package/esm/domain/__tests__/Contact.test.js +4 -1
  38. package/esm/domain/__tests__/Meeting.test.js +144 -0
  39. package/esm/domain/__tests__/Voicemail.test.js +3 -0
  40. package/esm/index.js +509 -414
  41. package/esm/lib/WazoSessionDescriptionHandler.js +26 -41
  42. package/esm/service/CallApi.js +91 -21
  43. package/esm/service/IssueReporter.js +26 -3
  44. package/esm/service/__tests__/IssueReporter.test.js +26 -3
  45. package/esm/service/getApiClient.js +91 -21
  46. package/esm/simple/Auth.js +499 -404
  47. package/esm/simple/Configuration.js +499 -404
  48. package/esm/simple/Directory.js +91 -21
  49. package/esm/simple/Phone.js +499 -404
  50. package/esm/simple/Websocket.js +45 -19
  51. package/esm/simple/index.js +503 -408
  52. package/esm/simple/room/LocalParticipant.js +503 -408
  53. package/esm/simple/room/Participant.js +503 -408
  54. package/esm/simple/room/RemoteParticipant.js +503 -408
  55. package/esm/simple/room/Room.js +504 -409
  56. package/esm/simple/room/SipRoom.js +503 -408
  57. package/esm/simple/room/Stream.js +503 -408
  58. package/esm/simple/room/__tests__/RemoteParticipant.test.js +503 -408
  59. package/esm/simple/utils.js +503 -408
  60. package/esm/types/WebSocketMessage.js +1 -1
  61. package/esm/utils/__tests__/api-requester.test.js +25 -2
  62. package/esm/utils/api-requester.js +25 -2
  63. package/esm/web-rtc-client.js +214 -165
  64. package/esm/websocket-client.js +43 -18
  65. package/lib/__tests__/api-client.test.js +91 -21
  66. package/lib/__tests__/web-rtc-client.test.js +214 -165
  67. package/lib/api/agentd.js +25 -2
  68. package/lib/api/amid.js +26 -3
  69. package/lib/api/application.js +25 -2
  70. package/lib/api/auth.js +25 -2
  71. package/lib/api/call-logd.js +34 -4
  72. package/lib/api/calld.js +35 -2
  73. package/lib/api/chatd.js +32 -2
  74. package/lib/api/confd.js +56 -9
  75. package/lib/api/ctid-ng.js +38 -5
  76. package/lib/api/dird.js +29 -3
  77. package/lib/api/webhookd.js +26 -3
  78. package/lib/api-client.js +91 -21
  79. package/lib/checker/Checker.js +241 -190
  80. package/lib/checker/checks/aor.js +91 -21
  81. package/lib/checker/checks/api.js +91 -21
  82. package/lib/checker/checks/index.js +231 -180
  83. package/lib/checker/checks/wazo-websocket.js +42 -17
  84. package/lib/checker/checks/webrtc-transport.js +214 -165
  85. package/lib/checker/checks/webrtc.js +214 -165
  86. package/lib/domain/AdHocAPIConference.js +91 -21
  87. package/lib/domain/Call.js +3 -0
  88. package/lib/domain/CallLog.js +8 -1
  89. package/lib/domain/ChatMessage.js +4 -0
  90. package/lib/domain/ChatRoom.js +3 -0
  91. package/lib/domain/Contact.js +4 -1
  92. package/lib/domain/Features.js +91 -21
  93. package/lib/domain/Meeting.js +32 -5
  94. package/lib/domain/Phone/CTIPhone.js +109 -35
  95. package/lib/domain/Phone/WebRTCPhone.js +159 -102
  96. package/lib/domain/Recording.js +3 -0
  97. package/lib/domain/Voicemail.js +3 -0
  98. package/lib/domain/__tests__/Call.test.js +3 -0
  99. package/lib/domain/__tests__/CallLog.test.js +8 -1
  100. package/lib/domain/__tests__/Contact.test.js +4 -1
  101. package/lib/domain/__tests__/Meeting.test.js +150 -0
  102. package/lib/domain/__tests__/Voicemail.test.js +3 -0
  103. package/lib/index.js +509 -414
  104. package/lib/lib/WazoSessionDescriptionHandler.js +26 -41
  105. package/lib/service/CallApi.js +91 -21
  106. package/lib/service/IssueReporter.js +26 -3
  107. package/lib/service/__tests__/IssueReporter.test.js +26 -3
  108. package/lib/service/getApiClient.js +91 -21
  109. package/lib/simple/Auth.js +499 -404
  110. package/lib/simple/Configuration.js +499 -404
  111. package/lib/simple/Directory.js +91 -21
  112. package/lib/simple/Phone.js +499 -404
  113. package/lib/simple/Websocket.js +45 -19
  114. package/lib/simple/index.js +503 -408
  115. package/lib/simple/room/LocalParticipant.js +503 -408
  116. package/lib/simple/room/Participant.js +503 -408
  117. package/lib/simple/room/RemoteParticipant.js +503 -408
  118. package/lib/simple/room/Room.js +504 -409
  119. package/lib/simple/room/SipRoom.js +503 -408
  120. package/lib/simple/room/Stream.js +503 -408
  121. package/lib/simple/room/__tests__/RemoteParticipant.test.js +503 -408
  122. package/lib/simple/utils.js +503 -408
  123. package/lib/types/WebSocketMessage.js +2 -0
  124. package/lib/utils/__tests__/api-requester.test.js +25 -2
  125. package/lib/utils/api-requester.js +25 -2
  126. package/lib/web-rtc-client.js +214 -165
  127. package/lib/websocket-client.js +43 -17
  128. package/package.json +1 -1
  129. package/src/api/confd.js +5 -2
  130. package/src/domain/Call.js +3 -0
  131. package/src/domain/CallLog.js +4 -0
  132. package/src/domain/ChatMessage.js +4 -0
  133. package/src/domain/ChatRoom.js +3 -0
  134. package/src/domain/Contact.js +3 -0
  135. package/src/domain/Meeting.js +28 -5
  136. package/src/domain/Phone/CTIPhone.js +4 -0
  137. package/src/domain/Phone/Phone.js +2 -0
  138. package/src/domain/Phone/WebRTCPhone.js +49 -15
  139. package/src/domain/Recording.js +3 -0
  140. package/src/domain/Voicemail.js +3 -0
  141. package/src/domain/__tests__/Meeting.test.js +50 -0
  142. package/src/lib/WazoSessionDescriptionHandler.js +1 -35
  143. package/src/service/IssueReporter.js +25 -2
  144. package/src/simple/Phone.js +5 -0
  145. package/src/types/WebSocketMessage.js +5 -1
  146. package/src/web-rtc-client.js +41 -24
  147. package/src/websocket-client.js +2 -0
@@ -844,6 +844,9 @@ class Contact {
844
844
  }
845
845
 
846
846
  static parseMany(response ) {
847
+ if (!response || !response.results) {
848
+ return [];
849
+ }
847
850
  return response.results.map(r => Contact.parse(r, response.column_types));
848
851
  }
849
852
 
@@ -1550,6 +1553,9 @@ class Call {
1550
1553
 
1551
1554
 
1552
1555
  static parseMany(plain ) {
1556
+ if (!plain) {
1557
+ return [];
1558
+ }
1553
1559
  return plain.map((plainCall ) => Call.parse(plainCall));
1554
1560
  }
1555
1561
 
@@ -2093,6 +2099,9 @@ class Recording {
2093
2099
 
2094
2100
 
2095
2101
  static parseMany(recordings = []) {
2102
+ if (!recordings) {
2103
+ return [];
2104
+ }
2096
2105
  return recordings.map(item => Recording.parse(item));
2097
2106
  }
2098
2107
 
@@ -2194,6 +2203,10 @@ class CallLog {
2194
2203
  }
2195
2204
 
2196
2205
  static parseMany(plain ) {
2206
+ if (!plain || !plain.items) {
2207
+ return [];
2208
+ }
2209
+
2197
2210
  return plain.items.map(item => CallLog.parse(item));
2198
2211
  }
2199
2212
 
@@ -2510,6 +2523,7 @@ class IssueReporter {
2510
2523
 
2511
2524
 
2512
2525
 
2526
+
2513
2527
 
2514
2528
  constructor() {
2515
2529
  addLevelsTo(this);
@@ -2521,12 +2535,17 @@ class IssueReporter {
2521
2535
  this.bufferTimeout = null;
2522
2536
  this._boundProcessBuffer = this._processBuffer.bind(this);
2523
2537
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
2538
+ this._callback = null;
2524
2539
  }
2525
2540
 
2526
2541
  init() {
2527
2542
  this._catchConsole();
2528
2543
  }
2529
2544
 
2545
+ setCallback(cb ) {
2546
+ this._callback = cb;
2547
+ }
2548
+
2530
2549
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
2531
2550
  this.remoteClientConfiguration = configuration;
2532
2551
  }
@@ -2562,6 +2581,7 @@ class IssueReporter {
2562
2581
 
2563
2582
  // Handle category label
2564
2583
  let category = null;
2584
+ let skipSendToRemote = false;
2565
2585
  let extra = {};
2566
2586
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
2567
2587
  category = args[0].split('=')[1];
@@ -2577,6 +2597,7 @@ class IssueReporter {
2577
2597
  errorMessage: lastArg.message,
2578
2598
  errorStack: lastArg.stack,
2579
2599
  errorType: lastArg.constructor.name,
2600
+ skipSendToRemote: lastArg.skipSendToRemote,
2580
2601
  };
2581
2602
  } else {
2582
2603
  extra = lastArg;
@@ -2585,6 +2606,11 @@ class IssueReporter {
2585
2606
  args.splice(1, 1);
2586
2607
  }
2587
2608
 
2609
+ if (extra.skipSendToRemote) {
2610
+ skipSendToRemote = true;
2611
+ delete extra.skipSendToRemote;
2612
+ }
2613
+
2588
2614
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
2589
2615
  const message = args.join(', ');
2590
2616
  let consoleMessage = message;
@@ -2605,7 +2631,13 @@ class IssueReporter {
2605
2631
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
2606
2632
  oldMethod.apply(oldMethod, [date, consoleMessage]);
2607
2633
 
2608
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
2634
+ if (this._callback) {
2635
+ this._callback(level, consoleMessage);
2636
+ }
2637
+
2638
+ if (!skipSendToRemote) {
2639
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
2640
+ }
2609
2641
  }
2610
2642
 
2611
2643
  logRequest(url , options , response , start ) {
@@ -2750,7 +2782,11 @@ class IssueReporter {
2750
2782
  },
2751
2783
  // $FlowFixMe
2752
2784
  body,
2753
- }).catch(() => {
2785
+ }).catch((e ) => {
2786
+ // $FlowFixMe
2787
+ e.skipSendToRemote = true;
2788
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
2789
+
2754
2790
  setTimeout(() => {
2755
2791
  if (isArray) {
2756
2792
  payload = payload.map(message => {
@@ -2797,7 +2833,7 @@ var IssueReporter$1 = new IssueReporter();
2797
2833
 
2798
2834
  const methods = ['head', 'get', 'post', 'put', 'delete'];
2799
2835
 
2800
- const logger$2 = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
2836
+ const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
2801
2837
 
2802
2838
  // Use a function here to be able to mock it in tests
2803
2839
  const realFetch = () => {
@@ -2936,7 +2972,7 @@ class ApiRequester {
2936
2972
  };
2937
2973
 
2938
2974
  if (this.refreshTokenPromise) {
2939
- logger$2.info('A token is already refreshing, waiting ...', { url });
2975
+ logger.info('A token is already refreshing, waiting ...', { url });
2940
2976
  await this.refreshTokenPromise;
2941
2977
  }
2942
2978
 
@@ -2956,7 +2992,7 @@ class ApiRequester {
2956
2992
  return promise.then(async (err ) => {
2957
2993
  // Check if the token is still valid
2958
2994
  if (firstCall && this._checkTokenExpired(response, err)) {
2959
- logger$2.warn('token expired', { error: err.reason });
2995
+ logger.warn('token expired', { error: err.reason });
2960
2996
  // Replay the call after refreshing the token
2961
2997
  return this._replayWithNewToken(err, path, method, body, headers, parse);
2962
2998
  }
@@ -2966,7 +3002,7 @@ class ApiRequester {
2966
3002
  : exceptionClass.fromResponse(err, response.status);
2967
3003
 
2968
3004
  if (this.shouldLogErrors) {
2969
- logger$2.error('API error', error);
3005
+ logger.error('API error', error);
2970
3006
  }
2971
3007
 
2972
3008
  throw error;
@@ -2976,7 +3012,7 @@ class ApiRequester {
2976
3012
  return newParse(response, isJson);
2977
3013
  }).catch(error => {
2978
3014
  if (this.shouldLogErrors) {
2979
- logger$2.error('Fetch failed', { url, options, message: error.message, stack: error.stack });
3015
+ logger.error('Fetch failed', { url, options, message: error.message, stack: error.stack });
2980
3016
  }
2981
3017
 
2982
3018
  throw error;
@@ -3004,13 +3040,13 @@ class ApiRequester {
3004
3040
  ) {
3005
3041
  const isTokenNotFound = this._isTokenNotFound(err);
3006
3042
  let newPath = path;
3007
- logger$2.info('refreshing token', { inProgress: !!this.refreshTokenPromise });
3043
+ logger.info('refreshing token', { inProgress: !!this.refreshTokenPromise });
3008
3044
 
3009
3045
  this.refreshTokenPromise = this.refreshTokenPromise || this.refreshTokenCallback();
3010
3046
 
3011
3047
  return this.refreshTokenPromise.then(() => {
3012
3048
  this.refreshTokenPromise = null;
3013
- logger$2.info('token refreshed', { isTokenNotFound });
3049
+ logger.info('token refreshed', { isTokenNotFound });
3014
3050
  if (isTokenNotFound) {
3015
3051
  const pathParts = path.split('/');
3016
3052
  pathParts.pop();
@@ -3480,8 +3516,9 @@ class ExternalApp {
3480
3516
 
3481
3517
 
3482
3518
 
3483
-
3519
+
3484
3520
 
3521
+
3485
3522
 
3486
3523
 
3487
3524
  class Meeting {
@@ -3492,9 +3529,10 @@ class Meeting {
3492
3529
 
3493
3530
 
3494
3531
 
3495
-
3532
+
3496
3533
 
3497
3534
 
3535
+
3498
3536
 
3499
3537
  static parse(plain ) {
3500
3538
  return new Meeting({
@@ -3504,24 +3542,43 @@ class Meeting {
3504
3542
  ownerUuids: plain.owner_uuids,
3505
3543
  port: plain.port,
3506
3544
  uuid: plain.uuid,
3507
- number: plain.number,
3545
+ extension: plain.exten,
3508
3546
  persistent: plain.persistent,
3547
+ creationTime: moment(plain.creation_time).toDate(),
3509
3548
  });
3510
3549
  }
3511
3550
 
3551
+ static parseMany(items ) {
3552
+ if (!items) {
3553
+ return [];
3554
+ }
3555
+ return items.map(plain => Meeting.parse(plain));
3556
+ }
3557
+
3512
3558
  static newFrom(meeting ) {
3513
3559
  return newFrom(meeting, Meeting);
3514
3560
  }
3515
3561
 
3516
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
3562
+ constructor({
3563
+ uuid,
3564
+ name,
3565
+ guestSipAuthorization,
3566
+ ownerUuids,
3567
+ port,
3568
+ uri,
3569
+ extension,
3570
+ persistent,
3571
+ creationTime,
3572
+ } = {}) {
3517
3573
  this.guestSipAuthorization = guestSipAuthorization;
3518
3574
  this.uri = uri;
3519
3575
  this.name = name;
3520
3576
  this.ownerUuids = ownerUuids;
3521
3577
  this.port = port;
3522
3578
  this.uuid = uuid;
3523
- this.number = number;
3579
+ this.extension = extension;
3524
3580
  this.persistent = persistent;
3581
+ this.creationTime = creationTime;
3525
3582
 
3526
3583
  // Useful to compare instead of instanceof with minified code
3527
3584
  this.type = 'Meeting';
@@ -3599,8 +3656,11 @@ var confdMethods = (client , baseUrl ) => ({
3599
3656
  }
3600
3657
  },
3601
3658
 
3602
- createMyMeeting: (name ) =>
3603
- client.post(`${baseUrl}/users/me/meetings`, { name }).then(Meeting.parse),
3659
+ getMyMeetings: () =>
3660
+ client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
3661
+
3662
+ createMyMeeting: (name , persistent ) =>
3663
+ client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
3604
3664
 
3605
3665
  deleteMyMeeting: (meetingUuid ) =>
3606
3666
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -3653,6 +3713,10 @@ class ChatMessage {
3653
3713
 
3654
3714
 
3655
3715
  static parseMany(plain ) {
3716
+ if (!plain || !plain.items) {
3717
+ return [];
3718
+ }
3719
+
3656
3720
  return plain.items.map(item => ChatMessage.parse(item));
3657
3721
  }
3658
3722
 
@@ -3762,6 +3826,9 @@ class Voicemail {
3762
3826
  }
3763
3827
 
3764
3828
  static parseMany(plain ) {
3829
+ if (!plain) {
3830
+ return [];
3831
+ }
3765
3832
  const plainUnread = plain.folders.filter(folder => folder.type === 'new')[0].messages;
3766
3833
  const plainRead = plain.folders.filter(folder => folder.type === 'old')[0].messages;
3767
3834
 
@@ -4145,6 +4212,9 @@ class ChatRoom {
4145
4212
 
4146
4213
 
4147
4214
  static parseMany(plain ) {
4215
+ if (!plain || !plain.items) {
4216
+ return [];
4217
+ }
4148
4218
  return plain.items.map(item => ChatRoom.parse(item));
4149
4219
  }
4150
4220
 
@@ -5064,7 +5134,7 @@ const TRANSFER_FLOW_BLIND = 'blind';
5064
5134
 
5065
5135
  // const MINIMUM_WAZO_ENGINE_VERSION_FOR_CTI_HOLD = '20.11';
5066
5136
 
5067
- const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('cti-phone') : console;
5137
+ const logger$2 = IssueReporter$1 ? IssueReporter$1.loggerFor('cti-phone') : console;
5068
5138
 
5069
5139
  class CTIPhone extends Emitter {
5070
5140
 
@@ -5077,7 +5147,7 @@ class CTIPhone extends Emitter {
5077
5147
 
5078
5148
  constructor(session , isMobile = false, callbackAllLines = false) {
5079
5149
  super();
5080
- logger.info('CTI Phone created');
5150
+ logger$2.info('CTI Phone created');
5081
5151
  this.session = session;
5082
5152
  this.isMobile = isMobile;
5083
5153
  this.callbackAllLines = callbackAllLines;
@@ -5138,7 +5208,7 @@ class CTIPhone extends Emitter {
5138
5208
  }
5139
5209
 
5140
5210
  async makeCall(number , line ) {
5141
- logger.info('make CTI call', { number });
5211
+ logger$2.info('make CTI call', { number });
5142
5212
 
5143
5213
  if (!number) {
5144
5214
  return null;
@@ -5161,7 +5231,7 @@ class CTIPhone extends Emitter {
5161
5231
  if (!callSession) {
5162
5232
  return Promise.resolve(null);
5163
5233
  }
5164
- logger.info('accept CTI call', { callId: callSession.getId(), number: callSession.number });
5234
+ logger$2.info('accept CTI call', { callId: callSession.getId(), number: callSession.number });
5165
5235
 
5166
5236
  if (!this.currentCall) {
5167
5237
  this.currentCall = callSession.call;
@@ -5174,7 +5244,7 @@ class CTIPhone extends Emitter {
5174
5244
  if (!callSession) {
5175
5245
  return;
5176
5246
  }
5177
- logger.info('end current CTI call', { callId: callSession.getId(), number: callSession.number });
5247
+ logger$2.info('end current CTI call', { callId: callSession.getId(), number: callSession.number });
5178
5248
 
5179
5249
  this.currentCall = undefined;
5180
5250
  this.eventEmitter.emit('onCallEnded', callSession);
@@ -5184,7 +5254,7 @@ class CTIPhone extends Emitter {
5184
5254
  if (!callSession) {
5185
5255
  return Promise.resolve(false);
5186
5256
  }
5187
- logger.info('hangup CTI call', { callId: callSession.getId(), number: callSession.number });
5257
+ logger$2.info('hangup CTI call', { callId: callSession.getId(), number: callSession.number });
5188
5258
 
5189
5259
  try {
5190
5260
  await CallApi.cancelCall(callSession);
@@ -5195,7 +5265,7 @@ class CTIPhone extends Emitter {
5195
5265
  this.eventEmitter.emit('onCallEnded', callSession);
5196
5266
  return true;
5197
5267
  } catch (e) {
5198
- logger.error('hangup CTI call, error', e);
5268
+ logger$2.error('hangup CTI call, error', e);
5199
5269
 
5200
5270
  this.eventEmitter.emit('onCallFailed', callSession);
5201
5271
  return false;
@@ -5208,7 +5278,7 @@ class CTIPhone extends Emitter {
5208
5278
  if (!callSession) {
5209
5279
  return;
5210
5280
  }
5211
- logger.info('reject CTI call', { callId: callSession.getId(), number: callSession.number });
5281
+ logger$2.info('reject CTI call', { callId: callSession.getId(), number: callSession.number });
5212
5282
 
5213
5283
  await CallApi.cancelCall(callSession);
5214
5284
  this.eventEmitter.emit('onCallEnded', callSession);
@@ -5218,7 +5288,7 @@ class CTIPhone extends Emitter {
5218
5288
  if (!callSession) {
5219
5289
  return;
5220
5290
  }
5221
- logger.info('transfer CTI call', { callId: callSession.getId(), number: callSession.number, to: number });
5291
+ logger$2.info('transfer CTI call', { callId: callSession.getId(), number: callSession.number, to: number });
5222
5292
 
5223
5293
  await CallApi.transferCall(callSession.callId, number, TRANSFER_FLOW_BLIND);
5224
5294
  }
@@ -5231,19 +5301,19 @@ class CTIPhone extends Emitter {
5231
5301
  if (!callSession) {
5232
5302
  return;
5233
5303
  }
5234
- logger.info('indirect CTI transfer', { callId: callSession.getId(), number: callSession.number, to: number });
5304
+ logger$2.info('indirect CTI transfer', { callId: callSession.getId(), number: callSession.number, to: number });
5235
5305
 
5236
5306
  return CallApi.transferCall(callSession.callId, number, TRANSFER_FLOW_ATTENDED);
5237
5307
  }
5238
5308
 
5239
5309
  async cancelCTIIndirectTransfer(transferId ) {
5240
- logger.info('cancel CTI transfer', { transferId });
5310
+ logger$2.info('cancel CTI transfer', { transferId });
5241
5311
 
5242
5312
  return CallApi.cancelCallTransfer(transferId);
5243
5313
  }
5244
5314
 
5245
5315
  async confirmCTIIndirectTransfer(transferId ) {
5246
- logger.info('confirm CTI transfer', { transferId });
5316
+ logger$2.info('confirm CTI transfer', { transferId });
5247
5317
 
5248
5318
  return CallApi.confirmCallTransfer(transferId);
5249
5319
  }
@@ -5252,19 +5322,19 @@ class CTIPhone extends Emitter {
5252
5322
  if (!callSession) {
5253
5323
  return;
5254
5324
  }
5255
- logger.info('send CTI key', { callId: callSession.getId(), number: callSession.number, digits });
5325
+ logger$2.info('send CTI key', { callId: callSession.getId(), number: callSession.number, digits });
5256
5326
 
5257
5327
  return CallApi.sendDTMF(callSession.callId, digits);
5258
5328
  }
5259
5329
 
5260
5330
  onConnectionMade() {
5261
- logger.info('on CTI connection made');
5331
+ logger$2.info('on CTI connection made');
5262
5332
 
5263
5333
  this.eventEmitter.emit('onCallAccepted');
5264
5334
  }
5265
5335
 
5266
5336
  async close() {
5267
- logger.info('CTI close');
5337
+ logger$2.info('CTI close');
5268
5338
 
5269
5339
  return Promise.resolve();
5270
5340
  }
@@ -5273,7 +5343,7 @@ class CTIPhone extends Emitter {
5273
5343
  if (!callSession) {
5274
5344
  return;
5275
5345
  }
5276
- logger.info('CTI hold', { callId: callSession.getId(), number: callSession.number });
5346
+ logger$2.info('CTI hold', { callId: callSession.getId(), number: callSession.number });
5277
5347
 
5278
5348
  return CallApi.hold(callSession.callId);
5279
5349
  }
@@ -5282,7 +5352,7 @@ class CTIPhone extends Emitter {
5282
5352
  if (!callSession) {
5283
5353
  return;
5284
5354
  }
5285
- logger.info('CTI resume', { callId: callSession.getId(), number: callSession.number });
5355
+ logger$2.info('CTI resume', { callId: callSession.getId(), number: callSession.number });
5286
5356
 
5287
5357
  return CallApi.resume(callSession.callId);
5288
5358
  }
@@ -5291,7 +5361,7 @@ class CTIPhone extends Emitter {
5291
5361
  if (!callSession) {
5292
5362
  return;
5293
5363
  }
5294
- logger.info('CTI mute', { callId: callSession.getId(), number: callSession.number });
5364
+ logger$2.info('CTI mute', { callId: callSession.getId(), number: callSession.number });
5295
5365
 
5296
5366
  return CallApi.mute(callSession.callId);
5297
5367
  }
@@ -5300,7 +5370,7 @@ class CTIPhone extends Emitter {
5300
5370
  if (!callSession) {
5301
5371
  return;
5302
5372
  }
5303
- logger.info('CTI unmute', { callId: callSession.getId(), number: callSession.number });
5373
+ logger$2.info('CTI unmute', { callId: callSession.getId(), number: callSession.number });
5304
5374
 
5305
5375
  return CallApi.unmute(callSession.callId);
5306
5376
  }
@@ -5329,6 +5399,10 @@ class CTIPhone extends Emitter {
5329
5399
  return false;
5330
5400
  }
5331
5401
 
5402
+ hasAVideoTrack() {
5403
+ return false;
5404
+ }
5405
+
5332
5406
  getLocalStreamForCall() {
5333
5407
  return null;
5334
5408
  }