首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Asterisk服务器将变量从Dialplan传递到AGI脚本

Asterisk服务器将变量从Dialplan传递到AGI脚本
EN

Stack Overflow用户
提问于 2012-07-12 17:01:58
回答 5查看 14.6K关注 0票数 3

我的拨号方案是这样的

代码语言:javascript
复制
[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

代码语言:javascript
复制
if($some_var == 1){
     //Invalid
}
elsif($some_var == 2){
    //Failed
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-06 16:43:31

下面是我如何使用php-agi.php实现相同的功能

failed.php (如果调用失败将执行)

代码语言:javascript
复制
<?php
    require_once "phpagi.php";
    require_once "phpagi-asmanager.php";

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

?>

success.php (如果调用成功,将执行)

代码语言:javascript
复制
<?php
    require_once "phpagi.php";
    require_once "phpagi-asmanager.php";

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

?>

hangup.php (如果调用失败或成功,将在调用结束时执行)

代码语言:javascript
复制
<?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
    }
?>
票数 0
EN

Stack Overflow用户

发布于 2012-07-15 17:46:06

agi将使用一些标准参数来调用,包括case from扩展(在您的示例中,将是ifailed)。确保解析传递给脚本的参数(通过stdin)!

票数 1
EN

Stack Overflow用户

发布于 2012-07-17 03:56:48

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11448366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档