@per_moeller/asterisk-ari 1.0.3 → 1.0.5
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/client.d.ts +360 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +374 -29
- package/dist/client.js.map +1 -1
- package/dist/connection.d.ts +132 -12
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +121 -10
- package/dist/connection.js.map +1 -1
- package/dist/events/emitter.d.ts +213 -21
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +163 -17
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/types.d.ts +386 -3
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +5 -0
- package/dist/events/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/bridge.d.ts +26 -3
- package/dist/models/bridge.d.ts.map +1 -1
- package/dist/models/bridge.js.map +1 -1
- package/dist/models/channel.d.ts +364 -35
- package/dist/models/channel.d.ts.map +1 -1
- package/dist/models/channel.js +348 -34
- package/dist/models/channel.js.map +1 -1
- package/dist/models/index.d.ts +4 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/playback.d.ts +23 -3
- package/dist/models/playback.d.ts.map +1 -1
- package/dist/models/playback.js.map +1 -1
- package/dist/models/recording.d.ts +23 -3
- package/dist/models/recording.d.ts.map +1 -1
- package/dist/models/recording.js.map +1 -1
- package/dist/pool.d.ts +152 -11
- package/dist/pool.d.ts.map +1 -1
- package/dist/pool.js +152 -11
- package/dist/pool.js.map +1 -1
- package/dist/queue.d.ts +130 -16
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +123 -16
- package/dist/queue.js.map +1 -1
- package/dist/types/api.d.ts +655 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +5 -0
- package/dist/types/api.js.map +1 -1
- package/dist/version.d.ts +163 -26
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +143 -22
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/dist/models/channel.js
CHANGED
|
@@ -1,24 +1,85 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Channel model and instance class
|
|
3
|
+
*
|
|
4
|
+
* This module provides the `ChannelInstance` class which wraps channel data
|
|
5
|
+
* and provides event handling and convenience methods for channel operations.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
3
8
|
*/
|
|
4
9
|
/**
|
|
5
|
-
* Channel instance with bound operations and event handling
|
|
10
|
+
* Channel instance with bound operations and event handling.
|
|
11
|
+
*
|
|
12
|
+
* A `ChannelInstance` wraps a channel and provides:
|
|
13
|
+
* - Event listeners scoped to this specific channel
|
|
14
|
+
* - Convenience methods that automatically use this channel's ID
|
|
15
|
+
* - Automatic data updates when events are received
|
|
16
|
+
*
|
|
17
|
+
* The instance implements the `Channel` interface, so you can access
|
|
18
|
+
* all channel properties directly.
|
|
19
|
+
*
|
|
20
|
+
* @remarks
|
|
21
|
+
* Create instances using `client.Channel()` rather than instantiating directly.
|
|
22
|
+
* This ensures proper registration for event routing.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Create from an event
|
|
27
|
+
* client.on('StasisStart', (event, channelData) => {
|
|
28
|
+
* const channel = client.Channel(channelData.id, channelData);
|
|
29
|
+
*
|
|
30
|
+
* // Listen for events on this specific channel
|
|
31
|
+
* channel.on('ChannelDtmfReceived', (event) => {
|
|
32
|
+
* console.log(`Received: ${event.digit}`);
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* channel.on('StasisEnd', () => {
|
|
36
|
+
* console.log('Call ended');
|
|
37
|
+
* channel.removeAllListeners();
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Perform operations
|
|
41
|
+
* await channel.answer();
|
|
42
|
+
* await channel.play({ media: 'sound:hello-world' });
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
6
45
|
*/
|
|
7
46
|
export class ChannelInstance {
|
|
8
|
-
//
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Channel Properties (from Channel interface)
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/** Unique identifier for this channel */
|
|
9
51
|
id;
|
|
52
|
+
/** Channel name in Asterisk format (e.g., "PJSIP/endpoint-00000001") */
|
|
10
53
|
name = '';
|
|
54
|
+
/** Current state of the channel */
|
|
11
55
|
state = 'Down';
|
|
56
|
+
/** Caller ID information for the calling party */
|
|
12
57
|
caller = { name: '', number: '' };
|
|
58
|
+
/** Caller ID information for the connected party */
|
|
13
59
|
connected = { name: '', number: '' };
|
|
60
|
+
/** Account code for billing purposes */
|
|
14
61
|
accountcode = '';
|
|
62
|
+
/** Current position in the dialplan */
|
|
15
63
|
dialplan = { context: '', exten: '', priority: 1 };
|
|
64
|
+
/** ISO 8601 timestamp when the channel was created */
|
|
16
65
|
creationtime = '';
|
|
66
|
+
/** Language code for the channel */
|
|
17
67
|
language = 'en';
|
|
68
|
+
/** Channel variables set on this channel */
|
|
18
69
|
channelvars;
|
|
70
|
+
/** Protocol-specific identifier (Asterisk 20+) */
|
|
19
71
|
protocol_id;
|
|
20
72
|
client;
|
|
21
73
|
listeners = new Map();
|
|
74
|
+
/**
|
|
75
|
+
* Create a new channel instance.
|
|
76
|
+
*
|
|
77
|
+
* @param client - The ARI client this instance belongs to
|
|
78
|
+
* @param id - Channel ID (auto-generated UUID if not provided)
|
|
79
|
+
* @param data - Initial channel data from an event or API response
|
|
80
|
+
*
|
|
81
|
+
* @internal - Use `client.Channel()` instead
|
|
82
|
+
*/
|
|
22
83
|
constructor(client, id, data) {
|
|
23
84
|
this.client = client;
|
|
24
85
|
this.id = id || crypto.randomUUID();
|
|
@@ -29,7 +90,19 @@ export class ChannelInstance {
|
|
|
29
90
|
this.client._registerChannelInstance(this.id, this);
|
|
30
91
|
}
|
|
31
92
|
/**
|
|
32
|
-
* Update channel data from an event or API response
|
|
93
|
+
* Update channel data from an event or API response.
|
|
94
|
+
*
|
|
95
|
+
* This is called automatically when channel events are received.
|
|
96
|
+
* You can also call it manually to update the instance with fresh data.
|
|
97
|
+
*
|
|
98
|
+
* @param data - Partial channel data to merge
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Manually refresh channel data
|
|
103
|
+
* const freshData = await client.channels.get(channel.id);
|
|
104
|
+
* channel.updateData(freshData);
|
|
105
|
+
* ```
|
|
33
106
|
*/
|
|
34
107
|
updateData(data) {
|
|
35
108
|
if (data.id !== undefined)
|
|
@@ -55,8 +128,29 @@ export class ChannelInstance {
|
|
|
55
128
|
if (data.protocol_id !== undefined)
|
|
56
129
|
this.protocol_id = data.protocol_id;
|
|
57
130
|
}
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// Event Handling
|
|
133
|
+
// ============================================================================
|
|
58
134
|
/**
|
|
59
|
-
* Add an event listener
|
|
135
|
+
* Add an event listener for this channel.
|
|
136
|
+
*
|
|
137
|
+
* Only events for this specific channel will trigger the listener.
|
|
138
|
+
* The listener receives the event and this channel instance.
|
|
139
|
+
*
|
|
140
|
+
* @param event - Event type to listen for
|
|
141
|
+
* @param listener - Callback function
|
|
142
|
+
* @returns This instance for chaining
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* channel.on('ChannelDtmfReceived', (event, channel) => {
|
|
147
|
+
* console.log(`DTMF ${event.digit} on ${channel.name}`);
|
|
148
|
+
* });
|
|
149
|
+
*
|
|
150
|
+
* channel.on('ChannelStateChange', (event, channel) => {
|
|
151
|
+
* console.log(`State changed to ${channel.state}`);
|
|
152
|
+
* });
|
|
153
|
+
* ```
|
|
60
154
|
*/
|
|
61
155
|
on(event, listener) {
|
|
62
156
|
let eventListeners = this.listeners.get(event);
|
|
@@ -68,7 +162,20 @@ export class ChannelInstance {
|
|
|
68
162
|
return this;
|
|
69
163
|
}
|
|
70
164
|
/**
|
|
71
|
-
* Add a one-time event listener
|
|
165
|
+
* Add a one-time event listener for this channel.
|
|
166
|
+
*
|
|
167
|
+
* The listener is automatically removed after being invoked once.
|
|
168
|
+
*
|
|
169
|
+
* @param event - Event type to listen for
|
|
170
|
+
* @param listener - Callback function
|
|
171
|
+
* @returns This instance for chaining
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* channel.once('ChannelDtmfReceived', (event) => {
|
|
176
|
+
* console.log(`First DTMF: ${event.digit}`);
|
|
177
|
+
* });
|
|
178
|
+
* ```
|
|
72
179
|
*/
|
|
73
180
|
once(event, listener) {
|
|
74
181
|
const wrappedListener = ((...args) => {
|
|
@@ -78,7 +185,11 @@ export class ChannelInstance {
|
|
|
78
185
|
return this.on(event, wrappedListener);
|
|
79
186
|
}
|
|
80
187
|
/**
|
|
81
|
-
* Remove an event listener
|
|
188
|
+
* Remove an event listener.
|
|
189
|
+
*
|
|
190
|
+
* @param event - Event type the listener was registered for
|
|
191
|
+
* @param listener - The listener function to remove
|
|
192
|
+
* @returns This instance for chaining
|
|
82
193
|
*/
|
|
83
194
|
off(event, listener) {
|
|
84
195
|
const eventListeners = this.listeners.get(event);
|
|
@@ -88,8 +199,12 @@ export class ChannelInstance {
|
|
|
88
199
|
return this;
|
|
89
200
|
}
|
|
90
201
|
/**
|
|
91
|
-
* Emit an event to listeners
|
|
92
|
-
*
|
|
202
|
+
* Emit an event to listeners.
|
|
203
|
+
*
|
|
204
|
+
* @param event - Event type to emit
|
|
205
|
+
* @param data - Event data
|
|
206
|
+
*
|
|
207
|
+
* @internal - Called by the client when routing events
|
|
93
208
|
*/
|
|
94
209
|
_emit(event, data) {
|
|
95
210
|
const eventListeners = this.listeners.get(event);
|
|
@@ -105,7 +220,18 @@ export class ChannelInstance {
|
|
|
105
220
|
}
|
|
106
221
|
}
|
|
107
222
|
/**
|
|
108
|
-
* Remove all event listeners and unregister from client
|
|
223
|
+
* Remove all event listeners and unregister from the client.
|
|
224
|
+
*
|
|
225
|
+
* Call this when you're done with the channel to clean up resources.
|
|
226
|
+
*
|
|
227
|
+
* @returns This instance for chaining
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* channel.on('StasisEnd', () => {
|
|
232
|
+
* channel.removeAllListeners();
|
|
233
|
+
* });
|
|
234
|
+
* ```
|
|
109
235
|
*/
|
|
110
236
|
removeAllListeners() {
|
|
111
237
|
this.listeners.clear();
|
|
@@ -113,113 +239,231 @@ export class ChannelInstance {
|
|
|
113
239
|
return this;
|
|
114
240
|
}
|
|
115
241
|
// ============================================================================
|
|
116
|
-
//
|
|
242
|
+
// Channel Operations
|
|
117
243
|
// ============================================================================
|
|
118
244
|
/**
|
|
119
|
-
* Originate a call to this channel
|
|
245
|
+
* Originate a call to this channel.
|
|
246
|
+
*
|
|
247
|
+
* @param params - Originate parameters (channelId is automatically set)
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* const channel = client.Channel();
|
|
252
|
+
* await channel.originate({
|
|
253
|
+
* endpoint: 'PJSIP/1000',
|
|
254
|
+
* app: 'my-app'
|
|
255
|
+
* });
|
|
256
|
+
* ```
|
|
120
257
|
*/
|
|
121
258
|
async originate(params) {
|
|
122
259
|
const result = await this.client.channels.originateWithId(this.id, params);
|
|
123
260
|
this.updateData(result);
|
|
124
261
|
}
|
|
125
262
|
/**
|
|
126
|
-
* Answer this channel
|
|
263
|
+
* Answer this channel.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* client.on('StasisStart', async (event, channel) => {
|
|
268
|
+
* await channel.answer();
|
|
269
|
+
* });
|
|
270
|
+
* ```
|
|
127
271
|
*/
|
|
128
272
|
async answer() {
|
|
129
273
|
return this.client.channels.answer(this.id);
|
|
130
274
|
}
|
|
131
275
|
/**
|
|
132
|
-
*
|
|
276
|
+
* Hang up this channel.
|
|
277
|
+
*
|
|
278
|
+
* @param params - Optional hangup parameters with reason code
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* // Normal hangup
|
|
283
|
+
* await channel.hangup();
|
|
284
|
+
*
|
|
285
|
+
* // Hangup with reason
|
|
286
|
+
* await channel.hangup({ reason: 'busy' });
|
|
287
|
+
* ```
|
|
133
288
|
*/
|
|
134
289
|
async hangup(params) {
|
|
135
290
|
return this.client.channels.hangup(this.id, params);
|
|
136
291
|
}
|
|
137
292
|
/**
|
|
138
|
-
* Continue this channel in the dialplan
|
|
293
|
+
* Continue this channel in the dialplan.
|
|
294
|
+
*
|
|
295
|
+
* @param params - Optional dialplan location
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```typescript
|
|
299
|
+
* await channel.continueInDialplan({
|
|
300
|
+
* context: 'default',
|
|
301
|
+
* extension: '200',
|
|
302
|
+
* priority: 1
|
|
303
|
+
* });
|
|
304
|
+
* ```
|
|
139
305
|
*/
|
|
140
306
|
async continueInDialplan(params) {
|
|
141
307
|
return this.client.channels.continueInDialplan(this.id, params);
|
|
142
308
|
}
|
|
143
309
|
/**
|
|
144
|
-
* Move this channel to a different Stasis application
|
|
310
|
+
* Move this channel to a different Stasis application.
|
|
311
|
+
*
|
|
312
|
+
* @param params - Target application and arguments
|
|
313
|
+
*
|
|
314
|
+
* @example
|
|
315
|
+
* ```typescript
|
|
316
|
+
* await channel.move({
|
|
317
|
+
* app: 'other-app',
|
|
318
|
+
* appArgs: 'some,args'
|
|
319
|
+
* });
|
|
320
|
+
* ```
|
|
145
321
|
*/
|
|
146
322
|
async move(params) {
|
|
147
323
|
return this.client.channels.move(this.id, params);
|
|
148
324
|
}
|
|
149
325
|
/**
|
|
150
|
-
* Redirect this channel to a different
|
|
326
|
+
* Redirect this channel to a different endpoint.
|
|
327
|
+
*
|
|
328
|
+
* @param endpoint - Target endpoint
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* await channel.redirect('PJSIP/2000');
|
|
333
|
+
* ```
|
|
151
334
|
*/
|
|
152
335
|
async redirect(endpoint) {
|
|
153
336
|
return this.client.channels.redirect(this.id, endpoint);
|
|
154
337
|
}
|
|
155
338
|
/**
|
|
156
|
-
* Indicate ringing to this channel
|
|
339
|
+
* Indicate ringing to this channel.
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ```typescript
|
|
343
|
+
* await channel.ring();
|
|
344
|
+
* // ... do something ...
|
|
345
|
+
* await channel.ringStop();
|
|
346
|
+
* await channel.answer();
|
|
347
|
+
* ```
|
|
157
348
|
*/
|
|
158
349
|
async ring() {
|
|
159
350
|
return this.client.channels.ring(this.id);
|
|
160
351
|
}
|
|
161
352
|
/**
|
|
162
|
-
* Stop indicating ringing to this channel
|
|
353
|
+
* Stop indicating ringing to this channel.
|
|
163
354
|
*/
|
|
164
355
|
async ringStop() {
|
|
165
356
|
return this.client.channels.ringStop(this.id);
|
|
166
357
|
}
|
|
167
358
|
/**
|
|
168
|
-
* Send DTMF to this channel
|
|
359
|
+
* Send DTMF tones to this channel.
|
|
360
|
+
*
|
|
361
|
+
* @param params - DTMF digits and timing parameters
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```typescript
|
|
365
|
+
* await channel.sendDTMF({
|
|
366
|
+
* dtmf: '1234#',
|
|
367
|
+
* between: 100
|
|
368
|
+
* });
|
|
369
|
+
* ```
|
|
169
370
|
*/
|
|
170
371
|
async sendDTMF(params) {
|
|
171
372
|
return this.client.channels.sendDTMF(this.id, params);
|
|
172
373
|
}
|
|
173
374
|
/**
|
|
174
|
-
* Mute this channel
|
|
375
|
+
* Mute this channel.
|
|
376
|
+
*
|
|
377
|
+
* @param direction - Direction to mute ('both', 'in', or 'out')
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```typescript
|
|
381
|
+
* await channel.mute('both');
|
|
382
|
+
* // ... later ...
|
|
383
|
+
* await channel.unmute('both');
|
|
384
|
+
* ```
|
|
175
385
|
*/
|
|
176
386
|
async mute(direction = 'both') {
|
|
177
387
|
return this.client.channels.mute(this.id, direction);
|
|
178
388
|
}
|
|
179
389
|
/**
|
|
180
|
-
* Unmute this channel
|
|
390
|
+
* Unmute this channel.
|
|
391
|
+
*
|
|
392
|
+
* @param direction - Direction to unmute ('both', 'in', or 'out')
|
|
181
393
|
*/
|
|
182
394
|
async unmute(direction = 'both') {
|
|
183
395
|
return this.client.channels.unmute(this.id, direction);
|
|
184
396
|
}
|
|
185
397
|
/**
|
|
186
|
-
* Put this channel on hold
|
|
398
|
+
* Put this channel on hold.
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* ```typescript
|
|
402
|
+
* await channel.hold();
|
|
403
|
+
* // ... later ...
|
|
404
|
+
* await channel.unhold();
|
|
405
|
+
* ```
|
|
187
406
|
*/
|
|
188
407
|
async hold() {
|
|
189
408
|
return this.client.channels.hold(this.id);
|
|
190
409
|
}
|
|
191
410
|
/**
|
|
192
|
-
* Remove this channel from hold
|
|
411
|
+
* Remove this channel from hold.
|
|
193
412
|
*/
|
|
194
413
|
async unhold() {
|
|
195
414
|
return this.client.channels.unhold(this.id);
|
|
196
415
|
}
|
|
197
416
|
/**
|
|
198
|
-
* Start music on hold for this channel
|
|
417
|
+
* Start music on hold for this channel.
|
|
418
|
+
*
|
|
419
|
+
* @param mohClass - Optional music on hold class
|
|
420
|
+
*
|
|
421
|
+
* @example
|
|
422
|
+
* ```typescript
|
|
423
|
+
* await channel.startMoh('jazz');
|
|
424
|
+
* // ... later ...
|
|
425
|
+
* await channel.stopMoh();
|
|
426
|
+
* ```
|
|
199
427
|
*/
|
|
200
428
|
async startMoh(mohClass) {
|
|
201
429
|
return this.client.channels.startMoh(this.id, mohClass);
|
|
202
430
|
}
|
|
203
431
|
/**
|
|
204
|
-
* Stop music on hold for this channel
|
|
432
|
+
* Stop music on hold for this channel.
|
|
205
433
|
*/
|
|
206
434
|
async stopMoh() {
|
|
207
435
|
return this.client.channels.stopMoh(this.id);
|
|
208
436
|
}
|
|
209
437
|
/**
|
|
210
|
-
* Start silence on this channel
|
|
438
|
+
* Start silence on this channel.
|
|
211
439
|
*/
|
|
212
440
|
async startSilence() {
|
|
213
441
|
return this.client.channels.startSilence(this.id);
|
|
214
442
|
}
|
|
215
443
|
/**
|
|
216
|
-
* Stop silence on this channel
|
|
444
|
+
* Stop silence on this channel.
|
|
217
445
|
*/
|
|
218
446
|
async stopSilence() {
|
|
219
447
|
return this.client.channels.stopSilence(this.id);
|
|
220
448
|
}
|
|
221
449
|
/**
|
|
222
|
-
* Play media to this channel
|
|
450
|
+
* Play media to this channel.
|
|
451
|
+
*
|
|
452
|
+
* Returns a PlaybackInstance for controlling and monitoring the playback.
|
|
453
|
+
*
|
|
454
|
+
* @param params - Play parameters (media URI, language, etc.)
|
|
455
|
+
* @returns Playback instance
|
|
456
|
+
*
|
|
457
|
+
* @example
|
|
458
|
+
* ```typescript
|
|
459
|
+
* const playback = await channel.play({
|
|
460
|
+
* media: 'sound:hello-world'
|
|
461
|
+
* });
|
|
462
|
+
*
|
|
463
|
+
* playback.on('PlaybackFinished', () => {
|
|
464
|
+
* console.log('Playback complete');
|
|
465
|
+
* });
|
|
466
|
+
* ```
|
|
223
467
|
*/
|
|
224
468
|
async play(params) {
|
|
225
469
|
// Create playback instance first to register for events
|
|
@@ -231,7 +475,26 @@ export class ChannelInstance {
|
|
|
231
475
|
return playback;
|
|
232
476
|
}
|
|
233
477
|
/**
|
|
234
|
-
* Record audio from this channel
|
|
478
|
+
* Record audio from this channel.
|
|
479
|
+
*
|
|
480
|
+
* Returns a LiveRecordingInstance for controlling and monitoring the recording.
|
|
481
|
+
*
|
|
482
|
+
* @param params - Record parameters (name, format, etc.)
|
|
483
|
+
* @returns LiveRecording instance
|
|
484
|
+
*
|
|
485
|
+
* @example
|
|
486
|
+
* ```typescript
|
|
487
|
+
* const recording = await channel.record({
|
|
488
|
+
* name: 'voicemail-123',
|
|
489
|
+
* format: 'wav',
|
|
490
|
+
* beep: true,
|
|
491
|
+
* terminateOn: '#'
|
|
492
|
+
* });
|
|
493
|
+
*
|
|
494
|
+
* recording.on('RecordingFinished', () => {
|
|
495
|
+
* console.log('Recording saved');
|
|
496
|
+
* });
|
|
497
|
+
* ```
|
|
235
498
|
*/
|
|
236
499
|
async record(params) {
|
|
237
500
|
// Create recording instance first to register for events
|
|
@@ -240,19 +503,48 @@ export class ChannelInstance {
|
|
|
240
503
|
return recording;
|
|
241
504
|
}
|
|
242
505
|
/**
|
|
243
|
-
* Get a channel variable
|
|
506
|
+
* Get a channel variable.
|
|
507
|
+
*
|
|
508
|
+
* @param variable - Variable name to get
|
|
509
|
+
* @returns Variable value
|
|
510
|
+
*
|
|
511
|
+
* @example
|
|
512
|
+
* ```typescript
|
|
513
|
+
* const value = await channel.getVariable('CALLERID(num)');
|
|
514
|
+
* console.log(`Caller: ${value}`);
|
|
515
|
+
* ```
|
|
244
516
|
*/
|
|
245
517
|
async getVariable(variable) {
|
|
246
518
|
return this.client.channels.getVariable(this.id, variable);
|
|
247
519
|
}
|
|
248
520
|
/**
|
|
249
|
-
* Set a channel variable
|
|
521
|
+
* Set a channel variable.
|
|
522
|
+
*
|
|
523
|
+
* @param variable - Variable name to set
|
|
524
|
+
* @param value - Variable value (undefined to unset)
|
|
525
|
+
*
|
|
526
|
+
* @example
|
|
527
|
+
* ```typescript
|
|
528
|
+
* await channel.setVariable('MY_VAR', 'some value');
|
|
529
|
+
* ```
|
|
250
530
|
*/
|
|
251
531
|
async setVariable(variable, value) {
|
|
252
532
|
return this.client.channels.setVariable(this.id, variable, value);
|
|
253
533
|
}
|
|
254
534
|
/**
|
|
255
|
-
* Start snooping on this channel
|
|
535
|
+
* Start snooping (spying/whispering) on this channel.
|
|
536
|
+
*
|
|
537
|
+
* @param params - Snoop parameters (spy/whisper direction, app, etc.)
|
|
538
|
+
* @returns Channel instance for the snoop channel
|
|
539
|
+
*
|
|
540
|
+
* @example
|
|
541
|
+
* ```typescript
|
|
542
|
+
* const snoopChannel = await channel.snoop({
|
|
543
|
+
* spy: 'both',
|
|
544
|
+
* whisper: 'none',
|
|
545
|
+
* app: 'supervisor'
|
|
546
|
+
* });
|
|
547
|
+
* ```
|
|
256
548
|
*/
|
|
257
549
|
async snoop(params) {
|
|
258
550
|
const snoopChannel = this.client.Channel(params.snoopId);
|
|
@@ -263,13 +555,35 @@ export class ChannelInstance {
|
|
|
263
555
|
return snoopChannel;
|
|
264
556
|
}
|
|
265
557
|
/**
|
|
266
|
-
* Dial this channel
|
|
558
|
+
* Dial this channel (for channels created with create() instead of originate).
|
|
559
|
+
*
|
|
560
|
+
* @param params - Optional dial parameters
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* ```typescript
|
|
564
|
+
* const channel = await client.channels.create({
|
|
565
|
+
* endpoint: 'PJSIP/1000',
|
|
566
|
+
* app: 'my-app'
|
|
567
|
+
* });
|
|
568
|
+
*
|
|
569
|
+
* const instance = client.Channel(channel.id, channel);
|
|
570
|
+
* await instance.dial({ timeout: 30 });
|
|
571
|
+
* ```
|
|
267
572
|
*/
|
|
268
573
|
async dial(params) {
|
|
269
574
|
return this.client.channels.dial(this.id, params);
|
|
270
575
|
}
|
|
271
576
|
/**
|
|
272
|
-
* Get RTP statistics for this channel
|
|
577
|
+
* Get RTP statistics for this channel.
|
|
578
|
+
*
|
|
579
|
+
* @returns RTP statistics including jitter, packet loss, RTT
|
|
580
|
+
*
|
|
581
|
+
* @example
|
|
582
|
+
* ```typescript
|
|
583
|
+
* const stats = await channel.getRtpStatistics();
|
|
584
|
+
* console.log(`Jitter: ${stats.rxjitter}ms`);
|
|
585
|
+
* console.log(`Packet loss: ${stats.rxploss}`);
|
|
586
|
+
* ```
|
|
273
587
|
*/
|
|
274
588
|
async getRtpStatistics() {
|
|
275
589
|
return this.client.channels.getRtpStatistics(this.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/models/channel.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/models/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/models/index.d.ts
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
* Model exports
|
|
3
3
|
*/
|
|
4
4
|
export { ChannelInstance } from './channel.js';
|
|
5
|
+
export type { ChannelEventListener, ChannelEventListeners } from './channel.js';
|
|
5
6
|
export { BridgeInstance } from './bridge.js';
|
|
7
|
+
export type { BridgeEventListener, BridgeEventListeners } from './bridge.js';
|
|
6
8
|
export { PlaybackInstance } from './playback.js';
|
|
9
|
+
export type { PlaybackEventListener, PlaybackEventListeners } from './playback.js';
|
|
7
10
|
export { LiveRecordingInstance, StoredRecordingInstance } from './recording.js';
|
|
11
|
+
export type { RecordingEventListener, RecordingEventListeners } from './recording.js';
|
|
8
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAChF,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/models/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -5,10 +5,31 @@ import type { AriClient } from '../client.js';
|
|
|
5
5
|
import type { Playback, PlaybackState } from '../types/api.js';
|
|
6
6
|
import type { PlaybackOperation } from '../resources/playbacks.js';
|
|
7
7
|
import type { AriEventMap, PlaybackEventType, PlaybackStartedEvent, PlaybackContinuingEvent, PlaybackFinishedEvent } from '../events/types.js';
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Type for playback event listener functions.
|
|
10
|
+
* The listener receives the event data and the playback instance.
|
|
11
|
+
* @template E - The event type
|
|
12
|
+
*/
|
|
13
|
+
export type PlaybackEventListener<E> = (event: E, playback: PlaybackInstance) => void | Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Interface defining all playback event listeners with their typed signatures.
|
|
16
|
+
* Use this to type your listener functions when working with playback events.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import type { PlaybackEventListeners } from '@per_moeller/asterisk-ari';
|
|
21
|
+
*
|
|
22
|
+
* const finishedHandler: PlaybackEventListeners['PlaybackFinished'] = (event, playback) => {
|
|
23
|
+
* console.log(`Playback ${playback.id} finished`);
|
|
24
|
+
* };
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export interface PlaybackEventListeners {
|
|
28
|
+
/** Fired when playback starts */
|
|
10
29
|
PlaybackStarted: PlaybackEventListener<PlaybackStartedEvent>;
|
|
30
|
+
/** Fired when playback continues to the next media item */
|
|
11
31
|
PlaybackContinuing: PlaybackEventListener<PlaybackContinuingEvent>;
|
|
32
|
+
/** Fired when playback finishes */
|
|
12
33
|
PlaybackFinished: PlaybackEventListener<PlaybackFinishedEvent>;
|
|
13
34
|
}
|
|
14
35
|
/**
|
|
@@ -78,5 +99,4 @@ export declare class PlaybackInstance implements Playback {
|
|
|
78
99
|
*/
|
|
79
100
|
reverse(): Promise<void>;
|
|
80
101
|
}
|
|
81
|
-
export {};
|
|
82
102
|
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/models/playback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/models/playback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtG;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,eAAe,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IAC7D,2DAA2D;IAC3D,kBAAkB,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IACnE,mCAAmC;IACnC,gBAAgB,EAAE,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAE/C,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAM;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAM;IACxB,QAAQ,EAAE,MAAM,CAAQ;IACxB,KAAK,EAAE,aAAa,CAAY;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6D;gBAE3E,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;IAYpE;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IASzC;;OAEG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACvC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IAUP;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACzC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IASP;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EACxC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAClC,IAAI;IAQP;;;OAGG;IACH,KAAK,CAAC,CAAC,SAAS,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAaxE;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAU1B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|