【问题标题】:How to send arguments from dialplan to Perl subroutines AGI and send respectives returns back to dialplan如何将参数从拨号计划发送到 Perl 子例程 AGI 并将各自的返回值发送回拨号计划
【发布时间】:2019-12-11 21:05:39
【问题描述】:

我正在使用 Asterisk :: AGI 模块与 Asterisk 1.8 进行交互,但我没有看到使用 perl 子例程的示例。我想连接 Web 服务并更好地组织 AGI,最好使用子程序代替在 if-else 块中执行所有代码,从 dialplan 发送 args 并获取这些子程序的返回。

我知道使用这个模块获取和设置变量,但我想知道是否有这样的东西:

use Asterisk::AGI;

my $AGI = new Asterisk::AGI;

sub some_subroutine {

    my ($param1, $param2, param3) = @ARGV;

    # do something with parameters

    $agi_data = something_done_with_parameters;

    return $AGI->set_variable("agi_data", $agi_data);
}

在拨号方案上下文中:

[simple_interact]
exten = s,1,AGI(script.pl, some_subroutine, param1, param2, param3)
 same = n,NoOp(${agi_data})

【问题讨论】:

  • 好的,问题是什么?
  • @arheops 有没有办法使用 Perl AGI 模块从拨号计划向函数发送参数并返回拨号计划的值?我不知道如何在 perl AGI 中使用子程序。
  • 当然。网上有很多例子。这就是你想知道的全部吗?
  • @arheops 是的,就是这样。我只能找到带有条件语句的 Perl AGI,而不是使用从拨号计划接收参数的函数。你能给我看看这些样本吗?
  • 等等。那么您现在是在问如何在 perl 脚本中使用函数吗?这是通常的方式,并且在每本关于 perl 的书中都有描述。

标签: perl asterisk agi


【解决方案1】:

似乎没有如何调用一个将函数名称作为参数传递的函数。因此,我发现使用 Perl o PHP 使用 AGI 的一种方法是,我们必须定义一个函数来生成对传递函数标识符和参数的这些函数的动态调用,而不是拥有一个包含各种函数的文件需要通过拨号方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多