Channel: $number
Application: Playback
Data: $outputfilename
着信者が電話に出るとき、最初の 1 つか 2 つの単語を聞き逃します。だから、彼/彼が「こんにちは?または "alo" してから再生を開始します. 呼び出しファイルでそれを行う方法はありますか?
なければ1秒か2秒待ちたいと思います。ここで wait(2) は機能しますか?
使用する
Channel: $number
Application: Playback
Data: beep&silence/2&$outputfilename
そうすれば、おそらく人間には聞こえないビープ音が鳴りますが、確実に rtp プロセスが開始されます。その後、echocancel トレーニングまたは接続プロセスに必要な 2 秒間の待機 (無音ファイル) が行われます。そうすれば、あなたのメッセージは明確になります。
新しいダイヤルプラン コンテキストを作成できます。その中に Wait アプリケーションを追加してから、Palyback を追加します。通話ファイルでは、番号を直接指定するか、Dial(Local/XXX@new-context) 経由でダイヤルすることにより、番号をこの新しいコンテキストに接続できます。
あなたが抱えている問題は、RTP ストリームが完全に「アップ」していないことです。通話が確立されるまで、RTP (サウンド) は送信されません。ですから、すぐに「話し始める」と、言葉を失います。これはダイヤルプラン側の問題です。これは、通話の両端が「出荷音」段階にあることに依存するためです。
を使用してAnswer() ; Wait()
も、VoIP 接続でこの問題が常に解決されるとは限りません。これは、実際にはオーディオ ストリームが移動しないためです。 Wait()
残りのハードウェアが追いつくのを文字通り待っている、セットアップ速度が遅い不機嫌な T1 ライン向けです。
これを回避するには、1 秒または 2 秒 (1 秒で 80% の確率で動作します) の無音を再生するだけです。例えば:
[answering_context]
exten => s,1,Verbose(2,Example of good audio discipline)
same => n, Playback(silence/1)
same => n, Playback(the_real_message_you_want_to_send)
「沈黙」は技術的には「まだ健全」ですが、人間は「沈黙」中にパケットを流しているのか言葉を切り取っているのかわかりません。が再生されるまでthe_real_message_you_want_to_send
に、オーディオ ストリームは完全に安定します。
乾杯!