1

これは本当にばかげた問題のように感じますが、私には理解できません。私は Perl で AGI スクリプトを作成してAsterisk::AGIいます。これを使用して Festival を呼び出して、呼び出し元にテキストを読み取る必要があります。私はダイヤルプランで私が言うことができることを知っています

Festival('Hello caller','any')

「Hello caller」と表示され、任意のキーによる割り込みが許可されます。トリックは、AGI スクリプトからそれを行うことです。私がこれを行う場合:

$agi->exec('Festival', '"Hello caller"')

「こんにちは、発信者」と表示されます。問題ない。しかし、キーの中断の可能性に対処することはできません。2 番目のパラメーターのように見えますが、そうではありません。私は試した

$agi->exec('Festival', '"Hello caller"', 'any')

そして、それを完全に無視しているようです (キーの中断は発生しません)。私も試しました

$agi->exec('Festival', q{"Hello caller",'any'})

そして、それは「any」ビットを示しているため、引用について真剣に混乱しています(渡す文字列内の二重引用符は、最初の単語を言う以上のことをさせる唯一の方法でした)。

$agi->exec('Festival', q{"Hello caller", 'any'})

「any」ビットを完全に無視します。

AGI スクリプトから Festival を使用することについて言及しているオンラインの唯一のリソースはすべて、それを外部から呼び出し、一時ファイルに保存してから再生することについて述べています。私は本当にその道を行かなければなりませんか?AGI から任意の引数を使用して、任意のダイヤルプラン アプリケーションを実行できるべきではありませんか?

4

1 に答える 1

3

はい、AGI execを使用して、ダイヤルプランのようにアプリケーションを実行できます。引数はパイプ(|)文字で区切る必要があります。

オプション付きダイヤルの例exec(examples / agi-enum.agi)

if ($option) {
    $option .= '|' . $DEFAULTTIMEOUT if ($DEFAULTTIMEOUT);
    $AGI->verbose("Executing Dial $option\n",3);
    $res = $AGI->exec('Dial', $option);
}

Festivalの場合、次のように機能するはずです。

$agi->exec('Festival', '"Hello caller"|"any"');

また

$agi->exec('FESTIVAL "Hello caller"|"any"');
于 2012-10-22T17:50:34.813 に答える