[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