node package manager


AGI (Asterisk Gateway Interface) for writing dialplan scripts


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.

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

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.

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.