IEC 29341-20-10:UPnP CallControl 电话服务技术解析

IEC 29341-20-10 | UPnP 电话服务 | CallControl 服务模板

CallControl 服务规范详解

IEC 29341-20-10 定义了 CallControl 服务,这是 UPnP 电话设备的强制性服务模板。此服务级标准规定了管理电话呼叫的完整接口:发起呼出、接收呼入、终止活动呼叫以及管理保持、转接、临时会议和呼叫驻留等补充业务。CallControl 服务围绕呼叫状态机模型进行设计,每个呼叫通过明确定义的状态进行转换,状态转换由控制点的 SOAP 操作和电话网络的异步事件驱动。

实现 CallControl 服务时,将 CallID 视为不透明句柄。服务应为每个呼叫会话生成全局唯一的呼叫标识符,以确保在多提供商电话环境中实现无歧义的跟踪。

呼叫状态机与操作

CallControl 服务将每个呼叫建模为一个状态机实例,包含以下状态:IDLE(无呼叫)、DIALLING(正在建立呼出)、ALERTING(正在提醒对方)、CONNECTED(呼叫已激活)、HELD(呼叫已保持)和 TERMINATED(呼叫已结束)。服务公开触发状态转换的操作:Call(IDLE 到 DIALLING)、Answer(ALERTING 到 CONNECTED)、Hangup(任意状态到 TERMINATED)、Hold(CONNECTED 到 HELD)、Unhold(HELD 到 CONNECTED)、Transfer(CONNECTED 保持)和 Conference(多个 CONNECTED 呼叫合并为会议桥)。

操作 起始状态 目标状态 描述
Call IDLE DIALLING 向指定 URI 发起呼出
Answer ALERTING CONNECTED 接听来电
Hangup 任意 TERMINATED 结束呼叫
Hold CONNECTED HELD 保持呼叫
Unhold HELD CONNECTED 恢复被保持的呼叫
Transfer CONNECTED CONNECTED 将呼叫转接给另一方
Conference 操作需要特别注意媒体混音。CallControl 服务不提供媒体处理能力——它依赖外部混音器或电话基础设施来处理音频混音。该服务的职责仅限于信令:邀请参与者加入会议并跟踪其参与状态。

事件通知与状态推送

CallControl 服务使用 GENA 实时向已订阅的控制点推送状态变化。关键的事件化状态变量包括 CallState(主呼叫的当前状态)、CallID(当前状态关联的呼叫实例)、CallerID(主叫方标识符)、CalleeID(被叫方标识符)和 LineStatus(电话线路的汇总状态)。事件负载使用 LastChange XML 结构,支持在多个状态变量同时变化时进行批量更新。

在 CallControl 服务中实现事件速率限制,以防止在快速呼叫状态变化期间发生事件风暴。缓冲短间隔内的状态变更,并发出包含最终状态的聚合 LastChange 事件,以减少网络开销。
CallerID 状态变量接收来自潜在不可信外部网络的数据。切勿在未经数据清洗的情况下将原始主叫号码字符串传递给日志系统或显示界面。格式错误的主叫号码字符串可能包含 SQL 注入负载、XSS 向量或干扰终端输出的控制字符。

工程设计要点

生产级 CallControl 服务实现必须处理多个边界情况。Call 操作应使用 URI 解析器验证 CallURI 参数格式,在尝试拨号之前拒绝格式错误或不支持的 URI 方案。对于会议场景,实现一个独立跟踪参与者 CallID 的会议桥映射。当会议参与者挂断时,其呼叫转换为 TERMINATED 状态,但会议桥继续为剩余参与者服务。最后,服务必须支持设备描述中声明的 MaxCallCount 限制——如果达到最大并发呼叫数,Call 操作应以 MAX_CALLS_REACHED 错误优雅地失败。

常见问题

问:CallControl 服务可以处理多个同时呼叫吗?
可以,上限由设备 MaxCallCount 参数声明。每个呼叫由唯一的 CallID 跟踪,并拥有自己的状态机实例。
问:服务如何区分呼入和呼出?
状态机对两个方向是相同的。对于呼入,观察到的第一个状态是 ALERTING。对于呼出,IDLE 之后的第一个状态是 DIALLING。
问:标准是否支持紧急呼叫处理?
标准没有定义特殊的紧急呼叫程序。但是,实现应确保紧急号码始终可以拨打,不受设备锁定状态或呼叫限制的影响。
问:通话记录的建议实现方法是什么?
通话记录不属于 CallControl 服务规范。实现应通过供应商特定服务或 Phonebook 服务的元数据扩展来维护通话历史,存储带有时间戳和持续时间的已完成呼叫记录。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注