node-agi
Client for asterisk AGI protocol. Parses incomming messages into events. Dispatches AGI commands and their responses from asterisk. Most commonly used as a low level client for a fAGI server.
note: still a work in progress
install
npm install agi
API
agi.createServer([listener])
Returns a new net.Server instance. The listener will be called on a new agi connection with a single Context object as described below.
require('agi').createServer(function(context) {
//context is a new instance of agi.Context for each new agi session
//immedately after asterisk connects to the node process
context.on('variables', function(vars) {
console.log('received new call from: ' + vars.agi_callerid + ' with uniqueid: ' + vars.agi_uniqueid);
});
}).listen(3000);
new agi.Context(stream)
Constructor to create a new instance of a context. Supply a readable and writable stream to the constructor. Commonly stream will be a net.Socket
instance.
context.exec(command, [args], [callback])
Dispatches the EXEC
AGI command to asterisk with supplied command name and arguments. callback is called with the result of the dispatch.
context.exec('ANSWER', function(err, res) {
//the channel is now answered
});
context.exec('RecieveFax', '/tmp/myfax.tif', function(err, res) {
//fax has been recieved by asterisk and written to /tmp/myfax.tif
});
context.hangup([callbac])
Dispatches the 'HANGUP' AGI command to asterisk. Does not close the sockets automatically. callback is called with the result of the dispatch.
context.hangup(function(err, res) {
//the channel has now been hungup.
});