【问题标题】:Asterisk get_variable, in Perl AGI星号 get_variable,在 Perl AGI 中
【发布时间】:2015-06-13 02:18:39
【问题描述】:

我对 Asterisk AGI 并不陌生。我正在使用带有星号 agi 的 perl。

我需要使用 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 个选项,当他/她输入我要存储的选项时,他必须在 2 个选项之间进行选择数字转换为变量,以便我对该变量使用条件。 我使用 get_variable 来获取变量,但是当我按下所需的选项时,它会获取 dtmf 输入,但它没有通过命令 get_variable 存储在变量中。

这方面我需要一点帮助。

如果有人能提供帮助,我们将不胜感激。

【问题讨论】:

  • 我对星号一无所知,但是 Perl 在双引号中插入变量。因此,"$option" 是相同的 '' . $option - 也许你想要 '$option' 代替?单引号不会插入。
  • 亲爱的仍然有相同的输出。它不适合我。

标签: perl asterisk


【解决方案1】:

$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),要么是错误的代码,但按预期工作。

【讨论】:

  • ohhhhhhh 上帝!.. 真的很感谢你的回答兄弟.. 它为我工作。非常感谢:)
  • 好的,请给我一些带有 get_variable 和 Read 的示例代码,因为它们仍然不适合我,或者我不知道如何使用它们。我真的很感谢你。
  • 我从未将get_variable 用于Read。无法提供示例代码。
  • ok.. 所以我们使用 get_variable.. 我看到了很多示例代码,他们使用 get_variable 然后读取。 ' $AGI->exec("Read","\option,custom/inquiry-tocheck,1,,,\""); $option = $AGI->get_variable(option); '
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多