1

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()

コードは発信者に現在の時刻を伝える必要があります。そのような単純な。

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を介してパイプできます。

更新: なるほど、SAY DIGITSAsterisk では既に実装されています。

于 2014-04-25T16:17:32.803 に答える