@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.
package/dist/client.js CHANGED
@@ -1,5 +1,28 @@
1
1
  /**
2
2
  * ARI Client - Main entry point for Asterisk REST Interface
3
+ *
4
+ * This module provides the main `AriClient` class and `connect()` function
5
+ * for establishing connections to Asterisk ARI.
6
+ *
7
+ * @packageDocumentation
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { connect } from '@per_moeller/asterisk-ari';
12
+ *
13
+ * const client = await connect({
14
+ * url: 'http://localhost:8088',
15
+ * username: 'asterisk',
16
+ * password: 'secret',
17
+ * app: 'my-app'
18
+ * });
19
+ *
20
+ * client.on('StasisStart', async (event, channel) => {
21
+ * console.log(`Incoming call from ${channel.caller.number}`);
22
+ * await channel.answer();
23
+ * await channel.play({ media: 'sound:hello-world' });
24
+ * });
25
+ * ```
3
26
  */
4
27
  import { HttpConnection } from './connection.js';
5
28
  import { WebSocketManager } from './websocket.js';
@@ -23,7 +46,34 @@ import { BridgeInstance } from './models/bridge.js';
23
46
  import { PlaybackInstance } from './models/playback.js';
24
47
  import { LiveRecordingInstance, StoredRecordingInstance } from './models/recording.js';
25
48
  /**
26
- * ARI Client for interacting with Asterisk
49
+ * Main ARI Client for interacting with Asterisk.
50
+ *
51
+ * The client provides access to all ARI resources (channels, bridges, etc.)
52
+ * and handles WebSocket events from Asterisk. It extends `AriEventEmitter`
53
+ * for type-safe event handling.
54
+ *
55
+ * @remarks
56
+ * Don't instantiate this class directly. Use the {@link connect} function instead.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const client = await connect({ ... });
61
+ *
62
+ * // Access API resources
63
+ * const channels = await client.channels.list();
64
+ * const bridge = await client.bridges.create({ type: 'mixing' });
65
+ *
66
+ * // Listen to events
67
+ * client.on('StasisStart', (event, channel) => {
68
+ * // Handle incoming calls
69
+ * });
70
+ *
71
+ * // Create model instances for event-based programming
72
+ * const myChannel = client.Channel('channel-id');
73
+ * myChannel.on('ChannelDtmfReceived', (event) => {
74
+ * console.log(`DTMF: ${event.digit}`);
75
+ * });
76
+ * ```
27
77
  */
28
78
  export class AriClient extends AriEventEmitter {
29
79
  options;
@@ -35,19 +85,157 @@ export class AriClient extends AriEventEmitter {
35
85
  bridgeInstances = new Map();
36
86
  playbackInstances = new Map();
37
87
  recordingInstances = new Map();
88
+ // ============================================================================
38
89
  // API Resources
90
+ // ============================================================================
91
+ /**
92
+ * Channels API for managing calls and channels.
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // List all channels
97
+ * const channels = await client.channels.list();
98
+ *
99
+ * // Originate a call
100
+ * const channel = await client.channels.originate({
101
+ * endpoint: 'PJSIP/1000',
102
+ * app: 'my-app'
103
+ * });
104
+ *
105
+ * // Answer a channel
106
+ * await client.channels.answer(channelId);
107
+ * ```
108
+ */
39
109
  channels;
110
+ /**
111
+ * Bridges API for managing bridges (conferences, etc.).
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * // Create a mixing bridge
116
+ * const bridge = await client.bridges.create({ type: 'mixing' });
117
+ *
118
+ * // Add channels to bridge
119
+ * await client.bridges.addChannel(bridge.id, { channel: [channel1, channel2] });
120
+ * ```
121
+ */
40
122
  bridges;
123
+ /**
124
+ * Endpoints API for managing endpoints.
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // List all endpoints
129
+ * const endpoints = await client.endpoints.list();
130
+ *
131
+ * // Get PJSIP endpoints
132
+ * const pjsipEndpoints = await client.endpoints.listByTech('PJSIP');
133
+ * ```
134
+ */
41
135
  endpoints;
136
+ /**
137
+ * Applications API for managing Stasis applications.
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * // Get application details
142
+ * const app = await client.applications.get('my-app');
143
+ *
144
+ * // Subscribe to events
145
+ * await client.applications.subscribe('my-app', { eventSource: 'channel:123' });
146
+ * ```
147
+ */
42
148
  applications;
149
+ /**
150
+ * Asterisk API for system information and management.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * // Get Asterisk info
155
+ * const info = await client.asterisk.getInfo();
156
+ * console.log(info.system?.version);
157
+ *
158
+ * // Get a global variable
159
+ * const value = await client.asterisk.getVariable('GLOBALVAR');
160
+ * ```
161
+ */
43
162
  asterisk;
163
+ /**
164
+ * Playbacks API for controlling media playback.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * // Control a playback
169
+ * await client.playbacks.control(playbackId, 'pause');
170
+ * await client.playbacks.control(playbackId, 'unpause');
171
+ * await client.playbacks.stop(playbackId);
172
+ * ```
173
+ */
44
174
  playbacks;
175
+ /**
176
+ * Recordings API for managing live and stored recordings.
177
+ *
178
+ * @example
179
+ * ```typescript
180
+ * // List stored recordings
181
+ * const recordings = await client.recordings.listStored();
182
+ *
183
+ * // Get a stored recording
184
+ * const recording = await client.recordings.getStored('my-recording');
185
+ * ```
186
+ */
45
187
  recordings;
188
+ /**
189
+ * Sounds API for listing available sound files.
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // List all sounds
194
+ * const sounds = await client.sounds.list();
195
+ *
196
+ * // Get sounds for a specific language
197
+ * const englishSounds = await client.sounds.list({ lang: 'en' });
198
+ * ```
199
+ */
46
200
  sounds;
201
+ /**
202
+ * Mailboxes API for managing voicemail mailboxes.
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * // List mailboxes
207
+ * const mailboxes = await client.mailboxes.list();
208
+ *
209
+ * // Update message counts
210
+ * await client.mailboxes.update('1000@default', {
211
+ * oldMessages: 5,
212
+ * newMessages: 2
213
+ * });
214
+ * ```
215
+ */
47
216
  mailboxes;
217
+ /**
218
+ * Device States API for managing custom device states.
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * // Set a device state
223
+ * await client.deviceStates.update('Stasis:mydevice', 'INUSE');
224
+ *
225
+ * // Get a device state
226
+ * const state = await client.deviceStates.get('Stasis:mydevice');
227
+ * ```
228
+ */
48
229
  deviceStates;
49
230
  /**
50
- * @internal - Use connect() function instead
231
+ * Creates a new ARI client.
232
+ *
233
+ * @internal - Use the {@link connect} function instead of instantiating directly.
234
+ *
235
+ * @param options - Resolved connection options
236
+ * @param http - HTTP connection instance
237
+ * @param ws - WebSocket manager instance
238
+ * @param versionCompat - Version compatibility checker
51
239
  */
52
240
  constructor(options, http, ws, versionCompat) {
53
241
  super();
@@ -71,6 +259,7 @@ export class AriClient extends AriEventEmitter {
71
259
  }
72
260
  /**
73
261
  * Set up WebSocket event handlers
262
+ * @internal
74
263
  */
75
264
  setupWebSocketEvents() {
76
265
  this.ws.on('message', (data) => {
@@ -89,15 +278,50 @@ export class AriClient extends AriEventEmitter {
89
278
  }
90
279
  /**
91
280
  * Handle an incoming ARI event
281
+ * @internal
92
282
  */
93
283
  handleEvent(event) {
94
- // Emit to global listeners
95
- this.emit(event.type, event);
284
+ // Emit to global listeners with convenience argument (ari-client compatibility)
285
+ const convenienceArg = this.getConvenienceArg(event);
286
+ this.emit(event.type, event, convenienceArg);
96
287
  // Route to specific instances based on event type
97
288
  this.routeEventToInstances(event);
98
289
  }
290
+ /**
291
+ * Extract convenience instance argument from event for ari-client style callbacks.
292
+ * Returns instance types (ChannelInstance, BridgeInstance, etc.) with methods.
293
+ * @internal
294
+ */
295
+ getConvenienceArg(event) {
296
+ if ('channel' in event && event.channel) {
297
+ // Return a ChannelInstance with the channel data
298
+ return this.Channel(event.channel.id, event.channel);
299
+ }
300
+ if ('bridge' in event && event.bridge) {
301
+ // Return a BridgeInstance with the bridge data
302
+ return this.Bridge(event.bridge.id, event.bridge);
303
+ }
304
+ if ('playback' in event && event.playback) {
305
+ // Return a PlaybackInstance with the playback data
306
+ return this.Playback(event.playback.id, event.playback);
307
+ }
308
+ if ('recording' in event && event.recording) {
309
+ // Return a LiveRecordingInstance with the recording data
310
+ return this.LiveRecording(event.recording.name, event.recording);
311
+ }
312
+ if ('endpoint' in event && event.endpoint) {
313
+ // Endpoints don't have an instance class yet, return raw data
314
+ return event.endpoint;
315
+ }
316
+ // Special case for Dial event - return peer channel as instance
317
+ if (event.type === 'Dial' && 'peer' in event) {
318
+ return this.Channel(event.peer.id, event.peer);
319
+ }
320
+ return undefined;
321
+ }
99
322
  /**
100
323
  * Route event to appropriate instance listeners
324
+ * @internal
101
325
  */
102
326
  routeEventToInstances(event) {
103
327
  // Channel events
@@ -138,10 +362,31 @@ export class AriClient extends AriEventEmitter {
138
362
  }
139
363
  }
140
364
  // ============================================================================
141
- // Instance Factory Methods (like ari-client)
365
+ // Instance Factory Methods
142
366
  // ============================================================================
143
367
  /**
144
- * Create a Channel instance
368
+ * Create or retrieve a Channel instance.
369
+ *
370
+ * Channel instances provide event-based programming for individual channels.
371
+ * Events are automatically routed to the appropriate instance based on channel ID.
372
+ *
373
+ * @param id - Channel ID (auto-generated if not provided)
374
+ * @param data - Initial channel data
375
+ * @returns Channel instance for event handling and operations
376
+ *
377
+ * @example
378
+ * ```typescript
379
+ * // Create a channel instance from an event
380
+ * client.on('StasisStart', (event, channelData) => {
381
+ * const channel = client.Channel(channelData.id, channelData);
382
+ *
383
+ * channel.on('ChannelDtmfReceived', (event) => {
384
+ * console.log(`DTMF: ${event.digit}`);
385
+ * });
386
+ *
387
+ * await channel.answer();
388
+ * });
389
+ * ```
145
390
  */
146
391
  Channel(id, data) {
147
392
  const existingId = id || data?.id;
@@ -156,7 +401,23 @@ export class AriClient extends AriEventEmitter {
156
401
  return new ChannelInstance(this, id, data);
157
402
  }
158
403
  /**
159
- * Create a Bridge instance
404
+ * Create or retrieve a Bridge instance.
405
+ *
406
+ * Bridge instances provide event-based programming for bridges.
407
+ *
408
+ * @param id - Bridge ID (auto-generated if not provided)
409
+ * @param data - Initial bridge data
410
+ * @returns Bridge instance for event handling and operations
411
+ *
412
+ * @example
413
+ * ```typescript
414
+ * const bridge = client.Bridge();
415
+ * await bridge.create({ type: 'mixing' });
416
+ *
417
+ * bridge.on('ChannelEnteredBridge', (event) => {
418
+ * console.log(`${event.channel.name} joined the bridge`);
419
+ * });
420
+ * ```
160
421
  */
161
422
  Bridge(id, data) {
162
423
  const existingId = id || data?.id;
@@ -171,7 +432,24 @@ export class AriClient extends AriEventEmitter {
171
432
  return new BridgeInstance(this, id, data);
172
433
  }
173
434
  /**
174
- * Create a Playback instance
435
+ * Create or retrieve a Playback instance.
436
+ *
437
+ * Playback instances provide event-based programming for media playback.
438
+ *
439
+ * @param id - Playback ID (auto-generated if not provided)
440
+ * @param data - Initial playback data
441
+ * @returns Playback instance for event handling and operations
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * const playback = client.Playback();
446
+ *
447
+ * playback.on('PlaybackFinished', (event) => {
448
+ * console.log('Playback completed');
449
+ * });
450
+ *
451
+ * await channel.play({ media: 'sound:hello', playbackId: playback.id });
452
+ * ```
175
453
  */
176
454
  Playback(id, data) {
177
455
  const existingId = id || data?.id;
@@ -186,7 +464,24 @@ export class AriClient extends AriEventEmitter {
186
464
  return new PlaybackInstance(this, id, data);
187
465
  }
188
466
  /**
189
- * Create a LiveRecording instance
467
+ * Create or retrieve a LiveRecording instance.
468
+ *
469
+ * LiveRecording instances provide event-based programming for active recordings.
470
+ *
471
+ * @param name - Recording name
472
+ * @param data - Initial recording data
473
+ * @returns LiveRecording instance for event handling and operations
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * const recording = client.LiveRecording('my-recording');
478
+ *
479
+ * recording.on('RecordingFinished', (event) => {
480
+ * console.log(`Recording saved: ${event.recording.name}`);
481
+ * });
482
+ *
483
+ * await channel.record({ name: 'my-recording', format: 'wav' });
484
+ * ```
190
485
  */
191
486
  LiveRecording(name, data) {
192
487
  const existing = this.recordingInstances.get(name);
@@ -198,7 +493,25 @@ export class AriClient extends AriEventEmitter {
198
493
  return new LiveRecordingInstance(this, name, data);
199
494
  }
200
495
  /**
201
- * Create a StoredRecording instance (no events, just convenience methods)
496
+ * Create a StoredRecording instance.
497
+ *
498
+ * StoredRecording instances provide convenience methods for working with
499
+ * recordings that are already saved to disk. Unlike LiveRecording, these
500
+ * don't receive events.
501
+ *
502
+ * @param name - Recording name
503
+ * @returns StoredRecording instance for operations
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * const stored = client.StoredRecording('my-recording');
508
+ *
509
+ * // Copy the recording
510
+ * await stored.copy('my-recording-backup');
511
+ *
512
+ * // Delete the recording
513
+ * await stored.delete();
514
+ * ```
202
515
  */
203
516
  StoredRecording(name) {
204
517
  return new StoredRecordingInstance(this, name);
@@ -206,35 +519,35 @@ export class AriClient extends AriEventEmitter {
206
519
  // ============================================================================
207
520
  // Instance Registration (internal use by model instances)
208
521
  // ============================================================================
209
- /** @internal */
522
+ /** @internal Register a channel instance for event routing */
210
523
  _registerChannelInstance(id, instance) {
211
524
  this.channelInstances.set(id, instance);
212
525
  }
213
- /** @internal */
526
+ /** @internal Unregister a channel instance */
214
527
  _unregisterChannelInstance(id) {
215
528
  this.channelInstances.delete(id);
216
529
  }
217
- /** @internal */
530
+ /** @internal Register a bridge instance for event routing */
218
531
  _registerBridgeInstance(id, instance) {
219
532
  this.bridgeInstances.set(id, instance);
220
533
  }
221
- /** @internal */
534
+ /** @internal Unregister a bridge instance */
222
535
  _unregisterBridgeInstance(id) {
223
536
  this.bridgeInstances.delete(id);
224
537
  }
225
- /** @internal */
538
+ /** @internal Register a playback instance for event routing */
226
539
  _registerPlaybackInstance(id, instance) {
227
540
  this.playbackInstances.set(id, instance);
228
541
  }
229
- /** @internal */
542
+ /** @internal Unregister a playback instance */
230
543
  _unregisterPlaybackInstance(id) {
231
544
  this.playbackInstances.delete(id);
232
545
  }
233
- /** @internal */
546
+ /** @internal Register a recording instance for event routing */
234
547
  _registerRecordingInstance(name, instance) {
235
548
  this.recordingInstances.set(name, instance);
236
549
  }
237
- /** @internal */
550
+ /** @internal Unregister a recording instance */
238
551
  _unregisterRecordingInstance(name) {
239
552
  this.recordingInstances.delete(name);
240
553
  }
@@ -242,19 +555,45 @@ export class AriClient extends AriEventEmitter {
242
555
  // Connection State
243
556
  // ============================================================================
244
557
  /**
245
- * Get the detected ARI/Asterisk version
558
+ * Get the detected ARI/Asterisk version compatibility checker.
559
+ *
560
+ * @returns Version compatibility object with feature flags
561
+ *
562
+ * @example
563
+ * ```typescript
564
+ * console.log(client.version.toString());
565
+ * // "Asterisk 20 (ARI 8.0.0)"
566
+ *
567
+ * if (client.version.hasExternalMedia) {
568
+ * // Use external media feature
569
+ * }
570
+ * ```
246
571
  */
247
572
  get version() {
248
573
  return this.versionCompat;
249
574
  }
250
575
  /**
251
- * Check if WebSocket is connected
576
+ * Check if the WebSocket connection is active.
577
+ *
578
+ * @returns `true` if connected, `false` otherwise
252
579
  */
253
580
  isConnected() {
254
581
  return this.ws.isConnected();
255
582
  }
256
583
  /**
257
- * Stop the client and disconnect
584
+ * Stop the client and disconnect from Asterisk.
585
+ *
586
+ * This closes the WebSocket connection and clears all instance registries.
587
+ * The client cannot be reused after calling stop().
588
+ *
589
+ * @example
590
+ * ```typescript
591
+ * // Graceful shutdown
592
+ * process.on('SIGTERM', () => {
593
+ * client.stop();
594
+ * process.exit(0);
595
+ * });
596
+ * ```
258
597
  */
259
598
  stop() {
260
599
  this.ws.disconnect();
@@ -264,21 +603,53 @@ export class AriClient extends AriEventEmitter {
264
603
  this.recordingInstances.clear();
265
604
  }
266
605
  /**
267
- * Reconnect the WebSocket
606
+ * Reconnect the WebSocket connection.
607
+ *
608
+ * Disconnects and then reconnects to Asterisk. Instance registries
609
+ * are preserved, so events will continue routing correctly.
610
+ *
611
+ * @returns Promise that resolves when reconnected
268
612
  */
269
613
  async reconnect() {
270
614
  this.ws.disconnect();
271
615
  await this.ws.connect();
272
616
  }
273
617
  /**
274
- * Get the application name
618
+ * Get the Stasis application name.
619
+ *
620
+ * @returns Application name used for this connection
275
621
  */
276
622
  get app() {
277
623
  return this.options.app;
278
624
  }
279
625
  }
280
626
  /**
281
- * Connect to Asterisk ARI
627
+ * Connect to Asterisk ARI and create a client.
628
+ *
629
+ * This is the main entry point for establishing an ARI connection.
630
+ * It performs version detection and sets up the WebSocket connection.
631
+ *
632
+ * @param options - Connection options
633
+ * @returns Promise that resolves to an ARI client
634
+ * @throws {AriHttpError} If connection fails or authentication is invalid
635
+ *
636
+ * @example
637
+ * ```typescript
638
+ * import { connect } from '@per_moeller/asterisk-ari';
639
+ *
640
+ * const client = await connect({
641
+ * url: 'http://localhost:8088',
642
+ * username: 'asterisk',
643
+ * password: 'secret',
644
+ * app: 'my-app'
645
+ * });
646
+ *
647
+ * console.log(`Connected to ${client.version}`);
648
+ *
649
+ * client.on('StasisStart', async (event, channel) => {
650
+ * await channel.answer();
651
+ * });
652
+ * ```
282
653
  */
283
654
  export async function connect(options) {
284
655
  const resolved = resolveOptions(options);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}