8. 用户界面考虑因素 (User Interface Considerations)
分配给呼叫的外观号码是一个重要概念,它使呼叫能够由具有异构用户界面的多个设备处理,同时仍然允许用户看到一致的模型。仔细处理外观号码对于满足用户期望至关重要。此外,向用户呈现正确的呼叫/外观状态也很重要。
8.1. 外观号码呈现 (Appearance Number Rendering)
由于不同的 UA 具有不同的用户界面能力,通常会发现某些 UA 具有其他 UA 没有的限制。显然不可能在所有 UA 之间实现完美的互操作性,但通过精心设计,可以实现达到每个 UA 限制范围内的互操作性。
以下指南建议如何在三种典型的用户界面实现中处理外观号码。
8.1.1. 单外观 UA (Single Appearance UAs)
这些设备受限于只能显示单个外观的状态指示。该 UA 仍然应该 (SHOULD) 发送带有外观号码 "1" 注释的消息。除号码 "1" 之外的任何外观的呼叫指示都应该 (SHOULD) 以 480 (Temporarily Unavailable,临时不可用) 或 486 (Busy Here,忙碌) 响应拒绝。请注意,这意味着单外观 UA 无法应答其自己对共享 AOR 的呼叫,因为该呼叫将使用第二个外观号码。
8.1.2. 双外观 UA (Dual Appearance UAs)
这些设备本质上是实现呼叫等待的单外观电话。它们具有非常简单的用户界面,允许它们在两个外观之间切换 (切换或挂机闪烁),并且可能具有指示另一个外观状态的可听音调。这些 UA 只会使用外观号码 "1" 和 "2"。
8.1.3. 具有固定外观号码的共享外观 UA (Shared Appearance UAs with Fixed Appearance Number)
此 UA 是典型的 "商务级" 硬件话机。通常静态配置一定数量的外观并在按钮上标记,并且可以使用这些配置的外观管理呼叫。此范围之外的任何呼叫都应该被拒绝,而不是映射到空闲按钮。这些设备的用户经常为拨出呼叫占用特定的外观号码,UA 将需要占用外观号码并等待来自外观代理的确认,然后再继续进行呼叫。
8.1.4. 具有可变外观号码的共享外观 UA (Shared Appearance UAs with Variable Appearance Numbers)
此 UA 通常是软电话或图形丰富的用户界面硬件话机。在这些情况下,甚至外观索引的概念似乎都是不必要的。然而,为了使这些电话能够与其他电话类型成功互操作,重要的是它们仍然使用外观索引来控制正在进行的呼叫的外观顺序。除了顺序应该保持一致之外,没有给出关于呈现的具体指导。这些设备通常可以在不等待来自外观代理关于外观号码的确认的情况下进行呼叫。
8.1.5. 用户界面问题示例 (Example User Interface Issues)
在此示例中可以清楚地看到每种用户界面风格所面临的问题:
-
呼叫到达共享外观组并被分配外观号码 "1"。所有 UA 都应该能够向用户呈现此呼叫的到达。
-
另一个呼叫到达共享外观组并被分配外观号码 "2"。单外观 UA 不应该向用户呈现此呼叫。其他 UA 应该没有问题将此呼叫与第一个呼叫区分开来呈现。
-
第一个呼叫清除,释放外观号码 "1"。单外观 UA 现在应该指示没有呼叫,因为它无法管理除第一个外观之外的呼叫。两个共享外观 UA 都应该清楚地显示外观号码 "1" 现在是空闲的,但外观号码 "2" 上仍有呼叫。
-
第三个呼叫到达并被分配外观号码 "1"。所有 UA 都应该能够向用户呈现此新呼叫的到达。多外观 UA 应该继续指示第二个呼叫的存在,并且它们还应该确保呈现顺序与外观号码相关,而不是与呼叫到达顺序相关。
8.2. 呼叫状态呈现 (Call State Rendering)
实现共享外观功能的 UA 通常具有提供组中其他外观状态的用户界面。当处理来自外观代理的对话状态 NOTIFY 时,可以呈现此信息。即使是最简单的用户界面通常也有三种状态:空闲、活动和保持。空闲状态通常由指示灯熄灭表示,当外观号码未与任何对话关联时,如外观代理报告的那样,为外观指示此状态。活动状态通常由指示灯点亮表示,意味着外观号码与至少一个对话关联,如外观代理报告的那样。保持状态通常由闪烁的指示灯表示,意味着从共享外观组中 UA 的角度来看呼叫状态是保持。这可以通过本地目标 URI 中存在 "+sip.rendering=no" 功能标签 [RFC3840] 来确定。请注意,远程目标 URI 的保持状态与此显示无关。对于已加入的对话,仅当所有本地目标 URI 都用 "+sip.rendering=no" 功能标签指示时,状态才呈现为保持。