跳到主要内容

9. 与非共享外观 UA 的互操作性

允许不直接支持共享外观 (shared appearance) 的基础 UA 成为共享外观组的一部分是有价值的. 为支持这一点, 代理 (Proxy) 必须与外观代理 (Appearance Agent) 协作. 这在基本共享外观架构中并非必需; 因此, 并非所有共享外观部署都能提供与非共享外观 UA 的共享外观互操作.

首先讨论不支持对话事件或共享外观特性的 UA. 然后讨论支持对话事件但不支持共享外观特性的 UA.

9.1. 外观分配​

不了解外观的 UA 只有在外观代理为其分配时, 才会在外呼中具有外观号码. 如果非共享外观 UA 不支持 Join 或 Replaces, 所有对话都 SHOULD 标记为 "exclusive", 以指示这些选项不可用. 将这些对话标记为 "exclusive" 能提供更好的用户体验, 并避免额外的 SIP 消息失败.

9.2. 外观释放​

在所有情况下, 外观代理都必须感知对话生命周期, 以便将外观释放回组中.

还希望通过对话事件包 (Dialog Event Package) 将任何对话状态变化 (例如 hold 等) 提供给组内其他 UA. 如果外观代理包含一个代理, 并且该代理对来自不感知共享外观的 UA 的对话执行 Record-Route, 外观代理就会了解这些对话的状态, 包括 hold 等. 这些信息可以通过检查未端到端加密的 INVITE 和 re-INVITE 消息来确定, 并加入传送给其他 UA 的对话信息中.

9.3. 支持对话事件但不支持共享外观的 UA​

与支持对话事件但不支持共享外观特性的 UA 互操作更为直接. 与前述情况一样, 所有外观号码分配都必须由外观代理完成. 外观代理仍然 SHOULD 在 NOTIFY 中包含外观信息 -- 此类 UA 只会忽略这些额外信息. 这种 UA 还会忽略外观号码限制, 并且可能尝试加入或替换标记为 exclusive 的对话. 因此, 代理或 UA 需要拒绝此类请求, 否则这些对话将被加入或接管.