メインコンテンツまでスキップ

4. 要件と実装

次のセクションでは、要件を詳しく説明し、共有外観機能の実装について説明します。

4.1. 要件

共有外観機能の基本要件は次のように要約できます:

REQ-1: AOR への着信通話は UA のグループに提供される必要があり、そのいずれかが応答できます。

REQ-2: グループ内の各 UA は、この情報をユーザーにレンダリングする目的で、グループ内の他の UA の通話ステータスを知ることができなければなりません。

REQ-3: UA は、安全な方法でグループ内の別の UA のアクティブな通話に参加(ブリッジまたは会議とも呼ばれる)または応答(取得)できる必要があります。

REQ-4: メカニズムは最小限の設定を必要とする必要があります。グループ AOR に対して登録する UA は、グループメンバーの手動設定なしで共有外観グループに参加できる必要があります。

REQ-5: メカニズムは、過度のメッセージトラフィックを導入することなく、多数の外観と多数の UA に対応できる必要があります。

REQ-6: 各通話またはセッション(着信または発信)には、AOR グループ用に管理される管理プールから共通の「外観」番号が割り当てられる必要があります。セッションが終了すると、外観番号はプールに解放され、別の着信または発信セッションで再利用できます。

REQ-7: グループ内の各 UA は、グループのすべての外観のステータスを知ることができなければなりません。

REQ-8: グループ内の UA 間の外観の競合を解決するメカニズムが必要です。このコンテキストでの競合とは、混合されていない、または他の方法で関連付けられていない複数のダイアログに外観番号が関連付けられることを意味します。

REQ-9: メカニズムは、着信セッション要求を受信するすべての UA がアラート時に同じ外観番号を使用できるようにする必要があります。

REQ-10: メカニズムには、過度のトラフィックと処理を引き起こさずに、停止後に外観状態を再構築する方法が必要です。

REQ-11: メカニズムには、機能を認識していない UA がグループ AOR に対して登録し、通話を発信および受信できるような下位互換性が必要です。

REQ-12: メカニズムは、グループ外の UA が外観番号を選択、占有、または操作することを許可してはなりません。

REQ-13: プライバシー上の理由から、外観情報が UA のグループ外に漏れないようにするメカニズムが必要です(例: "では、1番線には誰がいますか?")。

REQ-14: メカニズムは、UA が回線外観の独占性を要求する方法をサポートする必要があります。独占性とは、それを要求する UA が外部の当事者とプライベートな会話を望んでおり、他の UA が通話に参加または取得することを許可してはならないことを意味します。独占性は、着信または発信セッションの開始時、またはセッション中に要求される場合があります。独占性要求は、共有外観サービスを提供するエンティティによって受け入れられるか拒否される可能性があります。したがって、メカニズムは結果を要求者 UA に伝える方法を提供する必要があります。

REQ-15: メカニズムは、実際の要求を送信する前に、UA が発信要求のために特定の外観番号を占有する方法をサポートする必要があります。これは多くの場合、占有 (seizure) と呼ばれます。

REQ-16: メカニズムは、UA が特定の外観番号を占有し、同時に要求も送信する方法をサポートする必要があります。これは、自動リングダウン機能(オフフック時にすぐに電話番号をダイヤルするように設定された電話)が共有外観と組み合わされる場合に必要です。この場合、回線の占有はダイヤルと統合されます。

4.2. 実装

このセクションでは、共有外観機能の実装について非規範的に説明します。規範的な説明はセクション 5 にあります。このサービスの要件の多くは、次のような標準的な SIP メカニズムを使用して満たすことができます:

  • SIP フォーキングプロキシとレジストラ/ロケーションサービスは REQ-1 を満たします。

  • SIP ダイアログパッケージは REQ-2 を満たします。

  • SIP Replaces および Join ヘッダーフィールドの組み合わせは REQ-3 を満たします。

  • ダイアログパッケージの状態エージェントの使用は REQ-4 と REQ-5 を満たします。

REQ-6 は、外観リソースを管理するエンティティの必要性を示唆しています。会議システムが一般的にフォーカスと呼ばれる単一の制御ポイントを持つのと同様に、共有外観グループには外観共有リソースの単一の制御ポイントがあります。これは、グループの外観エージェント (Appearance Agent) として定義されます。外観エージェントは集中サーバーの一部である可能性がありますが、グループのこの機能を引き受けたメンバー UA に共存することもできます。外観エージェントは、グループのすべてのメンバーのダイアログ状態を知っているか、決定できます。

外観リソースは、中央制御なしで UA のグループによって協調的に管理される可能性がありますが、これはこの文書の範囲外です。また、外観エージェントロジックがグループ内のすべての UA に分散される可能性もあります。たとえば、着信要求の外観番号の割り当てを管理するルール(例: 利用可能な最小の外観番号)と競合処理のルール(例: 2 つの UA が同じ外観番号の使用を要求した場合、ダイアログ識別子をハッシュし、最小のハッシュが勝つものと比較する)を定義して実装する必要があります。

REQ-9 を最もよく満たすために、着信 INVITE の外観番号は、ダイアログパッケージ NOTIFY で配信されることに加えて、INVITE に含まれている必要があります。そうしないと、NOTIFY が遅延または失われた場合、グループ内の UA は着信 INVITE を受信する可能性がありますが、アラート中にどの外観番号をレンダリングするかがわからない可能性があります。

この仕様は、外観番号を伝えるために、RFC 3261 の Alert-Info ヘッダーフィールドの拡張パラメータを定義します。これは、セクション 7 で規範的に定義されています:

Alert-Info: <urn:alert:service:normal>;appearance=1

次のリストは、共有外観機能の動作を説明しています。

  1. UA は共有外観グループの AOR で設定されます。AOR に対して登録し、次に AOR へのダイアログ状態サブスクリプションを試みます。サブスクリプションが失敗したり、自身にループバックしたり、エラーを返したりした場合、状態エージェントがなく、したがって外観エージェントがなく、この機能が実装されていないことがわかります。

  2. サブスクリプションが 200 OK を受信した場合、UA は状態エージェントがあり、機能が実装されていることを知ります。その後、UA はこのリストの手順に従います。

  3. グループ内の他の UA のダイアログ状態について学習した情報は、ユーザーにレンダリングされます。

  4. 着信通話はグループ内のすべての UA にフォークされ、いずれかが応答できます。UA は、外観エージェントからの NOTIFY と INVITE 自体で着信通話のレンダリングに使用する外観番号を受信します。通話がグループ内の別の UA によって応答された場合、UA も通知を受け取るため、この情報をユーザーにレンダリングできます。

  5. 発信通話の場合、動作は実装によって異なります。ユーザーが通話のために特定の外観番号を占有する場合、UA は希望する外観番号で試行状態ダイアログ情報を公開し、INVITE を送信する前に 2xx 応答を待ちます。

  6. 発信通話の場合、ユーザーが特定の外観を占有しない、または気にしない場合、INVITE をすぐに送信でき、外観エージェントからの通知から通話が進行するにつれて外観番号が学習されます。

  7. 発信通話の場合、ユーザーが外観番号を割り当てたくない場合(コンサルテーション通話中、または UA が保留音楽 [RFC7088] などの「サービスメディア」を取得している場合)、UA も INVITE を送信する前に公開しますが、公開に外観番号を含めません。

  8. グループ内で確立された通話は、別の UA によって参加(ブリッジ)または取得(ピックアップ)される場合があります。ダイアログパッケージ通知の情報を使用して、Join または Replaces ヘッダーフィールドを構築できます。これらのタイプの操作には同じ外観番号が使用されるため、INVITE Join または INVITE Replaces を送信する前にこの情報が公開されます。

  9. 外観エージェントは、グループ内の一部またはすべての UA の完全なダイアログ状態に直接アクセスできない場合があります。この場合、外観エージェントはグループ内の個々の UA のダイアログ状態をサブスクライブして、この情報を取得します。いずれの場合も、外観エージェントは、通話が発信、応答、保留のオンとオフ、および切断されたときを含め、AOR の集約ダイアログ状態が変更されるたびに、(手順 1 で UA によって確立されたサブスクリプションを介して)通常の通知を送信します。