infoswitch.voip

2.0.0 • Public • Published

infoswitch.voip

Install

Yate external control library.

:::bash
npm install --save infoswitch.voip

Usage

Create Yate PBX instance (default config values are used in this example):

:::js
var YateExt = require('infoswitch.js').YateExt;

var pbx = new YateExt({
    host: 'localhost',
    port: 7777,
    reconnectInterval: 5000,            // set to `null` to disable reconnect
    callTimeout: 2 * 60 * 60 * 1000,    // 2 hours
    callSetupTimeout: 70 * 1000,        // pick-up timeout
    authenticator: function (digest, callback) {
        // allow calls from unregistered users
        if (digest.newcall) {
            callback(null, true);
            return;
        }

        // always authenticate after 3 seconds
        setTimeout(function () {
            callback(null, true);
        }, 3000);
    },
    authenticateTimeout: 5000           // how long to wait for authenticator()
});

Connect to Yate. If reconnectInterval is set, then we'll keep reconnecting even after disconnect

:::js
pbx.connect();

Events

The PBX instance emits a lot of different events. The error event is the most important one

:::js
pbx.on('error', function (err) {
    console.log(err.stack);
});

Call events

:::js
pbx.on('incoming-call', function (channel, info) {
    console.log('incoming call');
});
pbx.on('outgoing-call', function (ivr_channel, info) {
    console.log('outgoing call');
});

Then there are events related to connection, carrier, and user status

:::js
pbx.on('connect', function (info) {
    console.log('connecting to Yate @ %s:%s ...', info.host, info.port);
});
pbx.on('connected', function () {
    console.log('connected to Yate!');
});
pbx.on('disconnected', function () {
    console.log('disconnected from Yate')
});
pbx.on('carrier-online', function (carrier) {
    console.log('carrier online', carrier);
});
pbx.on('carrier-offline', function (carrier) {
    console.log('carrier offline', carrier);
});
pbx.on('user-register', function (user) {
    console.log('user register', user);
});
pbx.on('user-unregister', function (user) {
    console.log('user unregister', user);
});
pbx.on('user-expired', function (user) {
    console.log('user expired', user);
});

... and then some internal Yate-specific events

:::js
pbx.on('send-line', function (line) {
    console.log('send line', line);
});
pbx.on('recv-line', function (line) {
    console.log('receive line', line);
});
pbx.on('suppress-line', function (line) {
    console.log('failed to send line', line);
});
pbx.on('install-confirm', function (cmd) {
    console.log('install confirmation', cmd);
});
pbx.on('watch-confirm', function (cmd) {
    console.log('watch confirmation', cmd);
});
pbx.on('reply-unhandled', function (msg) {
    console.log('reply to unhandled message', msg);
});

Add carrier account

:::js
pbx.addCarrier({
    host: 'your.gateway.com',
    username: 'your username',
    password: 'your password'
});

Outgoing call

Make an outgoing call (do this after connected or else it'll fail)

:::js
// make an outgoing call
var destination = {
    called: '31999999999',
    routes: [
        {
            host: 'your.gateway1.com:8888',
            caller: '555555',
            formats: 'g729,g723'
        },
        {
            host: 'your.gateway2.com:8888',
            caller: '6666666',
            called: '00031999999999'
        }
    ]
};
pbx.makeCall(destination, function (err, ivr_channel) {
    if (!err)
        console.log('outgoing call started');
});

Channels

(TBD)

Readme

Keywords

none

Package Sidebar

Install

npm i infoswitch.voip

Weekly Downloads

7

Version

2.0.0

License

MIT

Last publish

Collaborators

  • atis