@ipcom/asterisk-ari 0.0.49 → 0.0.51
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/cjs/index.cjs +90 -13
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.js +90 -13
- package/dist/esm/index.js.map +3 -3
- package/dist/types/ari-client/ariClient.d.ts +6 -1
- package/dist/types/ari-client/ariClient.d.ts.map +1 -1
- package/dist/types/ari-client/baseClient.d.ts +10 -0
- package/dist/types/ari-client/baseClient.d.ts.map +1 -1
- package/dist/types/ari-client/resources/channels.d.ts +5 -0
- package/dist/types/ari-client/resources/channels.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts +8 -0
- package/dist/types/ari-client/resources/playbacks.d.ts.map +1 -1
- package/dist/types/ari-client/utils.d.ts +1 -0
- package/dist/types/ari-client/utils.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -596,9 +596,11 @@ module.exports = __toCommonJS(src_exports);
|
|
|
596
596
|
var import_exponential_backoff = __toESM(require_backoff(), 1);
|
|
597
597
|
|
|
598
598
|
// src/ari-client/baseClient.ts
|
|
599
|
+
var import_events = require("events");
|
|
599
600
|
var import_axios = __toESM(require("axios"), 1);
|
|
600
601
|
var BaseClient = class {
|
|
601
602
|
client;
|
|
603
|
+
eventEmitter = new import_events.EventEmitter();
|
|
602
604
|
constructor(baseUrl, username, password) {
|
|
603
605
|
this.client = import_axios.default.create({
|
|
604
606
|
baseURL: baseUrl,
|
|
@@ -639,6 +641,18 @@ var BaseClient = class {
|
|
|
639
641
|
const response = await this.client.delete(path);
|
|
640
642
|
return response.data;
|
|
641
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* Escuta eventos do WebSocket.
|
|
646
|
+
*/
|
|
647
|
+
onWebSocketEvent(callback) {
|
|
648
|
+
this.eventEmitter.on("websocketEvent", callback);
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Emite eventos do WebSocket.
|
|
652
|
+
*/
|
|
653
|
+
emitWebSocketEvent(event) {
|
|
654
|
+
this.eventEmitter.emit("websocketEvent", event);
|
|
655
|
+
}
|
|
642
656
|
};
|
|
643
657
|
|
|
644
658
|
// src/ari-client/resources/applications.ts
|
|
@@ -857,7 +871,7 @@ var Bridges = class {
|
|
|
857
871
|
};
|
|
858
872
|
|
|
859
873
|
// src/ari-client/resources/channels.ts
|
|
860
|
-
var
|
|
874
|
+
var import_events2 = require("events");
|
|
861
875
|
|
|
862
876
|
// src/ari-client/utils.ts
|
|
863
877
|
function toQueryParams2(options) {
|
|
@@ -868,16 +882,47 @@ function toQueryParams2(options) {
|
|
|
868
882
|
function isChannelEvent(event) {
|
|
869
883
|
return event.channel?.id !== void 0;
|
|
870
884
|
}
|
|
885
|
+
var channelEvents = [
|
|
886
|
+
"ChannelCreated",
|
|
887
|
+
"ChannelDestroyed",
|
|
888
|
+
"ChannelEnteredBridge",
|
|
889
|
+
"ChannelLeftBridge",
|
|
890
|
+
"ChannelStateChange",
|
|
891
|
+
"ChannelDtmfReceived",
|
|
892
|
+
"ChannelDialplan",
|
|
893
|
+
"ChannelCallerId",
|
|
894
|
+
"ChannelUserevent",
|
|
895
|
+
"ChannelHangupRequest",
|
|
896
|
+
"ChannelVarset",
|
|
897
|
+
"ChannelTalkingStarted",
|
|
898
|
+
"ChannelTalkingFinished",
|
|
899
|
+
"ChannelHold",
|
|
900
|
+
"ChannelUnhold"
|
|
901
|
+
];
|
|
871
902
|
|
|
872
903
|
// src/ari-client/resources/channels.ts
|
|
873
|
-
var ChannelInstance = class extends
|
|
904
|
+
var ChannelInstance = class extends import_events2.EventEmitter {
|
|
874
905
|
constructor(client, baseClient, channelId = `channel-${Date.now()}`) {
|
|
875
906
|
super();
|
|
876
907
|
this.client = client;
|
|
877
908
|
this.baseClient = baseClient;
|
|
878
909
|
this.channelId = channelId;
|
|
910
|
+
channelEvents.forEach((eventType) => {
|
|
911
|
+
this.client.onChannelEvent(eventType, (event) => {
|
|
912
|
+
if (this.isChannelEvent(event) && event.channel?.id === this.channelId) {
|
|
913
|
+
this.emit(eventType, event);
|
|
914
|
+
}
|
|
915
|
+
});
|
|
916
|
+
});
|
|
879
917
|
}
|
|
880
918
|
channelData = null;
|
|
919
|
+
/**
|
|
920
|
+
* Verifica se o evento possui a propriedade `channel`.
|
|
921
|
+
* @param event Evento recebido.
|
|
922
|
+
*/
|
|
923
|
+
isChannelEvent(event) {
|
|
924
|
+
return event && typeof event === "object" && "channel" in event;
|
|
925
|
+
}
|
|
881
926
|
/**
|
|
882
927
|
* Getter para o ID do canal.
|
|
883
928
|
*/
|
|
@@ -1055,7 +1100,7 @@ var ChannelInstance = class extends import_events.EventEmitter {
|
|
|
1055
1100
|
await this.baseClient.delete(`/channels/${this.channelData.id}/hold`);
|
|
1056
1101
|
}
|
|
1057
1102
|
};
|
|
1058
|
-
var Channels = class extends
|
|
1103
|
+
var Channels = class extends import_events2.EventEmitter {
|
|
1059
1104
|
constructor(baseClient, client) {
|
|
1060
1105
|
super();
|
|
1061
1106
|
this.baseClient = baseClient;
|
|
@@ -1271,17 +1316,28 @@ var Endpoints = class {
|
|
|
1271
1316
|
};
|
|
1272
1317
|
|
|
1273
1318
|
// src/ari-client/resources/playbacks.ts
|
|
1274
|
-
var
|
|
1275
|
-
var PlaybackInstance = class extends
|
|
1319
|
+
var import_events3 = require("events");
|
|
1320
|
+
var PlaybackInstance = class extends import_events3.EventEmitter {
|
|
1276
1321
|
// Garantimos que o ID esteja disponível
|
|
1277
1322
|
constructor(baseClient, playbackId) {
|
|
1278
1323
|
super();
|
|
1279
1324
|
this.baseClient = baseClient;
|
|
1280
1325
|
this.playbackId = playbackId;
|
|
1281
1326
|
this.id = playbackId || `playback-${Date.now()}`;
|
|
1327
|
+
this.baseClient.onWebSocketEvent((event) => {
|
|
1328
|
+
if (this.isPlaybackEvent(event) && event.playbackId === this.playbackId) {
|
|
1329
|
+
this.emit(event.type, event);
|
|
1330
|
+
}
|
|
1331
|
+
});
|
|
1282
1332
|
}
|
|
1283
1333
|
playbackData = null;
|
|
1284
1334
|
id;
|
|
1335
|
+
/**
|
|
1336
|
+
* Verifica se o evento é relacionado a um playback.
|
|
1337
|
+
*/
|
|
1338
|
+
isPlaybackEvent(event) {
|
|
1339
|
+
return event && typeof event === "object" && "playbackId" in event;
|
|
1340
|
+
}
|
|
1285
1341
|
/**
|
|
1286
1342
|
* Obtém os detalhes do playback.
|
|
1287
1343
|
*/
|
|
@@ -1289,8 +1345,9 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
|
|
|
1289
1345
|
if (!this.playbackId && !this.playbackData) {
|
|
1290
1346
|
throw new Error("Nenhum playback associado a esta inst\xE2ncia.");
|
|
1291
1347
|
}
|
|
1292
|
-
const
|
|
1293
|
-
|
|
1348
|
+
const details = await this.baseClient.get(
|
|
1349
|
+
`/playbacks/${this.id}`
|
|
1350
|
+
);
|
|
1294
1351
|
this.playbackData = details;
|
|
1295
1352
|
return details;
|
|
1296
1353
|
}
|
|
@@ -1301,7 +1358,7 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
|
|
|
1301
1358
|
if (!this.playbackId) {
|
|
1302
1359
|
throw new Error("Nenhum playback associado para controlar.");
|
|
1303
1360
|
}
|
|
1304
|
-
await this.baseClient.post(`/playbacks/${this.
|
|
1361
|
+
await this.baseClient.post(`/playbacks/${this.id}/control`, {
|
|
1305
1362
|
operation
|
|
1306
1363
|
});
|
|
1307
1364
|
}
|
|
@@ -1312,7 +1369,7 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
|
|
|
1312
1369
|
if (!this.playbackId) {
|
|
1313
1370
|
throw new Error("Nenhum playback associado para encerrar.");
|
|
1314
1371
|
}
|
|
1315
|
-
await this.baseClient.post(`/playbacks/${this.
|
|
1372
|
+
await this.baseClient.post(`/playbacks/${this.id}/stop`);
|
|
1316
1373
|
this.emit("PlaybackStopped", this.playbackData);
|
|
1317
1374
|
}
|
|
1318
1375
|
/**
|
|
@@ -1337,10 +1394,25 @@ var PlaybackInstance = class extends import_events2.EventEmitter {
|
|
|
1337
1394
|
return this;
|
|
1338
1395
|
}
|
|
1339
1396
|
};
|
|
1340
|
-
var Playbacks = class extends
|
|
1397
|
+
var Playbacks = class extends import_events3.EventEmitter {
|
|
1341
1398
|
constructor(client) {
|
|
1342
1399
|
super();
|
|
1343
1400
|
this.client = client;
|
|
1401
|
+
this.client.onWebSocketEvent((event) => {
|
|
1402
|
+
if (this.isPlaybackEvent(event)) {
|
|
1403
|
+
const playbackId = event.playbackId;
|
|
1404
|
+
if (playbackId) {
|
|
1405
|
+
this.emit(`${event.type}:${playbackId}`, event);
|
|
1406
|
+
}
|
|
1407
|
+
this.emit(event.type, event);
|
|
1408
|
+
}
|
|
1409
|
+
});
|
|
1410
|
+
}
|
|
1411
|
+
/**
|
|
1412
|
+
* Verifica se o evento é relacionado a um playback.
|
|
1413
|
+
*/
|
|
1414
|
+
isPlaybackEvent(event) {
|
|
1415
|
+
return event && typeof event === "object" && "playbackId" in event;
|
|
1344
1416
|
}
|
|
1345
1417
|
/**
|
|
1346
1418
|
* Inicializa uma nova instância de `PlaybackInstance`.
|
|
@@ -1463,9 +1535,9 @@ var Sounds = class {
|
|
|
1463
1535
|
};
|
|
1464
1536
|
|
|
1465
1537
|
// src/ari-client/websocketClient.ts
|
|
1466
|
-
var
|
|
1538
|
+
var import_events4 = require("events");
|
|
1467
1539
|
var import_ws = __toESM(require("ws"), 1);
|
|
1468
|
-
var WebSocketClient = class extends
|
|
1540
|
+
var WebSocketClient = class extends import_events4.EventEmitter {
|
|
1469
1541
|
/**
|
|
1470
1542
|
* Creates a new WebSocketClient instance.
|
|
1471
1543
|
* @param url - The WebSocket server URL to connect to.
|
|
@@ -1639,8 +1711,13 @@ var AriClient = class {
|
|
|
1639
1711
|
asterisk;
|
|
1640
1712
|
bridges;
|
|
1641
1713
|
/**
|
|
1642
|
-
* Registra um listener para eventos
|
|
1714
|
+
* Registra um listener para eventos de WebSocket relacionados a canais.
|
|
1715
|
+
* @param eventType Tipo de evento.
|
|
1716
|
+
* @param callback Callback a ser executado quando o evento for recebido.
|
|
1643
1717
|
*/
|
|
1718
|
+
onChannelEvent(eventType, callback) {
|
|
1719
|
+
this.wsClient?.on(eventType, callback);
|
|
1720
|
+
}
|
|
1644
1721
|
/**
|
|
1645
1722
|
* Registra um listener para eventos globais de WebSocket.
|
|
1646
1723
|
* O channel no evento será automaticamente transformado em uma instância de ChannelInstance.
|