Here is a simple AGI using cagi that creates a user event when a call is connected with a queue member:
#include <stdio.h> #include <stdarg.h> #include "cagi.h" int main (int argc, char *argv[]) { AGI_TOOLS agi; AGI_CMD_RESULT res; int rtn; char channel_name[200], uniqueid[200], Interface[200], Event[1000]; rtn = AGITool_Init(&agi); // rtn = AGITool_verbose(&agi, &res, AGITool_ListGetVal(agi.agi_vars, // "agi_request"), 0); // sprintf(Event, "Do verbose= %d", rtn); // AGITool_verbose(&agi, &res, Event, 0); rtn = AGITool_get_variable2(&agi, &res, "CHANNEL", channel_name, sizeof(channel_name)); // sprintf(Event, "Get CHANNEL = %d", rtn); // AGITool_verbose(&agi, &res, Event, 0); rtn = AGITool_get_variable2(&agi, &res, "UNIQUEID", uniqueid, sizeof(uniqueid)); // sprintf(Event, "Get UNIQUEID = %d", rtn); // AGITool_verbose(&agi, &res, Event, 0); rtn = AGITool_get_variable2(&agi, &res, "MEMBERINTERFACE", Interface, sizeof(Interface)); // sprintf(Event, "Get MEMBERINTERFACE = %d", rtn); // AGITool_verbose(&agi, &res, Event, 0); sprintf(Event, "DidQueue|\"%s & %s & %s"", uniqueid, channel_name, Interface); rtn = AGITool_exec(&agi, &res, "UserEvent", Event); // sprintf(Event, "Do UserEvent = %d", rtn); // AGITool_verbose(&agi, &res, Event, 0); AGITool_Destroy(&agi); return 0; } /* main */ -- Jim Dickenson mailto:dicken...@cfmc.com CfMC http://www.cfmc.com/ On Jun 30, 2010, at 8:31 AM, Jonas Kellens wrote: > Taking my first steps into AGI then : > > > [r...@asterisk agi-bin]# cat sample.agi > #!/usr/bin/php -q > <?php > $MYSQLSERVER2="localhost"; > $MYSQLUSER2="user"; > $MYSQLPASSWD2="passwd"; > > set_time_limit(30); > require('phpagi/phpagi.php'); > $agi = new AGI(); > > $db=mysql_connect("$MYSQLSERVER2", "$MYSQLUSER2", "$MYSQLPASSWD2"); > mysql_select_db(Asterisk, $db); > > $QUERY="SELECT vmcontext FROM AstDB WHERE ID='40'"; > $agi->verbose("query is: $QUERY", 3); > $result=mysql_query($QUERY); > $VMCONTEXT=mysql_fetch_array($result); > $agi->verbose("VMCONTEXT is: $VMCONTEXT", 3); > $vmcontext=$VMCONTEXT['vmcontext']; > > $exten = $agi->request['agi_extension']; //Dialed extension > // the result is stored in $exten > $agi->verbose("variable exten : $exten", 3); > $agi->verbose("variable vmcontext : $vmcontext", 3); > // > ?> > > > [Jun 30 17:26:04] -- Executing [...@test:3] AGI("SIP/test-00000054", > "sample.agi") in new stack > [Jun 30 17:26:04] -- Launched AGI Script > /var/lib/asterisk/agi-bin/sample.agi > [Jun 30 17:26:04] -- sample.agi: query is: SELECT vmcontext FROM AstDB > WHERE klantID='40' > [Jun 30 17:26:04] -- sample.agi: VMCONTEXT is: > [Jun 30 17:26:04] -- sample.agi: variable exten : 123 > [Jun 30 17:26:04] -- sample.agi: variable vmcontext : > [Jun 30 17:26:04] -- AGI Script sample.agi completed, returning 0 > > > Does AGI not interpret my query correctly ? As there is no output for > $vmcontext... > > > > Jonas. > > > On 06/30/2010 04:54 PM, Jim Dickenson wrote: >> >> Yes it gets called when the call is connected to a queue member. >> >> In version 1.4.x you can execute an AGI instead of a sub or macro. > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > New to Asterisk? Join us for a live introductory webinar every Thurs: > http://www.asterisk.org/hello > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users