@wazo/sdk 0.38.0 → 0.38.3

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 (45) hide show
  1. package/README.md +293 -0
  2. package/dist/wazo-sdk.js +5 -5
  3. package/esm/__tests__/web-rtc-client.test.js +1 -1
  4. package/esm/checker/Checker.js +1 -1
  5. package/esm/checker/checks/index.js +1 -1
  6. package/esm/checker/checks/webrtc-transport.js +1 -1
  7. package/esm/checker/checks/webrtc.js +1 -1
  8. package/esm/index.js +267 -25
  9. package/esm/simple/Auth.js +267 -25
  10. package/esm/simple/Configuration.js +267 -25
  11. package/esm/simple/Phone.js +267 -25
  12. package/esm/simple/Softphone.js +266 -24
  13. package/esm/simple/index.js +267 -25
  14. package/esm/simple/room/LocalParticipant.js +267 -25
  15. package/esm/simple/room/Participant.js +267 -25
  16. package/esm/simple/room/RemoteParticipant.js +267 -25
  17. package/esm/simple/room/Room.js +267 -25
  18. package/esm/simple/room/SipRoom.js +267 -25
  19. package/esm/simple/room/Stream.js +267 -25
  20. package/esm/simple/room/__tests__/RemoteParticipant.test.js +267 -25
  21. package/esm/simple/utils.js +267 -25
  22. package/esm/web-rtc-client.js +1 -1
  23. package/lib/__tests__/web-rtc-client.test.js +1 -1
  24. package/lib/checker/Checker.js +1 -1
  25. package/lib/checker/checks/index.js +1 -1
  26. package/lib/checker/checks/webrtc-transport.js +1 -1
  27. package/lib/checker/checks/webrtc.js +1 -1
  28. package/lib/index.js +267 -25
  29. package/lib/simple/Auth.js +267 -25
  30. package/lib/simple/Configuration.js +267 -25
  31. package/lib/simple/Phone.js +267 -25
  32. package/lib/simple/Softphone.js +266 -24
  33. package/lib/simple/index.js +267 -25
  34. package/lib/simple/room/LocalParticipant.js +267 -25
  35. package/lib/simple/room/Participant.js +267 -25
  36. package/lib/simple/room/RemoteParticipant.js +267 -25
  37. package/lib/simple/room/Room.js +267 -25
  38. package/lib/simple/room/SipRoom.js +267 -25
  39. package/lib/simple/room/Stream.js +267 -25
  40. package/lib/simple/room/__tests__/RemoteParticipant.test.js +267 -25
  41. package/lib/simple/utils.js +267 -25
  42. package/lib/web-rtc-client.js +1 -1
  43. package/package.json +1 -1
  44. package/src/simple/Softphone.js +264 -24
  45. package/src/web-rtc-client.js +1 -1
@@ -8336,7 +8336,7 @@ class WebRTCClient extends Emitter {
8336
8336
  }
8337
8337
 
8338
8338
  async _onHeartbeatTimeout() {
8339
- logger$8.info('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8339
+ logger$8.warn('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8340
8340
 
8341
8341
  if (this.heartbeatTimeoutCb) {
8342
8342
  this.heartbeatTimeoutCb();
@@ -13924,40 +13924,159 @@ class Checker {
13924
13924
  //
13925
13925
  /* eslint-disable no-unused-vars */
13926
13926
  /* global window, document */
13927
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13928
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13929
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13930
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13931
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13932
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13933
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13934
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13935
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13936
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13937
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13938
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13939
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13940
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13941
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13942
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13943
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13944
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13945
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13946
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13947
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13948
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13949
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13950
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13951
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13952
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13953
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13954
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13955
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13956
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13957
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13958
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13959
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13960
+
13961
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13962
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13963
+
13927
13964
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13928
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13965
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13929
13966
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13930
13967
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13931
13968
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13969
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13932
13970
 
13933
13971
  class Softphone {
13934
- url = 'https://softphone.wazo.io';
13935
- width = 500;
13936
- height = 600;
13937
- displayed = false;
13938
- iframe = null;
13972
+
13973
+
13974
+
13975
+
13976
+
13977
+
13978
+
13979
+ // Message waiting for the iframe to be loaded
13980
+
13939
13981
 
13940
13982
  onLinkEnabled(link ) {}
13983
+ onIFrameLoaded() {}
13941
13984
 
13942
- onCallMade(call ) {}
13985
+ onCallLocallyAnswered(call ) {}
13986
+ onCallRemotelyAnswered(call ) {}
13987
+ onOutgoingCallMade(call ) {}
13943
13988
  onCallIncoming(call ) {}
13989
+ onCallRejected(call ) {}
13944
13990
  onCallEnded(call , card , direction , fromExtension ) {}
13991
+
13992
+ onCardSaved(card ) {}
13993
+ onCardCanceled() {}
13945
13994
  onAuthenticated(session ) {}
13995
+ onLoggedOut() {}
13996
+
13997
+ onSearchOptions(fieldId , query ) {
13998
+ this.onOptionsResults(fieldId, []);
13999
+ }
14000
+
14001
+ onDisplayLinkedOption(optionId ) {}
14002
+ onWazoContactSearch(query ) {}
14003
+ onAgentLoggedIn() {}
14004
+ onAgentLoggedOut() {}
14005
+ onAgentPaused() {}
14006
+ onAgentResumed() {}
14007
+ onLanguageChanged(language ) {}
14008
+ onCallHeld() {}
14009
+ onCallResumed() {}
14010
+ onCallMuted() {}
14011
+ onCallUnMuted() {}
14012
+ onDtmfSent(tone ) {}
14013
+ onDirectTransfer(number ) {}
14014
+ onCreateIndirectTransfer(number ) {}
14015
+ onCancelIndirectTransfer() {}
14016
+ onConfirmIndirectTransfer() {}
14017
+ onIndirectCallMade(call ) {}
14018
+ onIndirectTransferDone(call ) {}
14019
+ onStartRecording() {}
14020
+ onStopRecording() {}
14021
+ onUnHandledEvent(event ) {}
14022
+
14023
+ init({
14024
+ url,
14025
+ width,
14026
+ height,
14027
+ server,
14028
+ port,
14029
+ language,
14030
+ wrapUpDuration,
14031
+ enableAgent = true,
14032
+ tenantId,
14033
+ debug = false,
14034
+ } = {}) {
14035
+ this.url = url || 'https://softphone.wazo.io';
14036
+ this.width = width || 500;
14037
+ this.height = height || 600;
14038
+ this.displayed = false;
14039
+ this.iframeLoaded = false;
14040
+
14041
+ this.iframeLoaded = false;
14042
+ this._pendingMessages = [];
14043
+ window.addEventListener('message', this._onMessage.bind(this), false);
14044
+
14045
+ if (!server) {
14046
+ // eslint-disable-next-line no-param-reassign
14047
+ server = 'stack.dev.wazo.io';
14048
+ }
13946
14049
 
13947
- init(url , width , height ) {
13948
- if (url) {
13949
- this.url = url;
14050
+ const config = { server };
14051
+ if (language) {
14052
+ config.language = language;
14053
+ }
14054
+ if (port) {
14055
+ config.port = port;
13950
14056
  }
13951
- if (width) {
13952
- this.width = width;
14057
+ if (tenantId) {
14058
+ config.tenantId = tenantId;
13953
14059
  }
13954
- if (height) {
13955
- this.height = height;
14060
+ if (wrapUpDuration) {
14061
+ config.wrapUpDuration = wrapUpDuration;
13956
14062
  }
13957
14063
 
13958
- window.addEventListener('message', this._onMessage.bind(this), false);
14064
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13959
14065
 
13960
- this._createIframe();
14066
+ if (enableAgent) {
14067
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
14068
+ }
14069
+
14070
+ if (debug) {
14071
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
14072
+ }
14073
+
14074
+ this._createIframe(() => {
14075
+ this.iframeLoaded = true;
14076
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
14077
+
14078
+ this.onIFrameLoaded();
14079
+ });
13961
14080
  }
13962
14081
 
13963
14082
  parseLinks() {
@@ -13973,9 +14092,7 @@ class Softphone {
13973
14092
  makeCall(number ) {
13974
14093
  this.displaySoftphone();
13975
14094
 
13976
- if (this.iframe) {
13977
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13978
- }
14095
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13979
14096
  }
13980
14097
 
13981
14098
  toggleSoftphoneDisplay() {
@@ -13984,8 +14101,6 @@ class Softphone {
13984
14101
  } else {
13985
14102
  this.displaySoftphone();
13986
14103
  }
13987
-
13988
- this.displayed = !this.displayed;
13989
14104
  }
13990
14105
 
13991
14106
  displaySoftphone() {
@@ -13996,15 +14111,42 @@ class Softphone {
13996
14111
  if (this.iframe) {
13997
14112
  this.iframe.style.display = 'block';
13998
14113
  }
14114
+
14115
+ this.displayed = true;
13999
14116
  }
14000
14117
 
14001
14118
  hideSoftphone() {
14002
14119
  if (this.iframe) {
14003
14120
  this.iframe.style.display = 'none';
14004
14121
  }
14122
+ this.displayed = false;
14123
+ }
14124
+
14125
+ optionsFetched(fieldId , options ) {
14126
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
14127
+ }
14128
+
14129
+ onOptionsResults(fieldId , options ) {
14130
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
14131
+ }
14132
+
14133
+ setFormSchema(schema , uiSchema ) {
14134
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
14135
+ }
14136
+
14137
+ setCardValue(field , value ) {
14138
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
14139
+ }
14140
+
14141
+ injectCss(css ) {
14142
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
14005
14143
  }
14006
14144
 
14007
- _createIframe() {
14145
+ customizeAppearance(themes , translations , assets ) {
14146
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
14147
+ }
14148
+
14149
+ _createIframe(cb = () => {}) {
14008
14150
  this.iframe = document.createElement('iframe');
14009
14151
  // $FlowFixMe
14010
14152
  this.iframe.width = this.width;
@@ -14016,10 +14158,13 @@ class Softphone {
14016
14158
  this.iframe.style.left = '0';
14017
14159
  this.iframe.style.bottom = '0';
14018
14160
  this.iframe.style.border = '1px solid #aaa';
14161
+ this.iframe.style.backgroundColor = 'white';
14019
14162
  this.iframe.src = this.url;
14020
14163
  this.iframe.style.display = 'none';
14021
14164
  this.iframe.id = 'wazo-softphone';
14022
14165
 
14166
+ this.iframe.onload = cb;
14167
+
14023
14168
  // $FlowFixMe
14024
14169
  document.body.appendChild(this.iframe);
14025
14170
  }
@@ -14046,8 +14191,8 @@ class Softphone {
14046
14191
  }
14047
14192
 
14048
14193
  switch (event.data.type) {
14049
- case SDK_ON_CALL_MADE:
14050
- this.onCallMade(event.data.callSession);
14194
+ case SDK_ON_OUTGOING_CALL_MADE:
14195
+ this.onOutgoingCallMade(event.data.callSession);
14051
14196
  break;
14052
14197
  case SDK_CALL_ENDED: {
14053
14198
  const { callSession, content, direction, userExtension } = event.data;
@@ -14062,8 +14207,105 @@ class Softphone {
14062
14207
  this._onAuthenticated(event.data.session);
14063
14208
  this.onAuthenticated(event.data.session);
14064
14209
  break;
14210
+ case SDK_LOGGED_OUT:
14211
+ this.onLoggedOut();
14212
+ break;
14213
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
14214
+ const { content } = event.data;
14215
+ this.onCardSaved(content);
14216
+ break;
14217
+ }
14218
+ case BRIDGE_SEARCH_OPTIONS: {
14219
+ const { fieldId, query } = event.data;
14220
+ this.onSearchOptions(fieldId, query);
14221
+ break;
14222
+ }
14223
+ case BRIDGE_DISPLAY_LINKED_OPTION:
14224
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
14225
+ break;
14226
+ case BRIDGE_WAZO_CONTACT_SEARCH:
14227
+ this.onWazoContactSearch(event.data.query);
14228
+ break;
14229
+ case BRIDGE_ON_AGENT_LOGGED_IN:
14230
+ this.onAgentLoggedIn();
14231
+ break;
14232
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
14233
+ this.onAgentLoggedOut();
14234
+ break;
14235
+ case BRIDGE_ON_AGENT_PAUSED:
14236
+ this.onAgentPaused();
14237
+ break;
14238
+ case BRIDGE_ON_AGENT_RESUMED:
14239
+ this.onAgentResumed();
14240
+ break;
14241
+ case BRIDGE_ON_LANGUAGE_CHANGED:
14242
+ this.onLanguageChanged(event.data.language);
14243
+ break;
14244
+ case BRIDGE_ON_CALL_HELD:
14245
+ this.onCallHeld();
14246
+ break;
14247
+ case BRIDGE_ON_CALL_RESUMED:
14248
+ this.onCallResumed();
14249
+ break;
14250
+ case BRIDGE_ON_CALL_MUTED:
14251
+ this.onCallMuted();
14252
+ break;
14253
+ case BRIDGE_ON_CALL_UN_MUTED:
14254
+ this.onCallUnMuted();
14255
+ break;
14256
+ case BRIDGE_ON_DTMF:
14257
+ this.onDtmfSent(event.data.tone);
14258
+ break;
14259
+ case BRIDGE_ON_DIRECT_TRANSFER:
14260
+ this.onDirectTransfer(event.data.number);
14261
+ break;
14262
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
14263
+ this.onCreateIndirectTransfer(event.data.number);
14264
+ break;
14265
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
14266
+ this.onCancelIndirectTransfer();
14267
+ break;
14268
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
14269
+ this.onConfirmIndirectTransfer();
14270
+ break;
14271
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
14272
+ this.onIndirectCallMade(event.data.call);
14273
+ break;
14274
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
14275
+ this.onIndirectTransferDone(event.data.call);
14276
+ break;
14277
+ case BRIDGE_ON_START_RECORDING:
14278
+ this.onStartRecording();
14279
+ break;
14280
+ case BRIDGE_ON_STOP_RECORDING:
14281
+ this.onStopRecording();
14282
+ break;
14283
+ case BRIDGE_ON_CARD_CANCELED:
14284
+ this.onCardCanceled();
14285
+ break;
14286
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
14287
+ this.onCallLocallyAnswered(event.data.call);
14288
+ break;
14289
+ case BRIDGE_ON_CALL_REJECTED:
14290
+ this.onCallRejected(event.data.call);
14291
+ break;
14292
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
14293
+ this.onCallRemotelyAnswered(event.data.call);
14294
+ break;
14295
+ default:
14296
+ this.onUnHandledEvent(event);
14297
+ break;
14065
14298
  }
14066
14299
  }
14300
+
14301
+ _sendMessage(type , payload = {}) {
14302
+ if (!this.iframe || !this.iframeLoaded) {
14303
+ this._pendingMessages.push([type, payload]);
14304
+ return;
14305
+ }
14306
+
14307
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
14308
+ }
14067
14309
  }
14068
14310
 
14069
14311
  var Softphone$1 = new Softphone();