Get unlimited public & private packages + team-based management with npm Teams.Learn more »

asterisk-ami-events-stream

1.2.8 • Public • Published

Asterisk AMI Events Stream for NodeJS (ES2015)

Build Status Coverage Status Code Climate npm version

This is a transform stream for AMI socket. This stream has a three custom events:

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

  • amiEvent - fired when event was receive. Handler of this event receives AMI event object.
  • amiResponse - fired when response was receive. Handler of this event receives AMI response object.
  • amiAction - fired when action was receive. Handler of this event receives AMI action object.

If response from AMI not has structure like this:

<KEY>: <VALUE>CRLF
<KEY>: <VALUE>CRLF
...
<KEY>: <VALUE>CRLFx2

In above case, body of this response will be available in $content property of response object.

Install

$ npm i asterisk-ami-events-stream

NodeJS versions

support >=4.0.0

Usage

const net = require('net');
const amiUtils = require('asterisk-ami-event-utils');
const AmiEventsStream = require('asterisk-ami-events-stream');
const eventsStream = new AmiEventsStream();
 
const amiSocket = net.connect({port: 5038}, () => {
        console.log('connected to asterisk ami!');
        amiSocket.write(amiUtils.fromObject({
                Action: 'login',
                Username: 'login',
                Secret: 'password',
                Events: 'on'
            }));
        amiSocket.pipe(eventsStream);
    });
    
amiSocket
    .on('end', () => {
        amiSocket.unpipe(eventsStream);
        console.log('disconnected from asterisk ami');
    })
    .on('error', error => {
        console.log(error);
        amiSocket.unpipe(eventsStream);
    });
 
eventsStream
    .on('amiEvent', event => {
        console.log(event);
        amiSocket.end();
    })    
    .on('amiResponse', response => {
        console.log(response);
        amiSocket.end();
    })
    .on('amiAction', action => {
        console.log(action);
        amiSocket.end();
    });    

Examples

For examples, please, see 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 asterisk-ami-events-stream

DownloadsWeekly Downloads

176

Version

1.2.8

License

MIT

Last publish

Collaborators

  • avatar