You are on page 1of 4

Centro Estatal de Tecnologas de Informacin y Comunicaciones

Coordinacin General Gobierno del Estado de Michoacn

http://www.voip-info.org/wiki/view/Asterisk+AGI+php

13. another sample, ANI


Scenario - did callers call the Asterisks box and land on the context did, Asterisks answers the call and then execute the script ani.agi. This script will connect to mysql and see whether originators phone number(caller ID) is already in the database. If it exists, then agi.script will pass the control back to dial plan. Dial plan now will progress the call. If the caller ID does not exists, ani.agi will pass the control to the dial plan as un authenticated call.

ani.agi #!/usr/local/bin/php -q <?php ob_implicit_flush(true); set_time_limit(6); $in = fopen("php://stdin","r"); $stdlog = fopen("/var/log/asterisk/my_agi.log", "w");

// Do function definitions before we start the main loop function read() { global $in, $debug; $input = str_replace("\n", "", fgets($in, 4096)); return $input; } function errlog($line) { global $err; echo "VERBOSE \"$line\"\n"; }
Batalla de Casa Mata #351, Col. Chapultepec Sur, C.P. 58260, Morelia, Michoacn, Mxico Tel. (443) 1-13-44-00 Correo electrnico: cetic@michoacan.gob.mx www.cetic.michoacan.gob.mx

Centro Estatal de Tecnologas de Informacin y Comunicaciones


Coordinacin General Gobierno del Estado de Michoacn

function write($line) { global $debug; echo $line."\n"; } // parse agi headers into array while ($env=read()) { $env = str_replace("\"","",$env); $s = split(": ",$env); $agi[str_replace("agi_","",$s[0])] = trim($s[1]); if $env == "") { break; } }

function connect_db() { $db_connection = mysql_connect ('localhost', 'admin', 'admincdr') or die (mysql_error()); $db_select = mysql_select_db('cdrdb') or die (mysql_error()); } // main program $cli = $agi[callerid]; $exten= $agi[extension]; //errlog("Call from ".$agicallerid." - Calling phone"); connect_db(); $query1 = "SELECT pin_no FROM accounts WHERE clid = '$cli' "; $query_result1 = @mysql_query($query1); $row_count = mysql_num_rows($query_result1);
Batalla de Casa Mata #351, Col. Chapultepec Sur, C.P. 58260, Morelia, Michoacn, Mxico Tel. (443) 1-13-44-00 Correo electrnico: cetic@michoacan.gob.mx www.cetic.michoacan.gob.mx

Centro Estatal de Tecnologas de Informacin y Comunicaciones


Coordinacin General Gobierno del Estado de Michoacn

$row1 = @mysql_fetch_array ($query_result1); If ($row_count !=0 ) { // caller is authenticated based on ANI $pin = $row1[pin_no]; write ("SET CONTEXT did"); write ("EXEC SETACCOUNT $pin"); write ("EXEC GoTO s|2"); // ask for the number to call, no authentication } Else { // clid does not exist so ask for PIN write ("SET CONTEXT did"); write ("EXEC GoTO 866XXXXXXX|7"); } // clean up file handlers etc. fclose($in); fclose($stdlog); exit; ?>

Extensions.conf [did] ;for did exten exten exten exten exten exten => => => => => =>

callers 866XXXXXXX,1,Ringing 866XXXXXXX,2,Wait,4 866XXXXXXX,3,Answer 866XXXXXXX,4,SetCIDname() 866XXXXXXX,5,agi,ani.agi 866XXXXXXX,6,Authenticate(/etc/asterisk/authenticate.txt|a)


Batalla de Casa Mata #351, Col. Chapultepec Sur, C.P. 58260, Morelia, Michoacn, Mxico Tel. (443) 1-13-44-00 Correo electrnico: cetic@michoacan.gob.mx www.cetic.michoacan.gob.mx

Centro Estatal de Tecnologas de Informacin y Comunicaciones


Coordinacin General Gobierno del Estado de Michoacn

exten exten exten exten exten exten exten exten exten exten exten exten

=> => => => => => => => => => => =>

866XXXXXXX,7,GoTO(s|2) s,2,BackGround(pls-entr-num-uwish2-call) s,3,DigitTimeout,5 s,4,ResponseTimeout,10 _011XXXXXXXX.,1,Playback(pls-wait-connect-call) _011XXXXXXXX.,2,AbsoluteTimeout(3600) _011XXXXXXXX.,3,ResetCDR(w) _011XXXXXXXX.,4,Dial(H323/${EXTEN}@a.b.c.d,90) _011XXXXXXXX.,5,NoCDR() ; if no answer _011XXXXXXXX.,6,Busy _011XXXXXXXX.,105,NoCDR() ; if line is busy _011XXXXXXXX.,106,Busy

exten => t,1,Playback(vm-goodbye) ; if timeout exten => t,2,NoCDR() exten => t,3,Hangup exten => i,1,Playback,invalid ; if any number other than 011..... exten => i,2,Goto,s|3 ;exten => h,1,Hangup mysql database database name - cdrdb ( user - admin, login - admincdr ) table name - accounts ( two fields, pin_no and clid)

Batalla de Casa Mata #351, Col. Chapultepec Sur, C.P. 58260, Morelia, Michoacn, Mxico Tel. (443) 1-13-44-00 Correo electrnico: cetic@michoacan.gob.mx www.cetic.michoacan.gob.mx

You might also like