如何将参数从拨号方案发送到 Perl 子例程 AGI 并将各自 returns 发送回拨号方案

How to send arguments from dialplan to Perl subroutines AGI and send respectives returns back to dialplan

我正在使用 Asterisk :: AGI 模块与 Asterisk 1.8 交互,但我没有看到使用 perl 子例程的示例。我想连接 Web 服务并更好地组织 AGI,最好使用子例程而不是在 if-else 块内执行所有代码,从拨号计划发送参数并获取这些子例程的 return。

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

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})

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