Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including asterisk-ami-events-stream with all npm packages installed. Try it out:

var asteriskAmiEventsStream = require("asterisk-ami-events-stream")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

asterisk-ami-events-stream v1.2.8

Asterisk AMI Events Stream for NodeJS (ES2015)

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

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free