5.4. 外観エージェント
本仕様で定義される外観エージェントは, AOR に対して登録された UA のダイアログパッケージ状態エージェントを実装しなければなりません。外観エージェントは, 第 5.2 節で定義された外観ダイアログパッケージ拡張をサポートし, 'shared' Event ヘッダーフィールドパラメータを使用しなければなりません。外観エージェントは, このイベントパッケージの公開とサブスクリプションをサポートしなければなりません。
外観エージェントは, AOR に関連付けられたすべてのダイアログの状態を発見する方法を持たなければなりません。この情報がコールステートフルプロキシまたはバックツーバックユーザーエージェント (B2BUA) から利用できない場合, 外観エージェントは登録イベントパッケージ [RFC3680] を使用して AOR に関連付けられた UA を知り, それらのダイアログイベント状態をサブスクライブできます。外観エージェントは, 状態を再構築するために UA のダイアログイベント状態をサブスクライブすることもできます。その結果, レジストラは登録イベントパッケージをサポートしなければなりません。
RFC 4235 は, ダイアログパッケージ通知が「状態または参加情報が変更されたダイアログの情報のみを含む」ことを推奨しています。本仕様は次のように RFC 4235 を拡張します。外観エージェントは, AOR グループ内の UA に次のイベントが発生したときにダイアログイベント状態通知を送信すべきです:
-
コールが受信, 発信, 応答, または終了される。
-
コールが保留または保留解除される。
-
コールが結合または置換される。
-
外観番号が予約または解放される。
外観エージェントは, すべての着信コールに外観番号を割り当て, 共有グループ AOR にサブスクライブしている UA に即座に通知を送信しなければなりません。コールが別のコールを置き換える場合を除いて, 新しい外観番号が割り当てられます。この場合, 置き換えられたコールの外観番号が使用されます。
外観エージェントは, リクエストが公開されたとき, または事前の公開なしに INVITE が送信されたときに, 発信コールに外観番号を割り当てなければなりません。UA が発信コールの外観を占有しようとする試みを公開するとき, または UA がコンサルテーションコールを公開するとき (つまり, 公開に外観番号が含まれていない), 外観エージェントはその UA の外観番号を予約します。予約された外観番号が一定期間 (推奨値: 30 秒) 内に使用されない場合, 外観エージェントは外観番号を解放して別の UA に割り当てることができるようにします。
グループの着信コールが到着し, 利用可能な外観番号がない場合, 着信コールは依然としてすべてのサブスクライブ済み UA にフォークされますが, 通知に外観番号は含まれません。また, コールが UA に到着したときに, Alert-Info ヘッダーフィールドに外観パラメータはありません。グループ内のすべてのサブスクライブ済み UA が着信コールを拒否した場合, 通常のコール処理が行われます (おそらくボイスメールまたは別の AOR への転送)。
外観番号の割り当ては外観エージェントによって管理されます。これは UA によって直接観察できません。ただし, 共有グループ AOR にサブスクライブしている UA は, 外観エージェントによって外観番号が割り当てられるか解放されるたびに通知を受け取ります。
外観エージェントは, UA によって作成された新しいダイアログに外観番号を割り当て, 外観番号の競合を解決する責任があります。2 つの UA が同時に同じ外観番号を占有しようとすると, 競合が発生する可能性があります。外観エージェントは, 短期間内に同じ外観番号を持つ UA から公開を受信することによって競合を検出します。競合が検出されると, 外観エージェントは外観番号を割り当てられる UA の 1 つのみを選択しなければなりません。他の UA は公開に対するエラー応答を受け取ります。どの UA が競合に勝つかを選択する基準は, 外観エージェントポリシーの決定です。1 つのアプローチは, 最初に到着した公開を選択することです。外観エージェントは, Via ヘッダーフィールドの SIP タイムスタンプを調べるか, 他のローカル処理タイムスタンプに基づいて, どの公開が最初に到着したかを判断できます。