web-dev-qa-db-ja.com

通話が確立される前に音声を送信するようにアスタリスクを構成する方法

リモートパーティが実際にピックアップする前に、レシーバーからのオーディオを含むRTPパケットを送信するようにアスタリスクを構成することは可能ですか?

これは、セットアップに合格する必要があるVoIPコンプライアンステストに必要なようです。彼らはシミュレータを使用してこれをテストし、私が相手に電話をかけると、OKを送信せずに受信機を取り上げます。反対側から音声は聞こえますが、相手の声は聞こえません。私はdirectmediasetupprogressinbandprematuremediaを調査しましたが、どれも私が必要としていることを達成していません。それはアスタリスクでも可能ですか?

環境:

アスタリスクはSIP=トランクに登録され、ハードウェアSIP電話はAsteriskに登録されます。発信コールはSIPトランクを経由します。アスタリスクバージョン:1.8.11。

8
Nikolay Elenkov

初期のメディアはアスタリスクで可能ですが、特定の状況で、関係するすべてのデバイスとサービスの協力/サポートによってのみ可能です。一部の電話やサービスプロバイダーは、初期のメディアをサポートしていません。初期音声と初期DTMFのサポートは異なる場合があります。

SIPアスタリスクに登録された電話があり、それが外部番号に電話をかけます。アスタリスクは、別のSIPトランクを介してその番号にダイヤルします。これらは2つの別々のコールレッグ。アスタリスクは、初期のメディアを発信者に再生し(たとえば、カスタムの着信音や保留音)、外部のパーティからSIPトランクを介して初期のメディアを受信できます。ただし、標準のDial()ステートメントは、リモートパーティが応答すると自動的にAnswer()し、コールレッグをブリッジします。

この通常望ましい動作を回避し、Answer()を使用せずにコールレッグをブリッジしたいようです。 Dial()アプリケーション を使用すると、「d」または「D」オプションを使用して、通常は自動のAnswer()を延期できます。 Answer()なしでコールレッグをブリッジできるDial()オプションについては知りません。

詳細については、Asterisk wikiを参照してください ディスカッションおよびAsteriskを使用した初期メディアの例

5
roderickm

アスタリスクは使用できません。

一部のデバイスが動作を停止するため、アスタリスクはリバースメディアパスを途中で開くことはありません。一方向の時期尚早なメディアのみを行います。

おそらく、コードを書き換えてこれを変更できます(両方のエンドポイントがこれをサポートする必要があります)が、デフォルトのソースツリーはこれをサポートしていません。

0
arheops

2つの方法があります。 1-183初期メディアを使用します。もう1つの方法は、Answer()アプリケーションを使用することです。

どちらの場合も、メディアはアスタリスク側から送られます。

; 183-セッション進行方法。 
 exten => _X。、1、Progress()
 exten => _X.n、playback(tt-monkeys)
; 200-回答
 exten => _X。、1、Answer()
 exten => _X。、n、playback(tt-monkeys)
 
0
Faheem

メディアパスからアスタリスクを完全に削除しないのはなぜですか? *

directmedia=yes
directrtpsetup=yes
prematuremedia=no ;this does the exact opposite of what everyone assumes it does
progressinband=no

アスタリスクは、SDPで指定された電話のIPアドレスを使用して、招待を反対側に送信します。反対側から183セッションの進行状況が通知されると、アスタリスクから携帯電話に送信され、相手側のIPアドレスがSDPに含まれます。

お使いの携帯電話がそれをサポートしている限り、アスタリスクなしで双方向の初期メディアが邪魔になり、それを台無しにする機会さえあります。

*ええと、アスタリスクは通話の最後に一時的に再び招待されますが、それ以外の場合はまったく表示されません

0
Joe Sniderman