【发布时间】: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 的书中都有描述。