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.
$ npm i asterisk-ami-events-stream
support >=4.0.0
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();
});
For examples, please, see tests ./test/*
.
Tests require Mocha.
mocha ./tests
or with npm
npm test
Test coverage with Istanbul
npm run coverage
Licensed under the MIT License