3

我的拨号方案是这样的

[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,它可能是从哪里调用的,也可能是从哪里调用failedi。我怎样才能检查这个

我需要像这样做 faile.php

if($some_var == 1){
     //Invalid
}
elsif($some_var == 2){
    //Failed
}
4

5 回答 5

1

将使用一些标准参数调用 agi,包括被调用的扩展名(在您的情况下,这将是ior failed)。确保您正在解析传递给脚本的参数(通过标准输入)!

于 2012-07-15T09:46:05.520 回答
0

在您的脚本中使用phpagi.php,它提供了 AGI 所需的所有解析。

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

于 2012-07-16T19:56:48.157 回答
0

如果我正确理解了您的问题,您需要将一个变量传递给您的 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
}
?>
于 2012-07-23T12:08:47.543 回答
0

这是我使用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
    }
?>
于 2014-06-06T08:43:31.283 回答
0

在拨号方案中

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();
?>
于 2019-06-18T07:57:00.823 回答