[英]Asterisk Server Pass Variable from Dialplan to AGI Script
我的撥號方案是這樣的
[dial-plan]
exten => s,1,Answer()
exten => s,n,Noop(exten = ${EXTEN}
exten => s,n,Macro(dumpvars)
exten => s,n,Macro(record-enable)
exten => s,n,AGI(success.php)
exten => i,1,Noop(REASON = ${REASON})
exten => i,n,Macro(dumpvars)
exten => i,n,AGI(faile.php)
exten => failed,1,Noop(REASON = ${REASON})
exten => failed,n,Macro(dumpvars)
exten => failed,n,AGI(faile.php)
我想從faile.php調用的地方捕獲,它可以從failed
或從i
調用。 我怎么檢查這個
我需要這樣做是faile.php
if($some_var == 1){
//Invalid
}
elsif($some_var == 2){
//Failed
}
將使用一些標准參數調用agi,包括被調用的擴展(在您的情況下,將是i
或failed
)。 確保您正在解析傳遞給腳本的參數(通過stdin)!
在腳本中使用phpagi.php ,它為AGI提供所有必需的解析。
如果我正確理解了您的問題,您需要將變量傳遞給PHP AGI腳本。 這是怎么做的:
exten => i,n,AGI(faile.php,invalid)
exten => failed,n,AGI(faile.php,failed)
然后,您的PHP AGI腳本應如下所示:
#!/usr/bin/php -q
<?php
set_time_limit(30);
//load PHP AGI
require('phpagi/phpagi.php');
error_reporting(E_ALL);
$agi = new AGI();
$status = $argv[1];
if($status == "invalid")
{
// invalid
} else
{
// failed
}
?>
這是我用php-agi.php實現的方法
<?php
require_once "phpagi.php";
require_once "phpagi-asmanager.php";
$astman = new AGI();
$astman->set_variable('CallState','failed');
?>
<?php
require_once "phpagi.php";
require_once "phpagi-asmanager.php";
$astman = new AGI();
$astman->set_variable('CallState','success');
?>
<?php
require_once "phpagi.php";
require_once "phpagi-asmanager.php";
$astman = new AGI();
$call_state = agi_get_var('CallState');
if($call_state == "success"){
//call was success
}
elseif($call_state == "failed"){
//call was failed
}
?>
在撥號方案中
exten => _*999*.,1,Answer()
exten => _*999*.,n,Set(var1=1)
exten => _*999*.,n,AGI(test.php,${var1})
在PHP中
<?php
require('phpagi.php');
$agi = new AGI();
$agi->say_digit($argv[1]);
$agi->hangup();
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.