Code Snippet
private readonly url: string;
private readonly username: string;
private readonly password: string;
constructor(config: ARIConfig) {
this.url = config.url;
this.username = config.username;
this.password = config.password;
}
public async run() {
const client = await this.getClient();
client.once('StasisStart', (event, channel) => this.handleStasisStart(event, channel, client));
client.once('StasisEnd', this.handleStasisEnd);
await client.start('hello-world');
}
private async handleStasisStart(event: StasisStart, channel: Channel, client: Client) {
const playback = client.Playback();
await channel.ring();
await appSetTimeout(2000);
await channel.answer();
await appSetTimeout(3000);
await channel.play({ media: 'sound:hello-world' }, playback);
await appSetTimeout(3000);
await channel.hangup();
}
private async handleStasisEnd(event: StasisEnd, channel: Channel) {}
private getClient(): Promise<Client> {
return ari.connect(this.url, this.username, this.password);
}
This works fine when I dial an extension. However, once I terminate the session, and try to hangup the session on StasisEnd handler, the above exception is thrown and node exists.
I can't seem to point out what is happening. This also happens when I use callbacks not just async/await.
Please help
Asterisk version - 18
Node version - 16
ARI client version - 2.2.0
Code Snippet
This works fine when I dial an extension. However, once I terminate the session, and try to hangup the session on
StasisEndhandler, the above exception is thrown and node exists.I can't seem to point out what is happening. This also happens when I use callbacks not just async/await.
Please help