Professional Documents
Culture Documents
http://www.voip-info.org/wiki/view/Asterisk+AGI+php
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
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
$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 => => => => => =>
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