Perl中的SAY DIGITS函数不会从包含在Perl中执行的命令行的STDOUT结果的变量中读取,但当我为变量分配任何值时,它会起作用。
#!/usr/bin/perl
use strict;
my $Hour = qx(date "+%I");
print "SAY DIGITS $Hour ""n";
extensions.conf文件:
exten => 222,1,Answer()
exten => 222,2,AGI(time.sh)
exten => 222,3,Hangup()
代码应该告诉调用者当前时间。就这么简单。
qx(...)
(以及backticks和readpipe
)的返回值通常会附加一个换行符,您通常希望在下游使用该值之前chomp
。
my $Hour = qx(date "+%I");
chomp($Hour);
print "SAY DIGITS $Hour ""n";
您可能需要在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中实现了。