@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
@@ -8035,7 +8035,7 @@ class WebRTCClient extends Emitter {
8035
8035
  }
8036
8036
 
8037
8037
  async _onHeartbeatTimeout() {
8038
- logger$9.info('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8038
+ logger$9.warn('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8039
8039
 
8040
8040
  if (this.heartbeatTimeoutCb) {
8041
8041
  this.heartbeatTimeoutCb();
@@ -13572,40 +13572,159 @@ class Checker {
13572
13572
  //
13573
13573
  /* eslint-disable no-unused-vars */
13574
13574
  /* global window, document */
13575
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13576
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13577
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13578
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13579
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13580
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13581
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13582
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13583
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13584
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13585
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13586
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13587
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13588
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13589
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13590
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13591
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13592
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13593
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13594
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13595
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13596
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13597
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13598
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13599
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13600
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13601
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13602
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13603
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13604
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13605
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13606
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13607
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13608
+
13609
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13610
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13611
+
13575
13612
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13576
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13613
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13577
13614
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13578
13615
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13579
13616
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13617
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13580
13618
 
13581
13619
  class Softphone {
13582
- url = 'https://softphone.wazo.io';
13583
- width = 500;
13584
- height = 600;
13585
- displayed = false;
13586
- iframe = null;
13620
+
13621
+
13622
+
13623
+
13624
+
13625
+
13626
+
13627
+ // Message waiting for the iframe to be loaded
13628
+
13587
13629
 
13588
13630
  onLinkEnabled(link ) {}
13631
+ onIFrameLoaded() {}
13589
13632
 
13590
- onCallMade(call ) {}
13633
+ onCallLocallyAnswered(call ) {}
13634
+ onCallRemotelyAnswered(call ) {}
13635
+ onOutgoingCallMade(call ) {}
13591
13636
  onCallIncoming(call ) {}
13637
+ onCallRejected(call ) {}
13592
13638
  onCallEnded(call , card , direction , fromExtension ) {}
13639
+
13640
+ onCardSaved(card ) {}
13641
+ onCardCanceled() {}
13593
13642
  onAuthenticated(session ) {}
13643
+ onLoggedOut() {}
13644
+
13645
+ onSearchOptions(fieldId , query ) {
13646
+ this.onOptionsResults(fieldId, []);
13647
+ }
13648
+
13649
+ onDisplayLinkedOption(optionId ) {}
13650
+ onWazoContactSearch(query ) {}
13651
+ onAgentLoggedIn() {}
13652
+ onAgentLoggedOut() {}
13653
+ onAgentPaused() {}
13654
+ onAgentResumed() {}
13655
+ onLanguageChanged(language ) {}
13656
+ onCallHeld() {}
13657
+ onCallResumed() {}
13658
+ onCallMuted() {}
13659
+ onCallUnMuted() {}
13660
+ onDtmfSent(tone ) {}
13661
+ onDirectTransfer(number ) {}
13662
+ onCreateIndirectTransfer(number ) {}
13663
+ onCancelIndirectTransfer() {}
13664
+ onConfirmIndirectTransfer() {}
13665
+ onIndirectCallMade(call ) {}
13666
+ onIndirectTransferDone(call ) {}
13667
+ onStartRecording() {}
13668
+ onStopRecording() {}
13669
+ onUnHandledEvent(event ) {}
13670
+
13671
+ init({
13672
+ url,
13673
+ width,
13674
+ height,
13675
+ server,
13676
+ port,
13677
+ language,
13678
+ wrapUpDuration,
13679
+ enableAgent = true,
13680
+ tenantId,
13681
+ debug = false,
13682
+ } = {}) {
13683
+ this.url = url || 'https://softphone.wazo.io';
13684
+ this.width = width || 500;
13685
+ this.height = height || 600;
13686
+ this.displayed = false;
13687
+ this.iframeLoaded = false;
13688
+
13689
+ this.iframeLoaded = false;
13690
+ this._pendingMessages = [];
13691
+ window.addEventListener('message', this._onMessage.bind(this), false);
13692
+
13693
+ if (!server) {
13694
+ // eslint-disable-next-line no-param-reassign
13695
+ server = 'stack.dev.wazo.io';
13696
+ }
13594
13697
 
13595
- init(url , width , height ) {
13596
- if (url) {
13597
- this.url = url;
13698
+ const config = { server };
13699
+ if (language) {
13700
+ config.language = language;
13701
+ }
13702
+ if (port) {
13703
+ config.port = port;
13598
13704
  }
13599
- if (width) {
13600
- this.width = width;
13705
+ if (tenantId) {
13706
+ config.tenantId = tenantId;
13601
13707
  }
13602
- if (height) {
13603
- this.height = height;
13708
+ if (wrapUpDuration) {
13709
+ config.wrapUpDuration = wrapUpDuration;
13604
13710
  }
13605
13711
 
13606
- window.addEventListener('message', this._onMessage.bind(this), false);
13712
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13607
13713
 
13608
- this._createIframe();
13714
+ if (enableAgent) {
13715
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
13716
+ }
13717
+
13718
+ if (debug) {
13719
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
13720
+ }
13721
+
13722
+ this._createIframe(() => {
13723
+ this.iframeLoaded = true;
13724
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
13725
+
13726
+ this.onIFrameLoaded();
13727
+ });
13609
13728
  }
13610
13729
 
13611
13730
  parseLinks() {
@@ -13621,9 +13740,7 @@ class Softphone {
13621
13740
  makeCall(number ) {
13622
13741
  this.displaySoftphone();
13623
13742
 
13624
- if (this.iframe) {
13625
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13626
- }
13743
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13627
13744
  }
13628
13745
 
13629
13746
  toggleSoftphoneDisplay() {
@@ -13632,8 +13749,6 @@ class Softphone {
13632
13749
  } else {
13633
13750
  this.displaySoftphone();
13634
13751
  }
13635
-
13636
- this.displayed = !this.displayed;
13637
13752
  }
13638
13753
 
13639
13754
  displaySoftphone() {
@@ -13644,15 +13759,42 @@ class Softphone {
13644
13759
  if (this.iframe) {
13645
13760
  this.iframe.style.display = 'block';
13646
13761
  }
13762
+
13763
+ this.displayed = true;
13647
13764
  }
13648
13765
 
13649
13766
  hideSoftphone() {
13650
13767
  if (this.iframe) {
13651
13768
  this.iframe.style.display = 'none';
13652
13769
  }
13770
+ this.displayed = false;
13771
+ }
13772
+
13773
+ optionsFetched(fieldId , options ) {
13774
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13775
+ }
13776
+
13777
+ onOptionsResults(fieldId , options ) {
13778
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13779
+ }
13780
+
13781
+ setFormSchema(schema , uiSchema ) {
13782
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13783
+ }
13784
+
13785
+ setCardValue(field , value ) {
13786
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
13787
+ }
13788
+
13789
+ injectCss(css ) {
13790
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
13653
13791
  }
13654
13792
 
13655
- _createIframe() {
13793
+ customizeAppearance(themes , translations , assets ) {
13794
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
13795
+ }
13796
+
13797
+ _createIframe(cb = () => {}) {
13656
13798
  this.iframe = document.createElement('iframe');
13657
13799
  // $FlowFixMe
13658
13800
  this.iframe.width = this.width;
@@ -13664,10 +13806,13 @@ class Softphone {
13664
13806
  this.iframe.style.left = '0';
13665
13807
  this.iframe.style.bottom = '0';
13666
13808
  this.iframe.style.border = '1px solid #aaa';
13809
+ this.iframe.style.backgroundColor = 'white';
13667
13810
  this.iframe.src = this.url;
13668
13811
  this.iframe.style.display = 'none';
13669
13812
  this.iframe.id = 'wazo-softphone';
13670
13813
 
13814
+ this.iframe.onload = cb;
13815
+
13671
13816
  // $FlowFixMe
13672
13817
  document.body.appendChild(this.iframe);
13673
13818
  }
@@ -13694,8 +13839,8 @@ class Softphone {
13694
13839
  }
13695
13840
 
13696
13841
  switch (event.data.type) {
13697
- case SDK_ON_CALL_MADE:
13698
- this.onCallMade(event.data.callSession);
13842
+ case SDK_ON_OUTGOING_CALL_MADE:
13843
+ this.onOutgoingCallMade(event.data.callSession);
13699
13844
  break;
13700
13845
  case SDK_CALL_ENDED: {
13701
13846
  const { callSession, content, direction, userExtension } = event.data;
@@ -13710,8 +13855,105 @@ class Softphone {
13710
13855
  this._onAuthenticated(event.data.session);
13711
13856
  this.onAuthenticated(event.data.session);
13712
13857
  break;
13858
+ case SDK_LOGGED_OUT:
13859
+ this.onLoggedOut();
13860
+ break;
13861
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13862
+ const { content } = event.data;
13863
+ this.onCardSaved(content);
13864
+ break;
13865
+ }
13866
+ case BRIDGE_SEARCH_OPTIONS: {
13867
+ const { fieldId, query } = event.data;
13868
+ this.onSearchOptions(fieldId, query);
13869
+ break;
13870
+ }
13871
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13872
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13873
+ break;
13874
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13875
+ this.onWazoContactSearch(event.data.query);
13876
+ break;
13877
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13878
+ this.onAgentLoggedIn();
13879
+ break;
13880
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13881
+ this.onAgentLoggedOut();
13882
+ break;
13883
+ case BRIDGE_ON_AGENT_PAUSED:
13884
+ this.onAgentPaused();
13885
+ break;
13886
+ case BRIDGE_ON_AGENT_RESUMED:
13887
+ this.onAgentResumed();
13888
+ break;
13889
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13890
+ this.onLanguageChanged(event.data.language);
13891
+ break;
13892
+ case BRIDGE_ON_CALL_HELD:
13893
+ this.onCallHeld();
13894
+ break;
13895
+ case BRIDGE_ON_CALL_RESUMED:
13896
+ this.onCallResumed();
13897
+ break;
13898
+ case BRIDGE_ON_CALL_MUTED:
13899
+ this.onCallMuted();
13900
+ break;
13901
+ case BRIDGE_ON_CALL_UN_MUTED:
13902
+ this.onCallUnMuted();
13903
+ break;
13904
+ case BRIDGE_ON_DTMF:
13905
+ this.onDtmfSent(event.data.tone);
13906
+ break;
13907
+ case BRIDGE_ON_DIRECT_TRANSFER:
13908
+ this.onDirectTransfer(event.data.number);
13909
+ break;
13910
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13911
+ this.onCreateIndirectTransfer(event.data.number);
13912
+ break;
13913
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13914
+ this.onCancelIndirectTransfer();
13915
+ break;
13916
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13917
+ this.onConfirmIndirectTransfer();
13918
+ break;
13919
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
13920
+ this.onIndirectCallMade(event.data.call);
13921
+ break;
13922
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
13923
+ this.onIndirectTransferDone(event.data.call);
13924
+ break;
13925
+ case BRIDGE_ON_START_RECORDING:
13926
+ this.onStartRecording();
13927
+ break;
13928
+ case BRIDGE_ON_STOP_RECORDING:
13929
+ this.onStopRecording();
13930
+ break;
13931
+ case BRIDGE_ON_CARD_CANCELED:
13932
+ this.onCardCanceled();
13933
+ break;
13934
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
13935
+ this.onCallLocallyAnswered(event.data.call);
13936
+ break;
13937
+ case BRIDGE_ON_CALL_REJECTED:
13938
+ this.onCallRejected(event.data.call);
13939
+ break;
13940
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
13941
+ this.onCallRemotelyAnswered(event.data.call);
13942
+ break;
13943
+ default:
13944
+ this.onUnHandledEvent(event);
13945
+ break;
13713
13946
  }
13714
13947
  }
13948
+
13949
+ _sendMessage(type , payload = {}) {
13950
+ if (!this.iframe || !this.iframeLoaded) {
13951
+ this._pendingMessages.push([type, payload]);
13952
+ return;
13953
+ }
13954
+
13955
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
13956
+ }
13715
13957
  }
13716
13958
 
13717
13959
  var Softphone$1 = new Softphone();