簡體   English   中英

從撥號方案到AGI腳本的星號服務器傳遞變量

[英]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,包括被調用的擴展(在您的情況下,將是ifailed )。 確保您正在解析傳遞給腳本的參數(通過stdin)!

在腳本中使用phpagi.php ,它為AGI提供所有必需的解析。

或者參見http://www.voip-info.org/wiki/view/Asterisk+AGI+php上的示例

如果我正確理解了您的問題,您需要將變量傳遞給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實現的方法

failed.php(如果調用失敗將執行)

<?php
    require_once "phpagi.php";
    require_once "phpagi-asmanager.php";

    $astman = new AGI();
    $astman->set_variable('CallState','failed');

?>

success.php(如果調用成功將執行)

<?php
    require_once "phpagi.php";
    require_once "phpagi-asmanager.php";

    $astman = new AGI();
    $astman->set_variable('CallState','success');

?>

hangup.php(如果調用失敗或成功,將在調用結束時執行)

<?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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM