Shamus,

The problem is that the standard AstLinux PHP is the cgi version, so a script...
--
#!/usr/bin/php
<?php
  echo "hello\n"
?>
--
yields...
--
X-Powered-By: PHP/5.2.13
Content-type: text/html

hello
--

no doubt the extra three lines is causing you problems.

You may find a cleaver approach to work around this.

If you are well versed with bash scripting, that would be a another approach.  
Here is an example...

Weather Asterisk AGI:
http://lonnie.abelbeck.com/astlinux/info/weather.php

It shouldn't be too hard to rewrite your PHP AGI script using the above 
template.

Lonnie


On Jul 20, 2010, at 8:47 PM, Shamus Rask wrote:

> I've transferred over my old PHP script onto my AstLinux install and it is 
> not working (worked perfectly on Ubuntu/Asterisk). I'm not sure where to 
> begin troubleshooting it--where would I find error messages/logs?
> 
> Can anyone see any obvious mistakes in the following?
> --> called in extensions.conf with: exten => *10,n,AGI(features.agi)
> 
> features.agi
> -----------------
> #!/usr/bin/php -q
> <?php
> # turn off output buffering
> ob_implicit_flush(false);
> # turn of error reporting
> error_reporting(0);
> # create file handles if needed 
> if (!defined('STDIN')) 
> { 
>    define('STDIN', fopen('php://stdin', 'r')); 
> } 
> if (!defined('STDOUT')) 
> { 
>    define('STDOUT', fopen('php://stdout', 'w')); 
> } 
> if (!defined('STDERR')) 
> { 
>    define('STDERR', fopen('php://stderr', 'w')); 
> } 
> # retrieve all AGI variables from Asterisk 
> while (!feof(STDIN)) 
> { 
>    $temp = trim(fgets(STDIN,4096)); 
>    if (($temp == "") || ($temp == "\n")) 
>    { 
>        break; 
>    }
>    $s = split(":",$temp); 
>    $name = str_replace("agi_","",$s[0]); 
>    $agi[$name] = trim($s[1]); 
> } 
>                                              
> fwrite(STDOUT,"DATABASE GET global ec500\n");
> fflush(STDOUT);
> $ec500 = trim(fgets(STDIN,4096));
> $ec500 = substr(strrchr($ec500,"("),1,-1);
>                                              
> fwrite(STDOUT,"DATABASE GET global dnd\n");
> fflush(STDOUT);
> $dnd = trim(fgets(STDIN,4096));
> $dnd = substr(strrchr($dnd,"("),1,-1);
>                                              
> #  
> function push2cisco($ip, $uri)
> {
>    $auth = base64_encode("cisco:cisco");
>    $xml  = "<CiscoIPPhoneExecute><ExecuteItem 
> Priority=\"0\"URL=\"".$uri."\"/></CiscoIPPhoneExecute>";
>    $xml  = "XML=".urlencode($xml);
>                           
>    $post  = "POST /CGI/Execute HTTP/1.0\r\n";
>    $post .= "Host: $ip\r\n";
>    $post .= "Authorization: Basic $auth\r\n";
>    $post .= "Connection: close\r\n";
>    $post .= "Content-Type: application/x-www-form-urlencoded\r\n";
>    $post .= "Content-Length: ".strlen($xml)."\r\n\r\n";
>                                              
>    $fp = fsockopen ( $ip, 80, $errno, $errstr, 30);
>    if(!$fp){ echo "$errstr ($errno)<br>\n"; }
>    else
>    {
>       fputs($fp, $post.$xml);
>       flush();
>       while (!feof($fp))
>       {
>          $response .= fgets($fp, 128);
>          flush();
>       }
>    }
>    return $response;
> }
>                                                       
> function push2aastra($phone,$data)  
> {  
>    $xml = "xml=".$data;  
>                                                        
>    $post = "POST / HTTP/1.1\r\n";  
>    $post .= "Host: $phone\r\n";  
>    $post .= "Referer: pbx.lan\r\n";  
>    $post .= "Connection: Keep-Alive\r\n";  
>    $post .= "Content-Type: text/xml\r\n";  
>    $post .= "Content-Length: ".strlen($xml)."\r\n\r\n";  
>                                                         
>    $fp = @fsockopen ( $phone, 80, $errno, $errstr, 5);  
>    if($fp) 
>    {  
>      fputs($fp, $post.$xml);  
>      flush(); 
>      fclose($fp); 
>    }  
> }  
>                                                              
> $cisco = "SEP001B0CACCB85.lan";
> $aastra = "9143i.lan";
>                                                               
> ##############################  
> $xml = "<AastraIPPhoneExecute>\n"; 
> if ($ec500=="true" && $dnd=="true") {
>   $uri = "http://miniserver.lan/cisco/push_notify.php?ec500=true;dnd=true";;
>   $xml .= "<ExecuteItem URI=\"Led: prgkey5=slowflash\"/>\n";
>   $xml .= "<ExecuteItem URI=\"Led: prgkey6=slowflash\"/>\n";
> } elseif ($ec500=="true" && $dnd=="false") {
>   $uri = "http://miniserver.lan/cisco/push_notify.php?ec500=true;dnd=false";;
>   $xml .= "<ExecuteItem URI=\"Led: prgkey5=slowflash\"/>\n";
>   $xml .= "<ExecuteItem URI=\"Led: prgkey6=off\"/>\n";
> } elseif ($ec500=="false" && $dnd=="true") {
>   $uri = "http://miniserver.lan/cisco/push_notify.php?ec500=false;dnd=true";;
>   $xml .= "<ExecuteItem URI=\"Led: prgkey5=off\"/>\n";
>   $xml .= "<ExecuteItem URI=\"Led: prgkey6=slowflash\"/>\n";
> } else {
>   $uri = "Init:AppStatus";
>   $xml .= "<ExecuteItem URI=\"Led: prgkey5=off\"/>\n";
>   $xml .= "<ExecuteItem URI=\"Led: prgkey6=off\"/>\n";
> }
> $xml .= "</AastraIPPhoneExecute>\n";
>                                                                               
>         
> push2aastra($aastra, $xml);  
> push2cisco($cisco, $uri);
> ?>
> 
> 
> I use PHP to drive my aastra phones.   I go both ways with them.  im using
> mini-httpd so that I can have menus on the phones.. and I also use PHP
> through AGI to do push to the phones for pop up messages, lights, etc..
> 
> 
> 
> There are a lot of examples on aastra's site for php with aastra phones..
> 
> 
> 
> -Christopher
> 
> 
> 
> From: Shamus Rask [mailto:[email protected]]
> Sent: Monday, July 19, 2010 8:40 AM
> To: astlinux-users
> Subject: [Astlinux-users] suggestions for AGI scripts
> 
> 
> 
> In the past, I have install Asterisk on a full-fledged Ubuntu-based server.
> This has allowed me to create several AGI scripts that I use for passing XML
> to my Aastra phones to turn on/off/blink lights for different event
> notifications. I would like to enable similar functionality on my AstLinux
> install, but recognized that not all scripting languages are present.
> 
> 
> 
> Can anyone suggest the best way to approach AGI functionality in AstLinux?
> Are there any examples out there, ideally with an XML-push?
> 
> 
> 
> many thanks,
> 
>  Shamus
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- 
> http://p.sf.net/sfu/sprint-com-first_______________________________________________
> Astlinux-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/astlinux-users
> 
> Donations to support AstLinux are graciously accepted via PayPal to 
> [email protected].


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
Astlinux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/astlinux-users

Donations to support AstLinux are graciously accepted via PayPal to 
[email protected].

Reply via email to