@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/esm/index.js
CHANGED
|
@@ -574,9 +574,11 @@ var require_backoff = __commonJS({
|
|
|
574
574
|
var import_exponential_backoff = __toESM(require_backoff(), 1);
|
|
575
575
|
|
|
576
576
|
// src/ari-client/baseClient.ts
|
|
577
|
+
import { EventEmitter } from "events";
|
|
577
578
|
import axios from "axios";
|
|
578
579
|
var BaseClient = class {
|
|
579
580
|
client;
|
|
581
|
+
eventEmitter = new EventEmitter();
|
|
580
582
|
constructor(baseUrl, username, password) {
|
|
581
583
|
this.client = axios.create({
|
|
582
584
|
baseURL: baseUrl,
|
|
@@ -617,6 +619,18 @@ var BaseClient = class {
|
|
|
617
619
|
const response = await this.client.delete(path);
|
|
618
620
|
return response.data;
|
|
619
621
|
}
|
|
622
|
+
/**
|
|
623
|
+
* Escuta eventos do WebSocket.
|
|
624
|
+
*/
|
|
625
|
+
onWebSocketEvent(callback) {
|
|
626
|
+
this.eventEmitter.on("websocketEvent", callback);
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Emite eventos do WebSocket.
|
|
630
|
+
*/
|
|
631
|
+
emitWebSocketEvent(event) {
|
|
632
|
+
this.eventEmitter.emit("websocketEvent", event);
|
|
633
|
+
}
|
|
620
634
|
};
|
|
621
635
|
|
|
622
636
|
// src/ari-client/resources/applications.ts
|
|
@@ -835,7 +849,7 @@ var Bridges = class {
|
|
|
835
849
|
};
|
|
836
850
|
|
|
837
851
|
// src/ari-client/resources/channels.ts
|
|
838
|
-
import { EventEmitter } from "events";
|
|
852
|
+
import { EventEmitter as EventEmitter2 } from "events";
|
|
839
853
|
|
|
840
854
|
// src/ari-client/utils.ts
|
|
841
855
|
function toQueryParams2(options) {
|
|
@@ -846,16 +860,47 @@ function toQueryParams2(options) {
|
|
|
846
860
|
function isChannelEvent(event) {
|
|
847
861
|
return event.channel?.id !== void 0;
|
|
848
862
|
}
|
|
863
|
+
var channelEvents = [
|
|
864
|
+
"ChannelCreated",
|
|
865
|
+
"ChannelDestroyed",
|
|
866
|
+
"ChannelEnteredBridge",
|
|
867
|
+
"ChannelLeftBridge",
|
|
868
|
+
"ChannelStateChange",
|
|
869
|
+
"ChannelDtmfReceived",
|
|
870
|
+
"ChannelDialplan",
|
|
871
|
+
"ChannelCallerId",
|
|
872
|
+
"ChannelUserevent",
|
|
873
|
+
"ChannelHangupRequest",
|
|
874
|
+
"ChannelVarset",
|
|
875
|
+
"ChannelTalkingStarted",
|
|
876
|
+
"ChannelTalkingFinished",
|
|
877
|
+
"ChannelHold",
|
|
878
|
+
"ChannelUnhold"
|
|
879
|
+
];
|
|
849
880
|
|
|
850
881
|
// src/ari-client/resources/channels.ts
|
|
851
|
-
var ChannelInstance = class extends
|
|
882
|
+
var ChannelInstance = class extends EventEmitter2 {
|
|
852
883
|
constructor(client, baseClient, channelId = `channel-${Date.now()}`) {
|
|
853
884
|
super();
|
|
854
885
|
this.client = client;
|
|
855
886
|
this.baseClient = baseClient;
|
|
856
887
|
this.channelId = channelId;
|
|
888
|
+
channelEvents.forEach((eventType) => {
|
|
889
|
+
this.client.onChannelEvent(eventType, (event) => {
|
|
890
|
+
if (this.isChannelEvent(event) && event.channel?.id === this.channelId) {
|
|
891
|
+
this.emit(eventType, event);
|
|
892
|
+
}
|
|
893
|
+
});
|
|
894
|
+
});
|
|
857
895
|
}
|
|
858
896
|
channelData = null;
|
|
897
|
+
/**
|
|
898
|
+
* Verifica se o evento possui a propriedade `channel`.
|
|
899
|
+
* @param event Evento recebido.
|
|
900
|
+
*/
|
|
901
|
+
isChannelEvent(event) {
|
|
902
|
+
return event && typeof event === "object" && "channel" in event;
|
|
903
|
+
}
|
|
859
904
|
/**
|
|
860
905
|
* Getter para o ID do canal.
|
|
861
906
|
*/
|
|
@@ -1033,7 +1078,7 @@ var ChannelInstance = class extends EventEmitter {
|
|
|
1033
1078
|
await this.baseClient.delete(`/channels/${this.channelData.id}/hold`);
|
|
1034
1079
|
}
|
|
1035
1080
|
};
|
|
1036
|
-
var Channels = class extends
|
|
1081
|
+
var Channels = class extends EventEmitter2 {
|
|
1037
1082
|
constructor(baseClient, client) {
|
|
1038
1083
|
super();
|
|
1039
1084
|
this.baseClient = baseClient;
|
|
@@ -1249,17 +1294,28 @@ var Endpoints = class {
|
|
|
1249
1294
|
};
|
|
1250
1295
|
|
|
1251
1296
|
// src/ari-client/resources/playbacks.ts
|
|
1252
|
-
import { EventEmitter as
|
|
1253
|
-
var PlaybackInstance = class extends
|
|
1297
|
+
import { EventEmitter as EventEmitter3 } from "events";
|
|
1298
|
+
var PlaybackInstance = class extends EventEmitter3 {
|
|
1254
1299
|
// Garantimos que o ID esteja disponível
|
|
1255
1300
|
constructor(baseClient, playbackId) {
|
|
1256
1301
|
super();
|
|
1257
1302
|
this.baseClient = baseClient;
|
|
1258
1303
|
this.playbackId = playbackId;
|
|
1259
1304
|
this.id = playbackId || `playback-${Date.now()}`;
|
|
1305
|
+
this.baseClient.onWebSocketEvent((event) => {
|
|
1306
|
+
if (this.isPlaybackEvent(event) && event.playbackId === this.playbackId) {
|
|
1307
|
+
this.emit(event.type, event);
|
|
1308
|
+
}
|
|
1309
|
+
});
|
|
1260
1310
|
}
|
|
1261
1311
|
playbackData = null;
|
|
1262
1312
|
id;
|
|
1313
|
+
/**
|
|
1314
|
+
* Verifica se o evento é relacionado a um playback.
|
|
1315
|
+
*/
|
|
1316
|
+
isPlaybackEvent(event) {
|
|
1317
|
+
return event && typeof event === "object" && "playbackId" in event;
|
|
1318
|
+
}
|
|
1263
1319
|
/**
|
|
1264
1320
|
* Obtém os detalhes do playback.
|
|
1265
1321
|
*/
|
|
@@ -1267,8 +1323,9 @@ var PlaybackInstance = class extends EventEmitter2 {
|
|
|
1267
1323
|
if (!this.playbackId && !this.playbackData) {
|
|
1268
1324
|
throw new Error("Nenhum playback associado a esta inst\xE2ncia.");
|
|
1269
1325
|
}
|
|
1270
|
-
const
|
|
1271
|
-
|
|
1326
|
+
const details = await this.baseClient.get(
|
|
1327
|
+
`/playbacks/${this.id}`
|
|
1328
|
+
);
|
|
1272
1329
|
this.playbackData = details;
|
|
1273
1330
|
return details;
|
|
1274
1331
|
}
|
|
@@ -1279,7 +1336,7 @@ var PlaybackInstance = class extends EventEmitter2 {
|
|
|
1279
1336
|
if (!this.playbackId) {
|
|
1280
1337
|
throw new Error("Nenhum playback associado para controlar.");
|
|
1281
1338
|
}
|
|
1282
|
-
await this.baseClient.post(`/playbacks/${this.
|
|
1339
|
+
await this.baseClient.post(`/playbacks/${this.id}/control`, {
|
|
1283
1340
|
operation
|
|
1284
1341
|
});
|
|
1285
1342
|
}
|
|
@@ -1290,7 +1347,7 @@ var PlaybackInstance = class extends EventEmitter2 {
|
|
|
1290
1347
|
if (!this.playbackId) {
|
|
1291
1348
|
throw new Error("Nenhum playback associado para encerrar.");
|
|
1292
1349
|
}
|
|
1293
|
-
await this.baseClient.post(`/playbacks/${this.
|
|
1350
|
+
await this.baseClient.post(`/playbacks/${this.id}/stop`);
|
|
1294
1351
|
this.emit("PlaybackStopped", this.playbackData);
|
|
1295
1352
|
}
|
|
1296
1353
|
/**
|
|
@@ -1315,10 +1372,25 @@ var PlaybackInstance = class extends EventEmitter2 {
|
|
|
1315
1372
|
return this;
|
|
1316
1373
|
}
|
|
1317
1374
|
};
|
|
1318
|
-
var Playbacks = class extends
|
|
1375
|
+
var Playbacks = class extends EventEmitter3 {
|
|
1319
1376
|
constructor(client) {
|
|
1320
1377
|
super();
|
|
1321
1378
|
this.client = client;
|
|
1379
|
+
this.client.onWebSocketEvent((event) => {
|
|
1380
|
+
if (this.isPlaybackEvent(event)) {
|
|
1381
|
+
const playbackId = event.playbackId;
|
|
1382
|
+
if (playbackId) {
|
|
1383
|
+
this.emit(`${event.type}:${playbackId}`, event);
|
|
1384
|
+
}
|
|
1385
|
+
this.emit(event.type, event);
|
|
1386
|
+
}
|
|
1387
|
+
});
|
|
1388
|
+
}
|
|
1389
|
+
/**
|
|
1390
|
+
* Verifica se o evento é relacionado a um playback.
|
|
1391
|
+
*/
|
|
1392
|
+
isPlaybackEvent(event) {
|
|
1393
|
+
return event && typeof event === "object" && "playbackId" in event;
|
|
1322
1394
|
}
|
|
1323
1395
|
/**
|
|
1324
1396
|
* Inicializa uma nova instância de `PlaybackInstance`.
|
|
@@ -1441,9 +1513,9 @@ var Sounds = class {
|
|
|
1441
1513
|
};
|
|
1442
1514
|
|
|
1443
1515
|
// src/ari-client/websocketClient.ts
|
|
1444
|
-
import { EventEmitter as
|
|
1516
|
+
import { EventEmitter as EventEmitter4 } from "events";
|
|
1445
1517
|
import WebSocket from "ws";
|
|
1446
|
-
var WebSocketClient = class extends
|
|
1518
|
+
var WebSocketClient = class extends EventEmitter4 {
|
|
1447
1519
|
/**
|
|
1448
1520
|
* Creates a new WebSocketClient instance.
|
|
1449
1521
|
* @param url - The WebSocket server URL to connect to.
|
|
@@ -1617,8 +1689,13 @@ var AriClient = class {
|
|
|
1617
1689
|
asterisk;
|
|
1618
1690
|
bridges;
|
|
1619
1691
|
/**
|
|
1620
|
-
* Registra um listener para eventos
|
|
1692
|
+
* Registra um listener para eventos de WebSocket relacionados a canais.
|
|
1693
|
+
* @param eventType Tipo de evento.
|
|
1694
|
+
* @param callback Callback a ser executado quando o evento for recebido.
|
|
1621
1695
|
*/
|
|
1696
|
+
onChannelEvent(eventType, callback) {
|
|
1697
|
+
this.wsClient?.on(eventType, callback);
|
|
1698
|
+
}
|
|
1622
1699
|
/**
|
|
1623
1700
|
* Registra um listener para eventos globais de WebSocket.
|
|
1624
1701
|
* O channel no evento será automaticamente transformado em uma instância de ChannelInstance.
|