[Asterisk-Users] PHP/AGI Problem

Matthew Boehm mboehm at cytelcom.com
Wed May 25 11:30:32 MST 2005


You using phpagi v2? Some of your functions are built in I believe.

None of my AGI's loop but if someone hangs up in the middle of script
execution the script dies. I'm almost 99% sure of that.

-Matthew

Jon Farmer wrote:
> 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;
> }
>>
>
>
> _______________________________________________
> Asterisk-Users mailing list
> Asterisk-Users at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-users
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users





More information about the asterisk-users mailing list