node.js AGI (Asterisk Gateway Interface)
Switch branches/tags
Nothing to show
Latest commit f313c56 Oct 24, 2012 @brianc Update
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 17, 2012
.travis.yml update to support & test against >=0.8.0 Oct 17, 2012 Update Oct 24, 2012
package.json version bump Oct 23, 2012


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


npm install agi



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);

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


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.