@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
@@ -138,6 +138,7 @@ class IssueReporter {
138
138
 
139
139
 
140
140
 
141
+
141
142
 
142
143
  constructor() {
143
144
  addLevelsTo(this);
@@ -149,12 +150,17 @@ class IssueReporter {
149
150
  this.bufferTimeout = null;
150
151
  this._boundProcessBuffer = this._processBuffer.bind(this);
151
152
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
153
+ this._callback = null;
152
154
  }
153
155
 
154
156
  init() {
155
157
  this._catchConsole();
156
158
  }
157
159
 
160
+ setCallback(cb ) {
161
+ this._callback = cb;
162
+ }
163
+
158
164
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
159
165
  this.remoteClientConfiguration = configuration;
160
166
  }
@@ -190,6 +196,7 @@ class IssueReporter {
190
196
 
191
197
  // Handle category label
192
198
  let category = null;
199
+ let skipSendToRemote = false;
193
200
  let extra = {};
194
201
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
195
202
  category = args[0].split('=')[1];
@@ -205,6 +212,7 @@ class IssueReporter {
205
212
  errorMessage: lastArg.message,
206
213
  errorStack: lastArg.stack,
207
214
  errorType: lastArg.constructor.name,
215
+ skipSendToRemote: lastArg.skipSendToRemote,
208
216
  };
209
217
  } else {
210
218
  extra = lastArg;
@@ -213,6 +221,11 @@ class IssueReporter {
213
221
  args.splice(1, 1);
214
222
  }
215
223
 
224
+ if (extra.skipSendToRemote) {
225
+ skipSendToRemote = true;
226
+ delete extra.skipSendToRemote;
227
+ }
228
+
216
229
  const date = moment__default['default']().format('YYYY-MM-DD HH:mm:ss.SSS');
217
230
  const message = args.join(', ');
218
231
  let consoleMessage = message;
@@ -233,7 +246,13 @@ class IssueReporter {
233
246
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
234
247
  oldMethod.apply(oldMethod, [date, consoleMessage]);
235
248
 
236
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
249
+ if (this._callback) {
250
+ this._callback(level, consoleMessage);
251
+ }
252
+
253
+ if (!skipSendToRemote) {
254
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
255
+ }
237
256
  }
238
257
 
239
258
  logRequest(url , options , response , start ) {
@@ -378,7 +397,11 @@ class IssueReporter {
378
397
  },
379
398
  // $FlowFixMe
380
399
  body,
381
- }).catch(() => {
400
+ }).catch((e ) => {
401
+ // $FlowFixMe
402
+ e.skipSendToRemote = true;
403
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
404
+
382
405
  setTimeout(() => {
383
406
  if (isArray) {
384
407
  payload = payload.map(message => {
@@ -425,7 +448,7 @@ var IssueReporter$1 = new IssueReporter();
425
448
 
426
449
  const methods = ['head', 'get', 'post', 'put', 'delete'];
427
450
 
428
- const logger$1 = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
451
+ const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
429
452
 
430
453
  // Use a function here to be able to mock it in tests
431
454
  const realFetch = () => {
@@ -564,7 +587,7 @@ class ApiRequester {
564
587
  };
565
588
 
566
589
  if (this.refreshTokenPromise) {
567
- logger$1.info('A token is already refreshing, waiting ...', { url });
590
+ logger.info('A token is already refreshing, waiting ...', { url });
568
591
  await this.refreshTokenPromise;
569
592
  }
570
593
 
@@ -584,7 +607,7 @@ class ApiRequester {
584
607
  return promise.then(async (err ) => {
585
608
  // Check if the token is still valid
586
609
  if (firstCall && this._checkTokenExpired(response, err)) {
587
- logger$1.warn('token expired', { error: err.reason });
610
+ logger.warn('token expired', { error: err.reason });
588
611
  // Replay the call after refreshing the token
589
612
  return this._replayWithNewToken(err, path, method, body, headers, parse);
590
613
  }
@@ -594,7 +617,7 @@ class ApiRequester {
594
617
  : exceptionClass.fromResponse(err, response.status);
595
618
 
596
619
  if (this.shouldLogErrors) {
597
- logger$1.error('API error', error);
620
+ logger.error('API error', error);
598
621
  }
599
622
 
600
623
  throw error;
@@ -604,7 +627,7 @@ class ApiRequester {
604
627
  return newParse(response, isJson);
605
628
  }).catch(error => {
606
629
  if (this.shouldLogErrors) {
607
- logger$1.error('Fetch failed', { url, options, message: error.message, stack: error.stack });
630
+ logger.error('Fetch failed', { url, options, message: error.message, stack: error.stack });
608
631
  }
609
632
 
610
633
  throw error;
@@ -632,13 +655,13 @@ class ApiRequester {
632
655
  ) {
633
656
  const isTokenNotFound = this._isTokenNotFound(err);
634
657
  let newPath = path;
635
- logger$1.info('refreshing token', { inProgress: !!this.refreshTokenPromise });
658
+ logger.info('refreshing token', { inProgress: !!this.refreshTokenPromise });
636
659
 
637
660
  this.refreshTokenPromise = this.refreshTokenPromise || this.refreshTokenCallback();
638
661
 
639
662
  return this.refreshTokenPromise.then(() => {
640
663
  this.refreshTokenPromise = null;
641
- logger$1.info('token refreshed', { isTokenNotFound });
664
+ logger.info('token refreshed', { isTokenNotFound });
642
665
  if (isTokenNotFound) {
643
666
  const pathParts = path.split('/');
644
667
  pathParts.pop();
@@ -1516,6 +1539,9 @@ class Contact {
1516
1539
  }
1517
1540
 
1518
1541
  static parseMany(response ) {
1542
+ if (!response || !response.results) {
1543
+ return [];
1544
+ }
1519
1545
  return response.results.map(r => Contact.parse(r, response.column_types));
1520
1546
  }
1521
1547
 
@@ -2593,8 +2619,9 @@ class ExternalApp {
2593
2619
 
2594
2620
 
2595
2621
 
2596
-
2622
+
2597
2623
 
2624
+
2598
2625
 
2599
2626
 
2600
2627
  class Meeting {
@@ -2605,9 +2632,10 @@ class Meeting {
2605
2632
 
2606
2633
 
2607
2634
 
2608
-
2635
+
2609
2636
 
2610
2637
 
2638
+
2611
2639
 
2612
2640
  static parse(plain ) {
2613
2641
  return new Meeting({
@@ -2617,24 +2645,43 @@ class Meeting {
2617
2645
  ownerUuids: plain.owner_uuids,
2618
2646
  port: plain.port,
2619
2647
  uuid: plain.uuid,
2620
- number: plain.number,
2648
+ extension: plain.exten,
2621
2649
  persistent: plain.persistent,
2650
+ creationTime: moment__default['default'](plain.creation_time).toDate(),
2622
2651
  });
2623
2652
  }
2624
2653
 
2654
+ static parseMany(items ) {
2655
+ if (!items) {
2656
+ return [];
2657
+ }
2658
+ return items.map(plain => Meeting.parse(plain));
2659
+ }
2660
+
2625
2661
  static newFrom(meeting ) {
2626
2662
  return newFrom(meeting, Meeting);
2627
2663
  }
2628
2664
 
2629
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
2665
+ constructor({
2666
+ uuid,
2667
+ name,
2668
+ guestSipAuthorization,
2669
+ ownerUuids,
2670
+ port,
2671
+ uri,
2672
+ extension,
2673
+ persistent,
2674
+ creationTime,
2675
+ } = {}) {
2630
2676
  this.guestSipAuthorization = guestSipAuthorization;
2631
2677
  this.uri = uri;
2632
2678
  this.name = name;
2633
2679
  this.ownerUuids = ownerUuids;
2634
2680
  this.port = port;
2635
2681
  this.uuid = uuid;
2636
- this.number = number;
2682
+ this.extension = extension;
2637
2683
  this.persistent = persistent;
2684
+ this.creationTime = creationTime;
2638
2685
 
2639
2686
  // Useful to compare instead of instanceof with minified code
2640
2687
  this.type = 'Meeting';
@@ -2712,8 +2759,11 @@ var confdMethods = (client , baseUrl ) => ({
2712
2759
  }
2713
2760
  },
2714
2761
 
2715
- createMyMeeting: (name ) =>
2716
- client.post(`${baseUrl}/users/me/meetings`, { name }).then(Meeting.parse),
2762
+ getMyMeetings: () =>
2763
+ client.get(`${baseUrl}/users/me/meetings`).then(response => Meeting.parseMany(response.items)),
2764
+
2765
+ createMyMeeting: (name , persistent ) =>
2766
+ client.post(`${baseUrl}/users/me/meetings`, { name, persistent }).then(Meeting.parse),
2717
2767
 
2718
2768
  deleteMyMeeting: (meetingUuid ) =>
2719
2769
  client.delete(`${baseUrl}/users/me/meetings/${meetingUuid}`, null),
@@ -2809,6 +2859,10 @@ class ChatMessage {
2809
2859
 
2810
2860
 
2811
2861
  static parseMany(plain ) {
2862
+ if (!plain || !plain.items) {
2863
+ return [];
2864
+ }
2865
+
2812
2866
  return plain.items.map(item => ChatMessage.parse(item));
2813
2867
  }
2814
2868
 
@@ -2918,6 +2972,9 @@ class Voicemail {
2918
2972
  }
2919
2973
 
2920
2974
  static parseMany(plain ) {
2975
+ if (!plain) {
2976
+ return [];
2977
+ }
2921
2978
  const plainUnread = plain.folders.filter(folder => folder.type === 'new')[0].messages;
2922
2979
  const plainRead = plain.folders.filter(folder => folder.type === 'old')[0].messages;
2923
2980
 
@@ -3027,6 +3084,9 @@ class Call {
3027
3084
 
3028
3085
 
3029
3086
  static parseMany(plain ) {
3087
+ if (!plain) {
3088
+ return [];
3089
+ }
3030
3090
  return plain.map((plainCall ) => Call.parse(plainCall));
3031
3091
  }
3032
3092
 
@@ -3199,6 +3259,9 @@ class Recording {
3199
3259
 
3200
3260
 
3201
3261
  static parseMany(recordings = []) {
3262
+ if (!recordings) {
3263
+ return [];
3264
+ }
3202
3265
  return recordings.map(item => Recording.parse(item));
3203
3266
  }
3204
3267
 
@@ -3300,6 +3363,10 @@ class CallLog {
3300
3363
  }
3301
3364
 
3302
3365
  static parseMany(plain ) {
3366
+ if (!plain || !plain.items) {
3367
+ return [];
3368
+ }
3369
+
3303
3370
  return plain.items.map(item => CallLog.parse(item));
3304
3371
  }
3305
3372
 
@@ -3521,7 +3588,7 @@ const TRANSFER_FLOW_BLIND = 'blind';
3521
3588
 
3522
3589
  // const MINIMUM_WAZO_ENGINE_VERSION_FOR_CTI_HOLD = '20.11';
3523
3590
 
3524
- IssueReporter$1 ? IssueReporter$1.loggerFor('cti-phone') : console;
3591
+ const logger$1 = IssueReporter$1 ? IssueReporter$1.loggerFor('cti-phone') : console;
3525
3592
 
3526
3593
  /* */
3527
3594
 
@@ -3857,6 +3924,9 @@ class ChatRoom {
3857
3924
 
3858
3925
 
3859
3926
  static parseMany(plain ) {
3927
+ if (!plain || !plain.items) {
3928
+ return [];
3929
+ }
3860
3930
  return plain.items.map(item => ChatRoom.parse(item));
3861
3931
  }
3862
3932
 
@@ -4437,7 +4507,7 @@ const AGENTD_VERSION = '1.0';
4437
4507
  const WEBHOOKD_VERSION = '1.0';
4438
4508
  const AMID_VERSION = '1.0';
4439
4509
 
4440
- const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
4510
+ const logger$2 = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
4441
4511
 
4442
4512
  class ApiClient {
4443
4513
 
@@ -4489,12 +4559,12 @@ class ApiClient {
4489
4559
  }
4490
4560
 
4491
4561
  async forceRefreshToken() {
4492
- logger.info('forcing refresh token, calling callback');
4562
+ logger$2.info('forcing refresh token, calling callback');
4493
4563
  return this.refreshTokenCallback();
4494
4564
  }
4495
4565
 
4496
4566
  async refreshTokenCallback() {
4497
- logger.info('refresh token callback called', {
4567
+ logger$2.info('refresh token callback called', {
4498
4568
  refreshToken: this.refreshToken,
4499
4569
  refreshBackend: this.refreshBackend,
4500
4570
  refreshExpiration: this.refreshExpiration,
@@ -4512,7 +4582,7 @@ class ApiClient {
4512
4582
  this.isMobile,
4513
4583
  );
4514
4584
 
4515
- logger.info('token refreshed', { token: session.token });
4585
+ logger$2.info('token refreshed', { token: session.token });
4516
4586
 
4517
4587
  if (this.onRefreshToken) {
4518
4588
  this.onRefreshToken(session.token, session);
@@ -1,5 +1,11 @@
1
1
  'use strict';
2
2
 
3
+ var moment = require('moment');
4
+
5
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
6
+
7
+ var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
8
+
3
9
  //
4
10
 
5
11
  var newFrom = (instance , ToClass ) => {
@@ -20,8 +26,9 @@ var newFrom = (instance , ToClass ) => {
20
26
 
21
27
 
22
28
 
23
-
29
+
24
30
 
31
+
25
32
 
26
33
 
27
34
  class Meeting {
@@ -32,9 +39,10 @@ class Meeting {
32
39
 
33
40
 
34
41
 
35
-
42
+
36
43
 
37
44
 
45
+
38
46
 
39
47
  static parse(plain ) {
40
48
  return new Meeting({
@@ -44,24 +52,43 @@ class Meeting {
44
52
  ownerUuids: plain.owner_uuids,
45
53
  port: plain.port,
46
54
  uuid: plain.uuid,
47
- number: plain.number,
55
+ extension: plain.exten,
48
56
  persistent: plain.persistent,
57
+ creationTime: moment__default['default'](plain.creation_time).toDate(),
49
58
  });
50
59
  }
51
60
 
61
+ static parseMany(items ) {
62
+ if (!items) {
63
+ return [];
64
+ }
65
+ return items.map(plain => Meeting.parse(plain));
66
+ }
67
+
52
68
  static newFrom(meeting ) {
53
69
  return newFrom(meeting, Meeting);
54
70
  }
55
71
 
56
- constructor({ uuid, name, guestSipAuthorization, ownerUuids, port, uri, number, persistent } = {}) {
72
+ constructor({
73
+ uuid,
74
+ name,
75
+ guestSipAuthorization,
76
+ ownerUuids,
77
+ port,
78
+ uri,
79
+ extension,
80
+ persistent,
81
+ creationTime,
82
+ } = {}) {
57
83
  this.guestSipAuthorization = guestSipAuthorization;
58
84
  this.uri = uri;
59
85
  this.name = name;
60
86
  this.ownerUuids = ownerUuids;
61
87
  this.port = port;
62
88
  this.uuid = uuid;
63
- this.number = number;
89
+ this.extension = extension;
64
90
  this.persistent = persistent;
91
+ this.creationTime = creationTime;
65
92
 
66
93
  // Useful to compare instead of instanceof with minified code
67
94
  this.type = 'Meeting';