@per_moeller/asterisk-ari 1.0.2 → 1.0.4

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.
@@ -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
- // Channel properties
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
- * @internal
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
- // Bound Channel Operations
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
- * Hangup this channel
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 location
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":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/models/channel.ts"],"names":[],"mappings":"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"}