1

The SAY DIGITS function in Perl does not read from a variable that contains the STDOUT result from a command line executed in Perl, but it works when i assign any value to the variable.

#!/usr/bin/perl
use strict;

my $Hour = qx(date "+%I"); 

print "SAY DIGITS $Hour \"\"\n";

The extensions.conf file:

exten => 222,1,Answer()
exten => 222,2,AGI(time.sh)
exten => 222,3,Hangup()

The code should tell the caller the current time. simple as that.

4

2 回答 2

2

qx(...)( 和反引号的返回值readpipe通常附加一个换行符,并且您通常希望chomp在下游使用它之前获得该值。

my $Hour = qx(date "+%I"); 
chomp($Hour);

print "SAY DIGITS $Hour \"\"\n";
于 2014-04-25T16:13:53.693 回答
0

您可能想在 CPAN 上使用Lingua::ENG::Numbers模块。

Lingua::ENG::Numbers 将数值转换为对应的英文字符串。

以下是如何使用它的示例:

#!/usr/bin/perl
use Lingua::ENG::Numbers;
my $hour       = 0 + qx(date "+%I"); 
my $minute     = 0 + qx(date "+%M");
my $hour_str   = "";
my $minute_str = "";


if(my $o = Lingua::ENG::Numbers->new($hour)) {
    $hour_str = $o->get_string;
};
if(my $o = Lingua::ENG::Numbers->new($minute)) {
    $minute_str = $o->get_string;
};

print "It's $hour_str $minute_str";

您将获得类似的输出It's Seven Seventeen(这是我所在时区的时间)。

如果您需要从中获取音频,您可以通过espeak进行管道传输,espeak是英语和其他语言的语音合成器。

更新:啊,我明白了,所以SAY DIGITS已经在 Asterisk 中实现了。

于 2014-04-25T16:17:32.803 回答