Hi,
ich habe gelesen das es moeglich ist PHP Scripte innerhalb des AGI auszuführen und habe mal versucht folgendes Beispiel auszuführen:
Ein Beispiel aus dem Asterisk Handbuch.. in der commandline habe ich agi debug enabled und bekomme folgende ausgabe:
Mir ist bewusst das ich STDIN auslesen muss bevor ich weitere Commands senden kann, aber wie man sehen kann tut das leider auch nich ;(
php pfad ist /usr/bin/php und die agi-scripts sind ausführbar...
Hat einer ne Idee?
ich habe gelesen das es moeglich ist PHP Scripte innerhalb des AGI auszuführen und habe mal versucht folgendes Beispiel auszuführen:
PHP:
#!/usr/bin/php
<?php
ob_implicit_flush(true);
# 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')); }
while (!feof(STDIN)) {
$temp = fgets(STDIN);
$temp = str_replace("\n","",$temp);
$s = explode(":",$temp);
$agi[$s[0]] = trim($s[1]);
if (($temp == "") || ($temp == "\n")) {
break;
}
}
fwrite(STDOUT,"STREAM FILE hello-world \"\"\n";)
fflush(STDOUT);
$result = trim(fgets(STDIN,4096));
checkresult($result);
function checkresult($res) {
trim($res);
if (preg_match('/^200/',$res)) {
if (! preg_match('/result=(-?\d+)/',$res,$matches)) {
fwrite(STDERR,"FAIL ($res)\n");
fflush(STDERR);
return 0;
}
else {
fwrite(STDERR,"PASS (".$matches[1].")\n");
fflush(STDERR);
return $matches[1];
}
}
else {
fwrite(STDERR,"FAIL (unexpected result '$res')\n");
fflush(STDERR);
return -1;
}
}
?>
Ein Beispiel aus dem Asterisk Handbuch.. in der commandline habe ich agi debug enabled und bekomme folgende ausgabe:
Code:
-- Executing AGI("SIP/user2-08174020", "asterisk-docs.php") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/asterisk-docs.php
AGI Tx >> agi_request: asterisk-docs.php
AGI Tx >> agi_channel: SIP/user2-08174020
AGI Tx >> agi_language: de
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1184187353.50
AGI Tx >> agi_callerid: 102
AGI Tx >> agi_calleridname: User2
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 888
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: default
AGI Tx >> agi_extension: 888
AGI Tx >> agi_priority: 3
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >> 1*CLI>
-- AGI Script asterisk-docs.php completed, returning 0
-- Executing Hangup("SIP/user2-08174020", "") in new stack
== Spawn extension (default, 888, 5) exited non-zero on 'SIP/user2-08174020'
Mir ist bewusst das ich STDIN auslesen muss bevor ich weitere Commands senden kann, aber wie man sehen kann tut das leider auch nich ;(
php pfad ist /usr/bin/php und die agi-scripts sind ausführbar...
Hat einer ne Idee?