@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.
@@ -591,7 +591,7 @@ __export(src_exports, {
591
591
  module.exports = __toCommonJS(src_exports);
592
592
 
593
593
  // src/ari-client/ariClient.ts
594
- var import_events3 = require("events");
594
+ var import_events4 = require("events");
595
595
  var import_exponential_backoff = __toESM(require_backoff(), 1);
596
596
 
597
597
  // src/ari-client/baseClient.ts
@@ -856,16 +856,66 @@ var Bridges = class {
856
856
  };
857
857
 
858
858
  // src/ari-client/resources/channels.ts
859
+ var import_events = require("events");
859
860
  function toQueryParams2(options) {
860
861
  return new URLSearchParams(
861
862
  Object.entries(options).filter(([, value]) => value !== void 0).map(([key, value]) => [key, value])
862
863
  // Garante que value é string
863
864
  ).toString();
864
865
  }
865
- var Channels = class {
866
+ var Channels = class extends import_events.EventEmitter {
866
867
  constructor(client) {
868
+ super();
867
869
  this.client = client;
868
870
  }
871
+ /**
872
+ * Emits a specific channel-related event.
873
+ *
874
+ * This method is called by the WebSocket client to notify about channel-related events.
875
+ * It will emit events like "ChannelDtmfReceived" to registered listeners.
876
+ *
877
+ * @param eventType - The type of WebSocket event to emit.
878
+ * @param data - The data associated with the event.
879
+ */
880
+ emitChannelEvent(eventType, data) {
881
+ if ("channel" in data) {
882
+ const channelId = data.channel?.id;
883
+ if (channelId) {
884
+ this.emit(`${eventType}:${channelId}`, data);
885
+ }
886
+ }
887
+ this.emit(eventType, data);
888
+ }
889
+ /**
890
+ * Registers a listener for a specific channel-related event.
891
+ *
892
+ * @param eventType - The type of WebSocket event to listen for.
893
+ * @param channelId - The ID of the channel to listen for.
894
+ * @param callback - The callback function to execute when the event occurs.
895
+ */
896
+ registerChannelListener(eventType, channelId, callback) {
897
+ this.on(`${eventType}:${channelId}`, callback);
898
+ }
899
+ /**
900
+ * Unregisters a listener for a specific channel-related event.
901
+ *
902
+ * @param eventType - The type of WebSocket event to stop listening for.
903
+ * @param channelId - The ID of the channel to stop listening for.
904
+ * @param callback - The callback function to remove.
905
+ */
906
+ unregisterChannelListener(eventType, channelId, callback) {
907
+ this.off(`${eventType}:${channelId}`, callback);
908
+ }
909
+ /**
910
+ * Checks if a listener is already registered for a specific channel event.
911
+ *
912
+ * @param eventType - The type of event to check.
913
+ * @param channelId - The channel ID associated with the listener.
914
+ * @returns True if a listener is already registered, false otherwise.
915
+ */
916
+ isChannelListenerRegistered(eventType, channelId) {
917
+ return this.listenerCount(`${eventType}:${channelId}`) > 0;
918
+ }
869
919
  /**
870
920
  * Lists all active channels.
871
921
  */
@@ -1202,8 +1252,8 @@ var Endpoints = class {
1202
1252
  };
1203
1253
 
1204
1254
  // src/ari-client/resources/playbacks.ts
1205
- var import_events = require("events");
1206
- var Playbacks = class extends import_events.EventEmitter {
1255
+ var import_events2 = require("events");
1256
+ var Playbacks = class extends import_events2.EventEmitter {
1207
1257
  constructor(client) {
1208
1258
  super();
1209
1259
  this.client = client;
@@ -1322,9 +1372,9 @@ var Sounds = class {
1322
1372
  };
1323
1373
 
1324
1374
  // src/ari-client/websocketClient.ts
1325
- var import_events2 = require("events");
1375
+ var import_events3 = require("events");
1326
1376
  var import_ws = __toESM(require("ws"), 1);
1327
- var WebSocketClient = class extends import_events2.EventEmitter {
1377
+ var WebSocketClient = class extends import_events3.EventEmitter {
1328
1378
  /**
1329
1379
  * Creates a new WebSocketClient instance.
1330
1380
  * @param url - The WebSocket server URL to connect to.
@@ -1463,7 +1513,7 @@ var AriClient = class {
1463
1513
  wsClient = null;
1464
1514
  baseClient;
1465
1515
  isReconnecting = false;
1466
- eventEmitter = new import_events3.EventEmitter();
1516
+ eventEmitter = new import_events4.EventEmitter();
1467
1517
  channels;
1468
1518
  endpoints;
1469
1519
  applications;
@@ -1565,6 +1615,7 @@ var AriClient = class {
1565
1615
  ChannelDtmfReceived: (data) => {
1566
1616
  if ("channel" in data) {
1567
1617
  console.log("DTMF recebido no canal:", data.channel);
1618
+ this.channels.emitChannelEvent("ChannelDtmfReceived", data);
1568
1619
  }
1569
1620
  this.emitGlobalEvent(data);
1570
1621
  }