INVITE 要求への SIP 応答は、最終または暫定となります。最終応答は、常に信頼性のある形で送信されますが、暫定応答は通常そのような形で送信されません。暫定応答を信頼性のある形で送信する必要がある場合は、PRACK (暫定応答の確認応答) メソッドを使用できます。
始める前に
PRACK をサポートするアプリケーションを開発するには、以下の基準を満たしている必要があります。
- クライアントが PRACK をサポートしていることを示すために、INVITE 要求を送信するクライアントは、Supported ヘッダーまたは Require ヘッダーに 100rel タグを含める必要がある。
- SIP サーブレットは、send() メソッドではなく sendReliably() メソッドを呼び出して応答する必要がある。
このタスクについて
PRACK は、以下の規格で説明されています。
- RFC 3262 (「Session Initiation Protocol (SIP) での暫定応答の信頼性)」)。これは、RFC 3261 (「SIP: Session Initiation Protocol」) を拡張したもので、PRACK およびオプション・タグの 100rel が追加されています。
- JSR 289 (「SIP サーブレット仕様バージョン 1.1」) のセクション 5.7.1 (「信頼性のある暫定応答」)。
手順
- プロキシーとして動作するアプリケーションを開発している場合、アプリケーションが、TO フィールドにタグが含まれていない INVITE 要求に対し、信頼性のある暫定応答を生成し送信するようにします。
- ユーザー・エージェント・クライアント (UAC) として動作するアプリケーションを開発している場合は、以下のアクションを実行します。
- アプリケーションで、発信 INVITE 要求に 100rel タグを追加します。このオプション・タグは、Supported ヘッダーまたは Require ヘッダーのいずれかに含まれている必要があります。
- PRACK 要求を作成し、その要求をユーザー・エージェント・サーバー (UAS) に送信するには、アプリケーションの doProvisionalResponse(...) メソッド内で、着信応答に対して createPrack() メソッドを呼び出します。コンテナーは、RAck ヘッダーを、JSR 289 のセクション 5.7.1 の定義にしたがって処理します。
- UAC として動作するアプリケーションは、UAC が doResponse() メソッドを使用して処理できる、2xx-6xx の最終応答を PRACK で受信します。
- ユーザー・エージェント・サーバー (UAS) として動作するアプリケーションを開発している場合は、以下のアクションを実行します。