[Asterisk-Users] PHP/AGI Problem
    Jon Farmer 
    viperdude_uk at yahoo.co.uk
       
    Wed May 25 09:31:00 MST 2005
    
    
  
Moises Silva wrote:
>could you post the script, the output of the script in the asterisk
>console and which asterisk version are you working with?
>
>  
>
See below
This is just a proof of concept script so its a bit basic...
#!/usr/bin/php -q
<?php
    set_time_limit(30);
    require "phpagi.php";
    error_reporting(0);
    $agi = new AGI();
    $agi->agi_exec("ANSWER");
while($y != 1){
    $response = "";
    $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/enter_ref #");
    $res = getDTMF("#",7);
    $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/you_entered #");
    $response .= trim($res);
    sayNumber($response);
    switch($response) {
    case "12345":
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/adsl_username_is #");
        $username = "JONFARMER";
        $userarray = myStringSplit(strtolower($username),1);
        $usercount = count($userarray);
        for($i=0;$i<$usercount;$i++){
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/letters/" . $userarray[$i] . " #");
        }
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/domain1t #");
        break;
    case "67891":
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/adsl_username_is #");
        $username = "test_user";
        $userarray = myStringSplit(strtolower($username),1);
        $usercount = count($userarray);
        for($i=0;$i<$usercount;$i++){
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/letters/" . $userarray[$i] . " #");
        }
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/domain2 #");
        break;
   
    case "00":
        $agi->agi_exec("STREAM FILE thanks #");
        exit();
        break;
    default:
            $agi->agi_exec("STREAM FILE 
/usr/share/asterisk/sounds/adsl/account_not_found #");
        break;
    }
}
    $agi->agi_exec("STREAM FILE thanks #");
    unlink("/tmp/*.wav");
function sayNumber($digit) {
    global $agi;
    $res = myStringSplit($digit,1);
    $num = count($res);
    for($x=0;$x<$num;$x++) {
        $agi->agi_exec("STREAM FILE /usr/share/asterisk/sounds/digits/" 
. $res[$x] ." #");
    }
    sleep(1);
}  
function myStringSplit($string, $long){
   $long--;
   // Converting the string into an array
   For( $i=0; isset($string{$i}); $i++){
       $myarray[] = $string{$i};
   }
   // Making arrays from the array
   $a=0;
   $end = $long;
   $iend = count($myarray) / ( $long + 1 );
   For( $i=0; $i<$iend; $i++){
       For( ; $a<=$end; $a++){
           $array[$i] = $array[$i].$myarray[$a];
       }
       $end = $end + $long + 1;
   }
 
   return $array;
}
function getDTMF($term, $i) {
    global $agi;
    for($x=1;$x<$i;$x++) {
        unset($res);
        $res = $agi->agi_getdtmf(1,10000,$term,$prompt=FALSE);
        $agi->conlog("Res: " . $res[0]);
        if($res[0] == "") {
            break;
        }
        if($res[0] != "") {
            $result1 .= $res[0];
            //$agi->conlog("Result var: " . $result1);
        }
        $agi->conlog("Result var: " . $result1);
        $agi->conlog("Channel: " . $agi->request["agi_channel"]);
        $status = $agi->agi_channel_status($agi->request["agi_channel"]);
        $agi->conlog("Status code: " . $status["status"]);
        $agi->conlog("Description: " . $status["description"]);
        if($status["description"] != "Line is up") {
            exit();
        }
    }
    return $result1;
}
?>
    
    
More information about the asterisk-users
mailing list