功能同步功能主要用于保持电话设备状态与服务器状态同步。该功能包含两种主流同步方式:一种基于**订阅/通知**机制实现,另一种则通过调用功能码发起INVITE请求完成。
本文档适用于我司全系列电话设备。
本文档供负责电话设备故障排查的日常运维人员使用。
首先需在电话设备上开启功能同步功能。该功能默认处于关闭状态,所有通话功能默认在本地终端执行。
网页配置入口:
--SIP线路列表-- :
SIP1 功能同步 :0
BroadSoft 与 Metaswitch 均依靠订阅/通知机制完成状态同步。开启功能同步后,电话在注册流程中会向服务器发送一条包含 Event: as-feature-event 字段的SUBSCRIBE订阅消息。若服务器兼容该功能,将返回 200 OK 应答,并完成当前设备状态同步,具体流程如下:
Fortinet 同样支持通过功能码实现功能同步。尽管该方式也依赖订阅/通知机制,但与功能同步本身的配置项无关联。
3CX、Yeastar 及绝大多数第三方PBX电话交换机系统(含已完成测试的华为、中兴IMS服务器),均通过发送INVITE请求呼叫对应功能码来实现同步。该方案对于终端电话而言,适配与实现方式更为简便。
① 当在服务器端开启或关闭免打扰时,服务器会向电话推送一条携带免打扰状态(true/false)的SIP NOTIFY通知消息。电话接收消息后回复 200 OK,并同步开启或关闭本地免打扰功能。抓包记录如下:
② 当在电话端手动开启或关闭免打扰时,设备会先向服务器发送携带免打扰状态(true/false)的SUBSCRIBE订阅消息。服务器返回 200 OK 应答、且免打扰状态变更生效后,服务器会回传一条携带最新免打扰状态(true/false)的SIP NOTIFY确认通知,电话最终回复 200 OK 完成交互。抓包记录如下:
1. 无条件呼叫转移
电话与 BroadSoft 服务器可双向同步无条件转移的开关状态,以及配置的转移号码。
① 服务器端开启/关闭无条件转移并配置转接号码后,会向电话推送包含转移状态(true/false)与转接号码的SIP通知。电话接收后回复 200 OK,同步更新转移开关与转接号码。
② 电话端修改无条件转移设置时,设备先向服务器发送携带转移状态(true/false)的订阅消息。服务器应答 200 OK 后,会推送确认通知同步最新转移状态,电话回复 200 OK 完成同步。抓包示例如下:
2. 遇忙呼叫转移
电话与 BroadSoft 服务器可同步遇忙转移功能的开关状态及对应转接号码。
① 服务器端开启/关闭遇忙转移并配置号码后,下发携带转移状态(true/false)与转接号码的SIP通知。电话应答 200 OK,同步启用/关闭遇忙转移并保存号码。
② 电话端操作逻辑一致:先发送遇忙转移状态(true/false)的订阅消息,服务器确认后回传通知,终端应答 200 OK。抓包记录如下:
3. 无应答呼叫转移
电话与 BroadSoft 服务器可同步无应答转移的开关状态与转接号码。
① 服务器变更无应答转移配置后,推送包含状态(true/false)和号码的通知,电话同步配置并应答 200 OK。抓包记录如下:
② 电话端开启或关闭无应答转移时,优先发送携带状态(true/false)的订阅消息,服务器确认后下发状态确认通知,终端回复 200 OK。抓包记录如下:
① 服务器端免打扰开关控制(报文交互逻辑与BroadSoft完全一致)
② 电话端免打扰开关控制(报文交互逻辑与BroadSoft完全一致)
1. 无条件呼叫转移(报文交互逻辑与BroadSoft一致)
① 服务器开启/关闭无条件转移
② 电话端开启/关闭无条件转移
2. 无应答呼叫转移(报文交互逻辑与BroadSoft一致)
① 服务器端
② 电话端
3. 遇忙呼叫转移(报文交互逻辑与BroadSoft一致)
① 服务器端
② 电话端
Fortinet 服务器通过功能码实现与电话设备的状态同步。
服务器变更功能状态时,会向电话发送携带免打扰状态的NOTIFY通知消息。
电话端手动修改状态时,会向服务器发送携带免打扰状态的SUBSCRIBE订阅消息。
以上交互逻辑同样适用于各类呼叫转移配置。
在3CX、Yeastar等服务器中开启功能同步后,仅支持**电话单向向服务器同步状态**,服务器无法主动向电话推送状态变更。该机制存在一定局限性,但部署简单,可满足常规办公使用需求。
开启功能同步后,还需为各项语音功能配置对应功能码,配置方式如下:
在电话端开启或关闭免打扰时,设备会向服务器发送INVITE请求,主动触发状态同步。
注意:
3CX服务器后续迭代新增了uaCSTA协议功能,服务器端开启免打扰后,可通过uaCSTA Info消息向电话推送状态通知。目前我方设备暂不支持通过该类消息刷新本地电话状态。