2016-05-09 7 views
0

私はSIP UAを実装しようとしています。そのために、AsteriskコンソールをSIPのデバッグモードで調べました。別の内線番号(B)から1つの内線番号(A)を呼び出そうとしました。アスタリスクSIPメッセージフローを簡素化したい

ダイジェスト認証の部分を含め、最初のメッセージがRINGINGメッセージまで流れていたことが分かりました。 これらは次のとおりです。

前後一連のメッセージが続く
(B) >--->INVITE-----[Asterisk] 

401 Unauthorized with NONCE 
    ACK 
    INVITE with correct Digest 
    TRYING 
    TRYING 
    RINGING 

鳴っ電話(A)がピックアップされた後、私はメッセージの以下の交換を参照してください。

(A) >----> OK >-----> [Asterisk] 

    (A) <----< ACK<-----< [Asterisk] 

         [Asterisk] >----- OK ------> (B) 

    (A) >---(re)INVITE--> [Asterisk] 

         [Asterisk] <-----ACK-------< (B) 

         [Asterisk] >---(re)INVITE--> (B) 

    (A) >---TRYING -----> [Asterisk] 

         [Asterisk] <-----OK--------< (B) 

    (A) >-----OK--------> [Asterisk] 

    (A) <----ACK--------< [Asterisk] 

私は、(B)側のUAの一部を書き込み、事前にAのためのSDPを知っているし、私のコントロールであるBのための SDPを生成することができています。私のコールフローは常にBからAになります。 (B)からのすべてのメッセージを制御できます。 上記のメッセージフローをどのように減らすことができますか?また、最初のSDPがRINGINGまで交換されたあと、多くのメッセージの必要性を十分に理解していません。それとも彼らは?

答えて

1

アスタリスクはSIP standart(rfc)で説明したようになります。

招待状を削除することはできません。あなたができることは、初期のメディアを無効にし、Directmediaを有効にする/ sdpの部分を無視することだけです。

+0

真。ダイレクトメディアを無効にすると、多くのメッセージが保存されます。私の場合は、アスタリスクをループの中に残して、オプションが意味をなさないようにしたいと思います。私は早期メディアを無効にすることについて確信しています、私はそれを読むでしょう。 SDPを無視すると、その意味が分かりません。エンドポイントはメディアの機能やポートなどをどのように知っていますか? – Sam

+0

完全準拠のUAを使用する場合は、RFCに記載されているすべてのメッセージをサポートする必要があります。それははるかにあなたが表示されます。あなたが "収縮した" UAを望むなら、1つのコーデック、固定ポート、SDPを無視して作業することができます – arheops

+0

私に必要なのは、トランスポートとしてUDPを持つNodeアプリケーションサーバを通してAsteriskにSIPを呼び出すメカニズムです。基本的なINVITEをサポートする必要があります。それがうまくいくと、INVITEにもう少しオプションを追加できます。本格的なSIP UAを構築するつもりはない。 sip、js、jssip、sipml5などのJSライブラリはすべて、転送としてWebソケットを使用します。私が手にしている限られた仕事のために彼らはあまりにも肥大しているだけでなく、 – Sam