@ipcom/asterisk-ari 0.0.26 → 0.0.27

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.
package/dist/esm/index.js CHANGED
@@ -572,7 +572,7 @@ var require_backoff = __commonJS({
572
572
 
573
573
  // src/ari-client/ariClient.ts
574
574
  var import_exponential_backoff = __toESM(require_backoff(), 1);
575
- import { EventEmitter as EventEmitter3 } from "events";
575
+ import { EventEmitter as EventEmitter4 } from "events";
576
576
 
577
577
  // src/ari-client/baseClient.ts
578
578
  import axios from "axios";
@@ -836,16 +836,66 @@ var Bridges = class {
836
836
  };
837
837
 
838
838
  // src/ari-client/resources/channels.ts
839
+ import { EventEmitter } from "events";
839
840
  function toQueryParams2(options) {
840
841
  return new URLSearchParams(
841
842
  Object.entries(options).filter(([, value]) => value !== void 0).map(([key, value]) => [key, value])
842
843
  // Garante que value é string
843
844
  ).toString();
844
845
  }
845
- var Channels = class {
846
+ var Channels = class extends EventEmitter {
846
847
  constructor(client) {
848
+ super();
847
849
  this.client = client;
848
850
  }
851
+ /**
852
+ * Emits a specific channel-related event.
853
+ *
854
+ * This method is called by the WebSocket client to notify about channel-related events.
855
+ * It will emit events like "ChannelDtmfReceived" to registered listeners.
856
+ *
857
+ * @param eventType - The type of WebSocket event to emit.
858
+ * @param data - The data associated with the event.
859
+ */
860
+ emitChannelEvent(eventType, data) {
861
+ if ("channel" in data) {
862
+ const channelId = data.channel?.id;
863
+ if (channelId) {
864
+ this.emit(`${eventType}:${channelId}`, data);
865
+ }
866
+ }
867
+ this.emit(eventType, data);
868
+ }
869
+ /**
870
+ * Registers a listener for a specific channel-related event.
871
+ *
872
+ * @param eventType - The type of WebSocket event to listen for.
873
+ * @param channelId - The ID of the channel to listen for.
874
+ * @param callback - The callback function to execute when the event occurs.
875
+ */
876
+ registerChannelListener(eventType, channelId, callback) {
877
+ this.on(`${eventType}:${channelId}`, callback);
878
+ }
879
+ /**
880
+ * Unregisters a listener for a specific channel-related event.
881
+ *
882
+ * @param eventType - The type of WebSocket event to stop listening for.
883
+ * @param channelId - The ID of the channel to stop listening for.
884
+ * @param callback - The callback function to remove.
885
+ */
886
+ unregisterChannelListener(eventType, channelId, callback) {
887
+ this.off(`${eventType}:${channelId}`, callback);
888
+ }
889
+ /**
890
+ * Checks if a listener is already registered for a specific channel event.
891
+ *
892
+ * @param eventType - The type of event to check.
893
+ * @param channelId - The channel ID associated with the listener.
894
+ * @returns True if a listener is already registered, false otherwise.
895
+ */
896
+ isChannelListenerRegistered(eventType, channelId) {
897
+ return this.listenerCount(`${eventType}:${channelId}`) > 0;
898
+ }
849
899
  /**
850
900
  * Lists all active channels.
851
901
  */
@@ -1182,8 +1232,8 @@ var Endpoints = class {
1182
1232
  };
1183
1233
 
1184
1234
  // src/ari-client/resources/playbacks.ts
1185
- import { EventEmitter } from "events";
1186
- var Playbacks = class extends EventEmitter {
1235
+ import { EventEmitter as EventEmitter2 } from "events";
1236
+ var Playbacks = class extends EventEmitter2 {
1187
1237
  constructor(client) {
1188
1238
  super();
1189
1239
  this.client = client;
@@ -1302,9 +1352,9 @@ var Sounds = class {
1302
1352
  };
1303
1353
 
1304
1354
  // src/ari-client/websocketClient.ts
1305
- import { EventEmitter as EventEmitter2 } from "events";
1355
+ import { EventEmitter as EventEmitter3 } from "events";
1306
1356
  import WebSocket from "ws";
1307
- var WebSocketClient = class extends EventEmitter2 {
1357
+ var WebSocketClient = class extends EventEmitter3 {
1308
1358
  /**
1309
1359
  * Creates a new WebSocketClient instance.
1310
1360
  * @param url - The WebSocket server URL to connect to.
@@ -1443,7 +1493,7 @@ var AriClient = class {
1443
1493
  wsClient = null;
1444
1494
  baseClient;
1445
1495
  isReconnecting = false;
1446
- eventEmitter = new EventEmitter3();
1496
+ eventEmitter = new EventEmitter4();
1447
1497
  channels;
1448
1498
  endpoints;
1449
1499
  applications;
@@ -1545,6 +1595,7 @@ var AriClient = class {
1545
1595
  ChannelDtmfReceived: (data) => {
1546
1596
  if ("channel" in data) {
1547
1597
  console.log("DTMF recebido no canal:", data.channel);
1598
+ this.channels.emitChannelEvent("ChannelDtmfReceived", data);
1548
1599
  }
1549
1600
  this.emitGlobalEvent(data);
1550
1601
  }