Skip to content

rvleyden/asterisk-ami-events-stream

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Asterisk Ami Events Stream for NodeJS (ES2015)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%