UNPKG

asterisk-ami-connector

Version:
142 lines (96 loc) 4.34 kB
# Asterisk AMI Connector for NodeJS (ES2015) [![Build Status](https://travis-ci.org/BelirafoN/asterisk-ami-connector.svg?branch=master)](https://travis-ci.org/BelirafoN/asterisk-ami-connector) [![Coverage Status](https://coveralls.io/repos/github/BelirafoN/asterisk-ami-connector/badge.svg?branch=master)](https://coveralls.io/github/BelirafoN/asterisk-ami-connector?branch=master) [![Code Climate](https://codeclimate.com/github/BelirafoN/asterisk-ami-connector/badges/gpa.svg)](https://codeclimate.com/github/BelirafoN/asterisk-ami-connector) [![npm version](https://badge.fury.io/js/asterisk-ami-connector.svg)](https://badge.fury.io/js/asterisk-ami-connector) This library is a part of **[Asterisk's AMI Client](https://www.npmjs.com/package/asterisk-ami-client)** library. ## Install ```bash $ npm i asterisk-ami-connector ``` ## NodeJS versions support `>=4.0.0` ## Usage Base example with promises. ```javascript 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 ```javascript 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](https://mochajs.org/). ```bash mocha ./tests ``` or with `npm` ```bash npm test ``` Test coverage with [Istanbul](https://gotwarlost.github.io/istanbul/) ```bash npm run coverage ``` ## License Licensed under the MIT License