List, I finally decided to break down & start playing with AGI scripts, but for the life of me, I can't figure out what I am doing wrong. Below is a super simple script to run a query in mysql to see how many call records there are for the extension calling in, then print the total in the CLI. This is all I get on the CLI: -- Executing AGI("SIP/216-0baa", "test.php") in new stack -- Launched AGI Script /var/lib/asterisk/agi-bin/test.php -- AGI Script test.php completed, returning 0 -- Executing Hangup("SIP/216-0baa", "") in new stack Here is the script: #!/usr/bin/php -q <?php ob_implicit_flush(false); set_time_limit(6); $stdin = fopen("php://stdin","r"); $stdout = fopen('php://stdout', 'w'); function read() { global $stdin, $debug; $input = str_replace("\n", "", fgets($stdin, 4096)); return $input; } function connect_db() { $database="asteriskcdrdb"; include("./common.php"); include("./dbconnect.php"); } // 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 == "") || ($env == "\n")) { break; } } // main program $clid = $agi[callerid]; connect_db(); $query1 = "SELECT * FROM cdr WHERE dst = '$clid' "; $query_result1 = @mysql_query($query1); $row_count = mysql_num_rows($query_result1); $row1 = @mysql_fetch_array ($query_result1); fputs($stdout,"There have been\n"); fputs($stdout,"$row_count calls made\n"); fflush($stdout); fclose($stdin); fclose($stdout); exit; ?> There are no debug errors and the query is going through just fine... and yes, I chmod 755. Does anyone have a clue what I am doing wrong? Thanks, bp -------------- next part -------------- An HTML attachment was scrubbed... URL: lists.digium.com/pipermail/asterisk-users/attachments/20061218/c0d93d76/attachment.htm
William Piper wrote:> List, > > I finally decided to break down & start playing with AGI scripts, but > for the life of me, I can't figure out what I am doing wrong. > > Below is a super simple script to run a query in mysql to see how many > call records there are for the extension calling in, then print the > total in the CLI. > > This is all I get on the CLI: > -- Executing AGI("SIP/216-0baa", "test.php") in new stack > -- Launched AGI Script /var/lib/asterisk/agi-bin/test.php > -- AGI Script test.php completed, returning 0 > -- Executing Hangup("SIP/216-0baa", "") in new stack > > > Here is the script: > #!/usr/bin/php -q > <?php > ob_implicit_flush(false); > set_time_limit(6); > $stdin = fopen("php://stdin","r"); > $stdout = fopen('php://stdout', 'w'); > > function read() { > global $stdin, $debug; > $input = str_replace("\n", "", fgets($stdin, 4096)); > return $input; > } > function connect_db() { > $database="asteriskcdrdb"; > include("./common.php"); > include("./dbconnect.php"); > } > > // 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 == "") || ($env == "\n")) { > break; > } > } > > // main program > $clid = $agi[callerid]; > connect_db(); > > $query1 = "SELECT * FROM cdr WHERE dst = '$clid' "; > $query_result1 = @mysql_query($query1); > $row_count = mysql_num_rows($query_result1); > $row1 = @mysql_fetch_array ($query_result1); > > fputs($stdout,"There have been\n"); > fputs($stdout,"$row_count calls made\n"); > > fflush($stdout); > fclose($stdin); > fclose($stdout); > exit; > ?> > > There are no debug errors and the query is going through just fine... > and yes, I chmod 755. > Does anyone have a clue what I am doing wrong? > > Thanks, > > bp >Hi, to see debug output for AGI's, you *must* be connected to the first Ast terminal. So start Asterisk like 'asterisk -cvvvvvvvvvvvvvv', then you will see output from your AGI. -- thanks, yusuf -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
Does the script run from command-line? Without taking a close look at this, the include statements in the function body of connect_db look potentially messy. Also, any output to stdout is interpreted by asterisk as a command, so those fputs statements would be a problem -- do fputs($stdout,"VERBOSE \"There have been\"\n"); fputs($stdout,"VERBOSE \"$row_count calls made\"\n"); instead. William Piper wrote:> List, > > I finally decided to break down & start playing with AGI scripts, but > for the life of me, I can't figure out what I am doing wrong. > > Below is a super simple script to run a query in mysql to see how many > call records there are for the extension calling in, then print the > total in the CLI. > > This is all I get on the CLI: > -- Executing AGI("SIP/216-0baa", "test.php") in new stack > -- Launched AGI Script /var/lib/asterisk/agi-bin/test.php > -- AGI Script test.php completed, returning 0 > -- Executing Hangup("SIP/216-0baa", "") in new stack > > > Here is the script: > #!/usr/bin/php -q > <?php > ob_implicit_flush(false); > set_time_limit(6); > $stdin = fopen("php://stdin","r"); > $stdout = fopen('php://stdout', 'w'); > > function read() { > global $stdin, $debug; > $input = str_replace("\n", "", fgets($stdin, 4096)); > return $input; > } > function connect_db() { > $database="asteriskcdrdb"; > include("./common.php"); > include("./dbconnect.php"); > } > > // 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 == "") || ($env == "\n")) { > break; > } > } > > // main program > $clid = $agi[callerid]; > connect_db(); > > $query1 = "SELECT * FROM cdr WHERE dst = '$clid' "; > $query_result1 = @mysql_query($query1); > $row_count = mysql_num_rows($query_result1); > $row1 = @mysql_fetch_array ($query_result1); > > fputs($stdout,"There have been\n"); > fputs($stdout,"$row_count calls made\n"); > > fflush($stdout); > fclose($stdin); > fclose($stdout); > exit; > ?> > > There are no debug errors and the query is going through just fine... > and yes, I chmod 755. > Does anyone have a clue what I am doing wrong? > > Thanks, >