@wazo/sdk 0.37.42 → 0.38.1

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 (109) hide show
  1. package/README.md +218 -0
  2. package/dist/wazo-sdk.js +5 -5
  3. package/esm/__tests__/api-client.test.js +12 -7
  4. package/esm/__tests__/web-rtc-client.test.js +17 -10
  5. package/esm/api/agentd.js +12 -7
  6. package/esm/api/amid.js +12 -7
  7. package/esm/api/application.js +12 -7
  8. package/esm/api/auth.js +12 -7
  9. package/esm/api/call-logd.js +12 -7
  10. package/esm/api/calld.js +12 -7
  11. package/esm/api/chatd.js +12 -7
  12. package/esm/api/confd.js +12 -7
  13. package/esm/api/ctid-ng.js +12 -7
  14. package/esm/api/dird.js +12 -7
  15. package/esm/api/webhookd.js +12 -7
  16. package/esm/api-client.js +12 -7
  17. package/esm/checker/Checker.js +18 -11
  18. package/esm/checker/checks/aor.js +12 -7
  19. package/esm/checker/checks/api.js +12 -7
  20. package/esm/checker/checks/index.js +18 -11
  21. package/esm/checker/checks/wazo-websocket.js +13 -8
  22. package/esm/checker/checks/webrtc-transport.js +17 -10
  23. package/esm/checker/checks/webrtc.js +17 -10
  24. package/esm/domain/AdHocAPIConference.js +12 -7
  25. package/esm/domain/Features.js +12 -7
  26. package/esm/domain/Phone/CTIPhone.js +12 -7
  27. package/esm/domain/Phone/WebRTCPhone.js +12 -7
  28. package/esm/index.js +347 -11
  29. package/esm/lib/WazoSessionDescriptionHandler.js +12 -7
  30. package/esm/service/CallApi.js +12 -7
  31. package/esm/service/IssueReporter.js +12 -7
  32. package/esm/service/__tests__/IssueReporter.test.js +18 -7
  33. package/esm/service/getApiClient.js +12 -7
  34. package/esm/simple/Auth.js +347 -11
  35. package/esm/simple/Configuration.js +347 -11
  36. package/esm/simple/Directory.js +12 -7
  37. package/esm/simple/Phone.js +347 -11
  38. package/esm/simple/Softphone.js +329 -0
  39. package/esm/simple/Websocket.js +13 -8
  40. package/esm/simple/index.js +347 -11
  41. package/esm/simple/room/LocalParticipant.js +347 -11
  42. package/esm/simple/room/Participant.js +347 -11
  43. package/esm/simple/room/RemoteParticipant.js +347 -11
  44. package/esm/simple/room/Room.js +347 -11
  45. package/esm/simple/room/SipRoom.js +347 -11
  46. package/esm/simple/room/Stream.js +347 -11
  47. package/esm/simple/room/__tests__/RemoteParticipant.test.js +347 -11
  48. package/esm/simple/utils.js +347 -11
  49. package/esm/utils/__tests__/api-requester.test.js +12 -7
  50. package/esm/utils/api-requester.js +12 -7
  51. package/esm/web-rtc-client.js +17 -10
  52. package/esm/websocket-client.js +13 -8
  53. package/lib/__tests__/api-client.test.js +12 -7
  54. package/lib/__tests__/web-rtc-client.test.js +17 -10
  55. package/lib/api/agentd.js +12 -7
  56. package/lib/api/amid.js +12 -7
  57. package/lib/api/application.js +12 -7
  58. package/lib/api/auth.js +12 -7
  59. package/lib/api/call-logd.js +12 -7
  60. package/lib/api/calld.js +12 -7
  61. package/lib/api/chatd.js +12 -7
  62. package/lib/api/confd.js +12 -7
  63. package/lib/api/ctid-ng.js +12 -7
  64. package/lib/api/dird.js +12 -7
  65. package/lib/api/webhookd.js +12 -7
  66. package/lib/api-client.js +12 -7
  67. package/lib/checker/Checker.js +18 -11
  68. package/lib/checker/checks/aor.js +12 -7
  69. package/lib/checker/checks/api.js +12 -7
  70. package/lib/checker/checks/index.js +18 -11
  71. package/lib/checker/checks/wazo-websocket.js +13 -8
  72. package/lib/checker/checks/webrtc-transport.js +17 -10
  73. package/lib/checker/checks/webrtc.js +17 -10
  74. package/lib/domain/AdHocAPIConference.js +12 -7
  75. package/lib/domain/Features.js +12 -7
  76. package/lib/domain/Phone/CTIPhone.js +12 -7
  77. package/lib/domain/Phone/WebRTCPhone.js +12 -7
  78. package/lib/index.js +347 -11
  79. package/lib/lib/WazoSessionDescriptionHandler.js +12 -7
  80. package/lib/service/CallApi.js +12 -7
  81. package/lib/service/IssueReporter.js +12 -7
  82. package/lib/service/__tests__/IssueReporter.test.js +18 -7
  83. package/lib/service/getApiClient.js +12 -7
  84. package/lib/simple/Auth.js +347 -11
  85. package/lib/simple/Configuration.js +347 -11
  86. package/lib/simple/Directory.js +12 -7
  87. package/lib/simple/Phone.js +347 -11
  88. package/lib/simple/Softphone.js +331 -0
  89. package/lib/simple/Websocket.js +13 -8
  90. package/lib/simple/index.js +347 -11
  91. package/lib/simple/room/LocalParticipant.js +347 -11
  92. package/lib/simple/room/Participant.js +347 -11
  93. package/lib/simple/room/RemoteParticipant.js +347 -11
  94. package/lib/simple/room/Room.js +347 -11
  95. package/lib/simple/room/SipRoom.js +347 -11
  96. package/lib/simple/room/Stream.js +347 -11
  97. package/lib/simple/room/__tests__/RemoteParticipant.test.js +347 -11
  98. package/lib/simple/utils.js +347 -11
  99. package/lib/utils/__tests__/api-requester.test.js +12 -7
  100. package/lib/utils/api-requester.js +12 -7
  101. package/lib/web-rtc-client.js +17 -10
  102. package/lib/websocket-client.js +13 -8
  103. package/package.json +1 -1
  104. package/src/service/IssueReporter.js +12 -7
  105. package/src/service/__tests__/IssueReporter.test.js +6 -0
  106. package/src/simple/Softphone.js +327 -0
  107. package/src/simple/index.js +2 -0
  108. package/src/web-rtc-client.js +5 -3
  109. package/src/websocket-client.js +1 -1
@@ -1909,13 +1909,9 @@ class IssueReporter {
1909
1909
 
1910
1910
  setTimeout(() => {
1911
1911
  if (isArray) {
1912
- payload = payload.map(message => {
1913
- message._retry = retry + 1;
1914
- return message;
1915
- });
1916
- } else {
1917
- // $FlowFixMe
1918
- payload._retry = retry + 1;
1912
+ payload = payload.map(message => this._writeRetryCount(message, retry + 1));
1913
+ } else if (payload && typeof payload === 'object') {
1914
+ payload = this._writeRetryCount(payload, retry + 1);
1919
1915
  }
1920
1916
 
1921
1917
  this._sendDebugToGrafana(payload, retry + 1);
@@ -1923,6 +1919,15 @@ class IssueReporter {
1923
1919
  });
1924
1920
  }
1925
1921
 
1922
+ _writeRetryCount(message , count ) {
1923
+ if (message && typeof message === 'object') {
1924
+ // $FlowFixMe
1925
+ message._retry = count;
1926
+ }
1927
+
1928
+ return message;
1929
+ }
1930
+
1926
1931
  _isLevelAbove(level1 , level2 ) {
1927
1932
  const index1 = LOG_LEVELS.indexOf(level1);
1928
1933
  const index2 = LOG_LEVELS.indexOf(level2);
@@ -7174,8 +7179,10 @@ class WebRTCClient extends Emitter {
7174
7179
  conference: isConference,
7175
7180
  };
7176
7181
 
7177
- // Avoid sdh to created a new stream
7178
- session.sessionDescriptionHandler.localMediaStreamConstraints = options.constraints;
7182
+ // Avoid sdh to create a new stream
7183
+ if (session.sessionDescriptionHandler) {
7184
+ session.sessionDescriptionHandler.localMediaStreamConstraints = options.constraints;
7185
+ }
7179
7186
 
7180
7187
  // Send re-INVITE
7181
7188
  return session.invite(options);
@@ -8018,7 +8025,7 @@ class WebRTCClient extends Emitter {
8018
8025
  }
8019
8026
 
8020
8027
  async _onHeartbeatTimeout() {
8021
- logger$9.info('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8028
+ logger$9.warn('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8022
8029
 
8023
8030
  if (this.heartbeatTimeoutCb) {
8024
8031
  this.heartbeatTimeoutCb();
@@ -11186,7 +11193,7 @@ class WebSocketClient extends Emitter {
11186
11193
  this.close();
11187
11194
  }
11188
11195
  const url = `wss://${this.host || ''}/api/websocketd/?token=${this.token || ''}&version=${this.version}`;
11189
- logger$6.log('Wazo WS url computed to reconnect', { url });
11196
+ logger$6.info('Wazo WS url computed to reconnect', { url });
11190
11197
 
11191
11198
  return url;
11192
11199
  }
@@ -13644,6 +13651,334 @@ class Checker {
13644
13651
  }
13645
13652
  }
13646
13653
 
13654
+ //
13655
+ /* eslint-disable no-unused-vars */
13656
+ /* global window, document */
13657
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13658
+ const BRIDGE_ENABLE_CARD = 'bridge/ENABLE_CARD';
13659
+ const BRIDGE_CHANGE_REQUIRED_SUBSCRIPTION_TYPE = 'bridge/CHANGE_REQUIRED_SUBSCRIPTION_TYPE';
13660
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13661
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13662
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13663
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13664
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13665
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13666
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13667
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13668
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13669
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13670
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13671
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13672
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13673
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13674
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13675
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13676
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13677
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13678
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13679
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13680
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13681
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13682
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13683
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13684
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13685
+
13686
+ const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13687
+ const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13688
+ const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13689
+ const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13690
+ const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13691
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13692
+
13693
+ class Softphone {
13694
+ url = 'https://softphone.wazo.io';
13695
+ width = 500;
13696
+ height = 600;
13697
+ displayed = false;
13698
+ iframe = null;
13699
+
13700
+ onLinkEnabled(link ) {}
13701
+ onIFrameLoaded() {}
13702
+
13703
+ onCallMade(call ) {}
13704
+ onCallIncoming(call ) {}
13705
+ onCallEnded(call , card , direction , fromExtension ) {}
13706
+ onCardSaved(card ) {}
13707
+ onAuthenticated(session ) {}
13708
+ onLoggedOut() {}
13709
+ onSearchOptions(fieldId , query ) {}
13710
+ onDisplayLinkedOption(optionId ) {}
13711
+ onWazoContactSearch(query ) {}
13712
+ onAgentLoggedIn() {}
13713
+ onAgentLoggedOut() {}
13714
+ onAgentPaused() {}
13715
+ onAgentResumed() {}
13716
+ onLanguageChanged(language ) {}
13717
+ onCallHeld() {}
13718
+ onCallResumed() {}
13719
+ onCallMuted() {}
13720
+ onCallUnMuted() {}
13721
+ onDtmfSent(tone ) {}
13722
+ onDirectTransfer(number ) {}
13723
+ onCreateIndirectTransfer(number ) {}
13724
+ onCancelIndirectTransfer() {}
13725
+ onConfirmIndirectTransfer() {}
13726
+ onIndirectCallMade(call ) {}
13727
+ onIndirectTransferDone(call ) {}
13728
+ onStartRecording() {}
13729
+ onStopRecording() {}
13730
+ onUnHandledEvent(event ) {}
13731
+
13732
+ init({ url, width, height, server, port, language, wrapUpDuration, shouldDisplayLinkedEntities,
13733
+ allowContactCreation, withCard, subscriptionType, enableAgent } = {}) {
13734
+ if (url) {
13735
+ this.url = url;
13736
+ }
13737
+ if (width) {
13738
+ this.width = width;
13739
+ }
13740
+ if (height) {
13741
+ this.height = height;
13742
+ }
13743
+
13744
+ window.addEventListener('message', this._onMessage.bind(this), false);
13745
+
13746
+ if (!server) {
13747
+ // eslint-disable-next-line no-param-reassign
13748
+ server = 'stack.dev.wazo.io';
13749
+ }
13750
+
13751
+ this._createIframe(() => {
13752
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, {
13753
+ config: {
13754
+ server,
13755
+ port,
13756
+ language,
13757
+ wrapUpDuration,
13758
+ shouldDisplayLinkedEntities,
13759
+ allowContactCreation,
13760
+ },
13761
+ });
13762
+
13763
+ if (withCard) {
13764
+ this._sendMessage(BRIDGE_ENABLE_CARD);
13765
+ }
13766
+
13767
+ if (subscriptionType) {
13768
+ this._sendMessage(BRIDGE_CHANGE_REQUIRED_SUBSCRIPTION_TYPE, { subscriptionType });
13769
+ }
13770
+
13771
+ this.onIFrameLoaded();
13772
+ });
13773
+ }
13774
+
13775
+ parseLinks() {
13776
+ const links = this._getLinks();
13777
+
13778
+ links.forEach(link => {
13779
+ link.setAttribute('data-wazo-parsed', true);
13780
+ link.addEventListener('click', this._onLinkClick.bind(this));
13781
+ this.onLinkEnabled(link);
13782
+ });
13783
+ }
13784
+
13785
+ makeCall(number ) {
13786
+ this.displaySoftphone();
13787
+
13788
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13789
+ }
13790
+
13791
+ toggleSoftphoneDisplay() {
13792
+ if (this.displayed) {
13793
+ this.hideSoftphone();
13794
+ } else {
13795
+ this.displaySoftphone();
13796
+ }
13797
+ }
13798
+
13799
+ displaySoftphone() {
13800
+ if (!this.iframe) {
13801
+ this._createIframe();
13802
+ }
13803
+
13804
+ if (this.iframe) {
13805
+ this.iframe.style.display = 'block';
13806
+ }
13807
+
13808
+ this.displayed = true;
13809
+ }
13810
+
13811
+ hideSoftphone() {
13812
+ if (this.iframe) {
13813
+ this.iframe.style.display = 'none';
13814
+ }
13815
+ this.displayed = false;
13816
+ }
13817
+
13818
+ optionsFetched(fieldId , options ) {
13819
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13820
+ }
13821
+
13822
+ onOptionsResults(fieldId , options ) {
13823
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13824
+ }
13825
+
13826
+ setFormSchema(schema , uiSchema ) {
13827
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13828
+ }
13829
+
13830
+ _createIframe(cb = () => {}) {
13831
+ this.iframe = document.createElement('iframe');
13832
+ // $FlowFixMe
13833
+ this.iframe.width = this.width;
13834
+ // $FlowFixMe
13835
+ this.iframe.height = this.height;
13836
+ // $FlowFixMe
13837
+ this.iframe.allow = 'camera *; microphone *; autoplay *; display-capture *';
13838
+ this.iframe.style.position = 'absolute';
13839
+ this.iframe.style.left = '0';
13840
+ this.iframe.style.bottom = '0';
13841
+ this.iframe.style.border = '1px solid #aaa';
13842
+ this.iframe.style.backgroundColor = 'white';
13843
+ this.iframe.src = this.url;
13844
+ this.iframe.style.display = 'none';
13845
+ this.iframe.id = 'wazo-softphone';
13846
+
13847
+ this.iframe.onload = cb;
13848
+
13849
+ // $FlowFixMe
13850
+ document.body.appendChild(this.iframe);
13851
+ }
13852
+
13853
+ _getLinks() {
13854
+ return [].slice.call(document.querySelectorAll('a:not([data-wazo-parsed])'), 0)
13855
+ .filter(link => link.href.indexOf('tel:') === 0 || link.href.indexOf('callto:') === 0);
13856
+ }
13857
+
13858
+ _onLinkClick(e ) {
13859
+ e.preventDefault();
13860
+ const number = e.target.href.split(':')[1];
13861
+
13862
+ this.makeCall(number);
13863
+ }
13864
+
13865
+ _onAuthenticated() {
13866
+ this.parseLinks();
13867
+ }
13868
+
13869
+ _onMessage(event ) {
13870
+ if (!event.data) {
13871
+ return;
13872
+ }
13873
+
13874
+ switch (event.data.type) {
13875
+ case SDK_ON_CALL_MADE:
13876
+ this.onCallMade(event.data.callSession);
13877
+ break;
13878
+ case SDK_CALL_ENDED: {
13879
+ const { callSession, content, direction, userExtension } = event.data;
13880
+ this.onCallEnded(callSession, content, direction, userExtension);
13881
+ break;
13882
+ }
13883
+ case SDK_CALL_INCOMING:
13884
+ this.onCallIncoming(event.data.callSession);
13885
+ break;
13886
+ case SDK_AUTHENTICATED:
13887
+ // $FlowFixMe
13888
+ this._onAuthenticated(event.data.session);
13889
+ this.onAuthenticated(event.data.session);
13890
+ break;
13891
+ case SDK_LOGGED_OUT:
13892
+ this.onLoggedOut();
13893
+ break;
13894
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13895
+ const { content } = event.data;
13896
+ this.onCardSaved(content);
13897
+ break;
13898
+ }
13899
+ case BRIDGE_SEARCH_OPTIONS: {
13900
+ const { fieldId, query } = event.data;
13901
+ this.onSearchOptions(fieldId, query);
13902
+ break;
13903
+ }
13904
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13905
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13906
+ break;
13907
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13908
+ this.onWazoContactSearch(event.data.query);
13909
+ break;
13910
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13911
+ this.onAgentLoggedIn();
13912
+ break;
13913
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13914
+ this.onAgentLoggedOut();
13915
+ break;
13916
+ case BRIDGE_ON_AGENT_PAUSED:
13917
+ this.onAgentPaused();
13918
+ break;
13919
+ case BRIDGE_ON_AGENT_RESUMED:
13920
+ this.onAgentResumed();
13921
+ break;
13922
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13923
+ this.onLanguageChanged(event.data.language);
13924
+ break;
13925
+ case BRIDGE_ON_CALL_HELD:
13926
+ this.onCallHeld();
13927
+ break;
13928
+ case BRIDGE_ON_CALL_RESUMED:
13929
+ this.onCallResumed();
13930
+ break;
13931
+ case BRIDGE_ON_CALL_MUTED:
13932
+ this.onCallMuted();
13933
+ break;
13934
+ case BRIDGE_ON_CALL_UN_MUTED:
13935
+ this.onCallUnMuted();
13936
+ break;
13937
+ case BRIDGE_ON_DTMF:
13938
+ this.onDtmfSent(event.data.tone);
13939
+ break;
13940
+ case BRIDGE_ON_DIRECT_TRANSFER:
13941
+ this.onDirectTransfer(event.data.number);
13942
+ break;
13943
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13944
+ this.onCreateIndirectTransfer(event.data.number);
13945
+ break;
13946
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13947
+ this.onCancelIndirectTransfer();
13948
+ break;
13949
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13950
+ this.onConfirmIndirectTransfer();
13951
+ break;
13952
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
13953
+ this.onIndirectCallMade(event.data.call);
13954
+ break;
13955
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
13956
+ this.onIndirectTransferDone(event.data.call);
13957
+ break;
13958
+ case BRIDGE_ON_START_RECORDING:
13959
+ this.onStartRecording();
13960
+ break;
13961
+ case BRIDGE_ON_STOP_RECORDING:
13962
+ this.onStopRecording();
13963
+ break;
13964
+ default:
13965
+ this.onUnHandledEvent(event);
13966
+ break;
13967
+ }
13968
+ }
13969
+
13970
+ _sendMessage(type , payload = {}) {
13971
+ if (!this.iframe) {
13972
+ console.warn(`Could not send message of type ${type} to the Wazo Softphone, iframe not created yet`);
13973
+ return;
13974
+ }
13975
+
13976
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
13977
+ }
13978
+ }
13979
+
13980
+ var Softphone$1 = new Softphone();
13981
+
13647
13982
  /* global window */
13648
13983
 
13649
13984
  const Wazo = {
@@ -13664,6 +13999,7 @@ const Wazo = {
13664
13999
  loggerFor: IssueReporter$1.loggerFor.bind(IssueReporter$1),
13665
14000
  Features: Features$1,
13666
14001
  Checker,
14002
+ Softphone: Softphone$1,
13667
14003
 
13668
14004
  // Domain
13669
14005
  domain: {
@@ -396,13 +396,9 @@ class IssueReporter {
396
396
 
397
397
  setTimeout(() => {
398
398
  if (isArray) {
399
- payload = payload.map(message => {
400
- message._retry = retry + 1;
401
- return message;
402
- });
403
- } else {
404
- // $FlowFixMe
405
- payload._retry = retry + 1;
399
+ payload = payload.map(message => this._writeRetryCount(message, retry + 1));
400
+ } else if (payload && typeof payload === 'object') {
401
+ payload = this._writeRetryCount(payload, retry + 1);
406
402
  }
407
403
 
408
404
  this._sendDebugToGrafana(payload, retry + 1);
@@ -410,6 +406,15 @@ class IssueReporter {
410
406
  });
411
407
  }
412
408
 
409
+ _writeRetryCount(message , count ) {
410
+ if (message && typeof message === 'object') {
411
+ // $FlowFixMe
412
+ message._retry = count;
413
+ }
414
+
415
+ return message;
416
+ }
417
+
413
418
  _isLevelAbove(level1 , level2 ) {
414
419
  const index1 = LOG_LEVELS.indexOf(level1);
415
420
  const index2 = LOG_LEVELS.indexOf(level2);