星号 get_variable,在 Perl AGI 中
Asterisk get_variable, in Perl AGI
我对 Asterisk AGI 有点陌生。我正在使用 perl 和 asterisk agi。
我需要使用 Perl asterisk agi 设计一个 IVR 解决方案。
我写了一些代码,它执行得很好。
Perl 代码:-
#!/usr/bin/perl -w
use strict;
use warnings;
use Asterisk::AGI;
my $agi = new Asterisk::AGI;
my $option1 = "";
my $option2 = "";
$agi->exec("Read","option1,recording-201503252343,1,,,");
$option2 = $agi->get_variable("$option1");
$agi->exec("NoOp","$option1");
if($option2 == 1)
{
$agi->exec("Playback","hello-world");
$agi->exec("Goto","English,s,1");
}
星号拨号方案:-
exten => 12345,1,Answer()
exten => 12345,2,AGI(agi_new-new.pl)
exten => 12345,n,NoOP(${AGISTATUS})
exten => 12345,n,Hangup()
实际上我在代码中所做的是,我希望用户通过 IVR 拨打分机,其中提示 2 个选项,当 he/she 输入选项时,他必须在 2 个选项之间进行选择我想将该数字存储到一个变量中,以便我对该变量使用条件。
我使用 get_variable 来获取变量,但是当我按下所需的选项时,它会获取 dtmf 输入,但它不会通过命令 get_variable.
存储在变量中
在这方面我需要一点帮助。
如果有人能提供帮助,我们将不胜感激。
$AGI->get_variable() 获取存储在通道数据中的变量。捕获的 DTMF 数字不存储在当前频道的数据中。对于您的情况,您需要使用
$AGI->get_data().
# Wait 3 seconds for press button
my $option1 = $agi->get_data('recording-201503252343',3000,1);
if ($option1 == 1) {
# do something
}
在你的例子中你有错误。定义 $option1
为空。您执行命令 Read
并在 option1
中捕获 DTMF,接下来您想要获取 $option1
的值(空)。要么是 Read
命令示例中的拼写错误(option1
而不是 $option1
),要么是错误的代码,但按预期工作。
我对 Asterisk AGI 有点陌生。我正在使用 perl 和 asterisk agi。
我需要使用 Perl asterisk agi 设计一个 IVR 解决方案。
我写了一些代码,它执行得很好。
Perl 代码:-
#!/usr/bin/perl -w
use strict;
use warnings;
use Asterisk::AGI;
my $agi = new Asterisk::AGI;
my $option1 = "";
my $option2 = "";
$agi->exec("Read","option1,recording-201503252343,1,,,");
$option2 = $agi->get_variable("$option1");
$agi->exec("NoOp","$option1");
if($option2 == 1)
{
$agi->exec("Playback","hello-world");
$agi->exec("Goto","English,s,1");
}
星号拨号方案:-
exten => 12345,1,Answer()
exten => 12345,2,AGI(agi_new-new.pl)
exten => 12345,n,NoOP(${AGISTATUS})
exten => 12345,n,Hangup()
实际上我在代码中所做的是,我希望用户通过 IVR 拨打分机,其中提示 2 个选项,当 he/she 输入选项时,他必须在 2 个选项之间进行选择我想将该数字存储到一个变量中,以便我对该变量使用条件。 我使用 get_variable 来获取变量,但是当我按下所需的选项时,它会获取 dtmf 输入,但它不会通过命令 get_variable.
存储在变量中在这方面我需要一点帮助。
如果有人能提供帮助,我们将不胜感激。
$AGI->get_variable() 获取存储在通道数据中的变量。捕获的 DTMF 数字不存储在当前频道的数据中。对于您的情况,您需要使用 $AGI->get_data().
# Wait 3 seconds for press button
my $option1 = $agi->get_data('recording-201503252343',3000,1);
if ($option1 == 1) {
# do something
}
在你的例子中你有错误。定义 $option1
为空。您执行命令 Read
并在 option1
中捕获 DTMF,接下来您想要获取 $option1
的值(空)。要么是 Read
命令示例中的拼写错误(option1
而不是 $option1
),要么是错误的代码,但按预期工作。