Skip to content
node.js AGI (Asterisk Gateway Interface)
JavaScript
Latest commit f313c56 Oct 24, 2012 @brianc Update README.md
Failed to load latest commit information.
lib proxy 'end' function to stream Oct 23, 2012
test proxy 'end' function to stream Oct 23, 2012
.gitignore initial work Oct 16, 2012
.travis.yml update to support & test against >=0.8.0 Oct 16, 2012
README.md Update README.md Oct 24, 2012
package.json version bump Oct 23, 2012

README.md

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.
});
Something went wrong with that request. Please try again.