Meet npm Pro: unlimited public & private packages + package-based permissions.Learn more »

dfi-asterisk-ami-connector

1.1.9 • Public • Published

Asterisk AMI Connector for NodeJS (ES2015)

Build Status Coverage Status Code Climate npm version

This library is a part of Asterisk's AMI Client library.

Install

$ npm i asterisk-ami-connector

NodeJS versions

support >=4.0.0

Usage

Base example with promises.

const connector = require('asterisk-ami-connector')({reconnect: true});
 
connector.connect('login', 'password', {host: '127.0.0.1', port: 5038})
    .then(amiConnection => {
        amiConnection
            .on('event', event  => {
                console.log(event);
                amiConnection.close();
            })
            .on('response', response  => console.log(response))
            .on('close', ()  => console.log('closed'))
            .on('error', error  => console.log(error));
    })
    .catch(error => console.log(error));

or using co for synchronous code style

const connector = require('asterisk-ami-connector')({reconnect: true});
const co = require('co');
 
co(function*(){
    let amiConnection = yield connector.connect('login', 'password', {host: '127.0.0.1', port: 5038});
    
    amiConnection
        .on('event', event  => {
            console.log(event);
            amiConnection.close();
        })
        .on('response', response  => console.log(response))
        .on('close', ()  => console.log('closed'))
        .on('error', error  => console.log(error));
})
    .catch(error => console.log(error));

or with co like synchronous style

Some details about module functionality

Options of connection setup to Asterisk AMI:

  • reconnect - default is false. Reconnection during connection setup.
  • maxAttemptsCount - default is null (infinity). Max count of attempts of reconnection.
  • attemptsDelay - default is 1000 (ms). Time delay between attempts of reconnection.

Method connect

It takes the following parameters:

  • login - Asterisks AMI login;
  • secret - Asterisks AMI password;
  • options - standard options for net.connect method.

It always returns promise. That promise will be resolved with instance of AmiConnection, or will be reject with AmiAuthError.

Class AmiConnection

It is a class-wrapper for Asterisk's AMI socket, which was inherit from EventEmitter.

Available methods:

  • .close() - close current Asterisk AMI connection;
  • .write(message) - write message into current Asterisk's AMI socket;

Available props:

  • .isConnected - true when connection to Asterisk AMI established;
  • .lastEvent - last event by Asterisk;
  • .lastResponse - last response by Asterisk;
  • .lastWroteData - last wrote data to Asterisk's AMI socket (from client's code);

Available events:

  • event - it fires when AMI event was received. Handler receives AMI event object.
  • response - it fires when AMI response was received. Handler receives AMI response object.
  • close - it fires when AMI connection was closed.
  • error - it fires when error occurred. Handler receives error.
  • data - it fires when data was received from AMI socket. Handler receives buffer of received data.

Class AmiAuthError

It class of Asterisk AMI auth-errors, which was inherit from Error.

Debugging

Use env-variable DEBUG=* for print to console of steps of connection establishment.

Examples

For examples, please, see ./examples/* or tests ./test/*.

Tests

Tests require Mocha.

mocha ./tests

or with npm

npm test 

Test coverage with Istanbul

npm run coverage

License

Licensed under the MIT License

Install

npm i dfi-asterisk-ami-connector

DownloadsWeekly Downloads

2

Version

1.1.9

License

MIT

Last publish

Collaborators

  • avatar