@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();
@@ -13843,40 +13843,159 @@ class Checker {
13843
13843
  //
13844
13844
  /* eslint-disable no-unused-vars */
13845
13845
  /* global window, document */
13846
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13847
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13848
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13849
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13850
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13851
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13852
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13853
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13854
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13855
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13856
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13857
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13858
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13859
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13860
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13861
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13862
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13863
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13864
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13865
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13866
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13867
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13868
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13869
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13870
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13871
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13872
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13873
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13874
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13875
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13876
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13877
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13878
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13879
+
13880
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13881
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13882
+
13846
13883
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13847
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13884
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13848
13885
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13849
13886
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13850
13887
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13888
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13851
13889
 
13852
13890
  class Softphone {
13853
- url = 'https://softphone.wazo.io';
13854
- width = 500;
13855
- height = 600;
13856
- displayed = false;
13857
- iframe = null;
13891
+
13892
+
13893
+
13894
+
13895
+
13896
+
13897
+
13898
+ // Message waiting for the iframe to be loaded
13899
+
13858
13900
 
13859
13901
  onLinkEnabled(link ) {}
13902
+ onIFrameLoaded() {}
13860
13903
 
13861
- onCallMade(call ) {}
13904
+ onCallLocallyAnswered(call ) {}
13905
+ onCallRemotelyAnswered(call ) {}
13906
+ onOutgoingCallMade(call ) {}
13862
13907
  onCallIncoming(call ) {}
13908
+ onCallRejected(call ) {}
13863
13909
  onCallEnded(call , card , direction , fromExtension ) {}
13910
+
13911
+ onCardSaved(card ) {}
13912
+ onCardCanceled() {}
13864
13913
  onAuthenticated(session ) {}
13914
+ onLoggedOut() {}
13915
+
13916
+ onSearchOptions(fieldId , query ) {
13917
+ this.onOptionsResults(fieldId, []);
13918
+ }
13919
+
13920
+ onDisplayLinkedOption(optionId ) {}
13921
+ onWazoContactSearch(query ) {}
13922
+ onAgentLoggedIn() {}
13923
+ onAgentLoggedOut() {}
13924
+ onAgentPaused() {}
13925
+ onAgentResumed() {}
13926
+ onLanguageChanged(language ) {}
13927
+ onCallHeld() {}
13928
+ onCallResumed() {}
13929
+ onCallMuted() {}
13930
+ onCallUnMuted() {}
13931
+ onDtmfSent(tone ) {}
13932
+ onDirectTransfer(number ) {}
13933
+ onCreateIndirectTransfer(number ) {}
13934
+ onCancelIndirectTransfer() {}
13935
+ onConfirmIndirectTransfer() {}
13936
+ onIndirectCallMade(call ) {}
13937
+ onIndirectTransferDone(call ) {}
13938
+ onStartRecording() {}
13939
+ onStopRecording() {}
13940
+ onUnHandledEvent(event ) {}
13941
+
13942
+ init({
13943
+ url,
13944
+ width,
13945
+ height,
13946
+ server,
13947
+ port,
13948
+ language,
13949
+ wrapUpDuration,
13950
+ enableAgent = true,
13951
+ tenantId,
13952
+ debug = false,
13953
+ } = {}) {
13954
+ this.url = url || 'https://softphone.wazo.io';
13955
+ this.width = width || 500;
13956
+ this.height = height || 600;
13957
+ this.displayed = false;
13958
+ this.iframeLoaded = false;
13959
+
13960
+ this.iframeLoaded = false;
13961
+ this._pendingMessages = [];
13962
+ window.addEventListener('message', this._onMessage.bind(this), false);
13963
+
13964
+ if (!server) {
13965
+ // eslint-disable-next-line no-param-reassign
13966
+ server = 'stack.dev.wazo.io';
13967
+ }
13865
13968
 
13866
- init(url , width , height ) {
13867
- if (url) {
13868
- this.url = url;
13969
+ const config = { server };
13970
+ if (language) {
13971
+ config.language = language;
13972
+ }
13973
+ if (port) {
13974
+ config.port = port;
13869
13975
  }
13870
- if (width) {
13871
- this.width = width;
13976
+ if (tenantId) {
13977
+ config.tenantId = tenantId;
13872
13978
  }
13873
- if (height) {
13874
- this.height = height;
13979
+ if (wrapUpDuration) {
13980
+ config.wrapUpDuration = wrapUpDuration;
13875
13981
  }
13876
13982
 
13877
- window.addEventListener('message', this._onMessage.bind(this), false);
13983
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13878
13984
 
13879
- this._createIframe();
13985
+ if (enableAgent) {
13986
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
13987
+ }
13988
+
13989
+ if (debug) {
13990
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
13991
+ }
13992
+
13993
+ this._createIframe(() => {
13994
+ this.iframeLoaded = true;
13995
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
13996
+
13997
+ this.onIFrameLoaded();
13998
+ });
13880
13999
  }
13881
14000
 
13882
14001
  parseLinks() {
@@ -13892,9 +14011,7 @@ class Softphone {
13892
14011
  makeCall(number ) {
13893
14012
  this.displaySoftphone();
13894
14013
 
13895
- if (this.iframe) {
13896
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13897
- }
14014
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13898
14015
  }
13899
14016
 
13900
14017
  toggleSoftphoneDisplay() {
@@ -13903,8 +14020,6 @@ class Softphone {
13903
14020
  } else {
13904
14021
  this.displaySoftphone();
13905
14022
  }
13906
-
13907
- this.displayed = !this.displayed;
13908
14023
  }
13909
14024
 
13910
14025
  displaySoftphone() {
@@ -13915,15 +14030,42 @@ class Softphone {
13915
14030
  if (this.iframe) {
13916
14031
  this.iframe.style.display = 'block';
13917
14032
  }
14033
+
14034
+ this.displayed = true;
13918
14035
  }
13919
14036
 
13920
14037
  hideSoftphone() {
13921
14038
  if (this.iframe) {
13922
14039
  this.iframe.style.display = 'none';
13923
14040
  }
14041
+ this.displayed = false;
14042
+ }
14043
+
14044
+ optionsFetched(fieldId , options ) {
14045
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
14046
+ }
14047
+
14048
+ onOptionsResults(fieldId , options ) {
14049
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
14050
+ }
14051
+
14052
+ setFormSchema(schema , uiSchema ) {
14053
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
14054
+ }
14055
+
14056
+ setCardValue(field , value ) {
14057
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
14058
+ }
14059
+
14060
+ injectCss(css ) {
14061
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
13924
14062
  }
13925
14063
 
13926
- _createIframe() {
14064
+ customizeAppearance(themes , translations , assets ) {
14065
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
14066
+ }
14067
+
14068
+ _createIframe(cb = () => {}) {
13927
14069
  this.iframe = document.createElement('iframe');
13928
14070
  // $FlowFixMe
13929
14071
  this.iframe.width = this.width;
@@ -13935,10 +14077,13 @@ class Softphone {
13935
14077
  this.iframe.style.left = '0';
13936
14078
  this.iframe.style.bottom = '0';
13937
14079
  this.iframe.style.border = '1px solid #aaa';
14080
+ this.iframe.style.backgroundColor = 'white';
13938
14081
  this.iframe.src = this.url;
13939
14082
  this.iframe.style.display = 'none';
13940
14083
  this.iframe.id = 'wazo-softphone';
13941
14084
 
14085
+ this.iframe.onload = cb;
14086
+
13942
14087
  // $FlowFixMe
13943
14088
  document.body.appendChild(this.iframe);
13944
14089
  }
@@ -13965,8 +14110,8 @@ class Softphone {
13965
14110
  }
13966
14111
 
13967
14112
  switch (event.data.type) {
13968
- case SDK_ON_CALL_MADE:
13969
- this.onCallMade(event.data.callSession);
14113
+ case SDK_ON_OUTGOING_CALL_MADE:
14114
+ this.onOutgoingCallMade(event.data.callSession);
13970
14115
  break;
13971
14116
  case SDK_CALL_ENDED: {
13972
14117
  const { callSession, content, direction, userExtension } = event.data;
@@ -13981,8 +14126,105 @@ class Softphone {
13981
14126
  this._onAuthenticated(event.data.session);
13982
14127
  this.onAuthenticated(event.data.session);
13983
14128
  break;
14129
+ case SDK_LOGGED_OUT:
14130
+ this.onLoggedOut();
14131
+ break;
14132
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
14133
+ const { content } = event.data;
14134
+ this.onCardSaved(content);
14135
+ break;
14136
+ }
14137
+ case BRIDGE_SEARCH_OPTIONS: {
14138
+ const { fieldId, query } = event.data;
14139
+ this.onSearchOptions(fieldId, query);
14140
+ break;
14141
+ }
14142
+ case BRIDGE_DISPLAY_LINKED_OPTION:
14143
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
14144
+ break;
14145
+ case BRIDGE_WAZO_CONTACT_SEARCH:
14146
+ this.onWazoContactSearch(event.data.query);
14147
+ break;
14148
+ case BRIDGE_ON_AGENT_LOGGED_IN:
14149
+ this.onAgentLoggedIn();
14150
+ break;
14151
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
14152
+ this.onAgentLoggedOut();
14153
+ break;
14154
+ case BRIDGE_ON_AGENT_PAUSED:
14155
+ this.onAgentPaused();
14156
+ break;
14157
+ case BRIDGE_ON_AGENT_RESUMED:
14158
+ this.onAgentResumed();
14159
+ break;
14160
+ case BRIDGE_ON_LANGUAGE_CHANGED:
14161
+ this.onLanguageChanged(event.data.language);
14162
+ break;
14163
+ case BRIDGE_ON_CALL_HELD:
14164
+ this.onCallHeld();
14165
+ break;
14166
+ case BRIDGE_ON_CALL_RESUMED:
14167
+ this.onCallResumed();
14168
+ break;
14169
+ case BRIDGE_ON_CALL_MUTED:
14170
+ this.onCallMuted();
14171
+ break;
14172
+ case BRIDGE_ON_CALL_UN_MUTED:
14173
+ this.onCallUnMuted();
14174
+ break;
14175
+ case BRIDGE_ON_DTMF:
14176
+ this.onDtmfSent(event.data.tone);
14177
+ break;
14178
+ case BRIDGE_ON_DIRECT_TRANSFER:
14179
+ this.onDirectTransfer(event.data.number);
14180
+ break;
14181
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
14182
+ this.onCreateIndirectTransfer(event.data.number);
14183
+ break;
14184
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
14185
+ this.onCancelIndirectTransfer();
14186
+ break;
14187
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
14188
+ this.onConfirmIndirectTransfer();
14189
+ break;
14190
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
14191
+ this.onIndirectCallMade(event.data.call);
14192
+ break;
14193
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
14194
+ this.onIndirectTransferDone(event.data.call);
14195
+ break;
14196
+ case BRIDGE_ON_START_RECORDING:
14197
+ this.onStartRecording();
14198
+ break;
14199
+ case BRIDGE_ON_STOP_RECORDING:
14200
+ this.onStopRecording();
14201
+ break;
14202
+ case BRIDGE_ON_CARD_CANCELED:
14203
+ this.onCardCanceled();
14204
+ break;
14205
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
14206
+ this.onCallLocallyAnswered(event.data.call);
14207
+ break;
14208
+ case BRIDGE_ON_CALL_REJECTED:
14209
+ this.onCallRejected(event.data.call);
14210
+ break;
14211
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
14212
+ this.onCallRemotelyAnswered(event.data.call);
14213
+ break;
14214
+ default:
14215
+ this.onUnHandledEvent(event);
14216
+ break;
13984
14217
  }
13985
14218
  }
14219
+
14220
+ _sendMessage(type , payload = {}) {
14221
+ if (!this.iframe || !this.iframeLoaded) {
14222
+ this._pendingMessages.push([type, payload]);
14223
+ return;
14224
+ }
14225
+
14226
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
14227
+ }
13986
14228
  }
13987
14229
 
13988
14230
  var Softphone$1 = new Softphone();