asterisk / node-ari-client

Node.js client for ARI. This library is best effort with limited support.
Other
249 stars 98 forks source link

EventEmitter(catch like 'StasisStart') #157

Open LabelMinsk opened 1 year ago

LabelMinsk commented 1 year ago

I have trying fetching data from Asterisk (ARI) and can`t catch events. When nodemon started i can get some data(what i want like channels ari.channels.list(()=>...)), but if call is incoming i cant catch data realtime and i need reload server for grab data(like phone number). Thank you so much! P.s. stackoverflow dont work on this question...

Simple code:

server.js Screenshot_2

`const http = require('http'); const app = require('./app');

const PORT = process.env.PORT || 3008;

http.createServer(app) .listen(PORT, 'localhost', () => { console.log(PORT) })`

and second with logic app.js: Screenshot_1

`const express = require('express'); const util = require('util'); require('dotenv').config();

const app = express();

const client = require('ari-client');

const config = { host: process.env.ARI_HOST, user: process.env.ARI_USER, pass: process.env.ARI_PASS }

client.connect(config.host, config.user, config.pass, client_loaded);

function client_loaded (err, ari) { if (err) { throw err; // program will crash if it fails to connect }

//GRAB phone number ari.channels.list((err, channels) => { channels.forEach(channel => { console.log(channel.caller.number) }) })

//Events doesn`t work ari.on('StasisStart', ()=> console.log('work pls;)'));

///....... ari.start('hello'); }`

dorlanpabon commented 4 months ago

Good morning @LabelMinsk , for get events, you have edit config in dialplan of asterisk an execute Stasis application https://docs.asterisk.org/Asterisk_20_Documentation/API_Documentation/Dialplan_Applications/Stasis/

example

exten => _X.,n,Stasis(YOUR_NAME_APP_ARI , props);