Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 29341-20-10 定义了 CallControl 服务,这是 UPnP 电话设备的强制性服务模板。此服务级标准规定了管理电话呼叫的完整接口:发起呼出、接收呼入、终止活动呼叫以及管理保持、转接、临时会议和呼叫驻留等补充业务。CallControl 服务围绕呼叫状态机模型进行设计,每个呼叫通过明确定义的状态进行转换,状态转换由控制点的 SOAP 操作和电话网络的异步事件驱动。
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 结构,支持在多个状态变量同时变化时进行批量更新。
LastChange 事件,以减少网络开销。CallerID 状态变量接收来自潜在不可信外部网络的数据。切勿在未经数据清洗的情况下将原始主叫号码字符串传递给日志系统或显示界面。格式错误的主叫号码字符串可能包含 SQL 注入负载、XSS 向量或干扰终端输出的控制字符。生产级 CallControl 服务实现必须处理多个边界情况。Call 操作应使用 URI 解析器验证 CallURI 参数格式,在尝试拨号之前拒绝格式错误或不支持的 URI 方案。对于会议场景,实现一个独立跟踪参与者 CallID 的会议桥映射。当会议参与者挂断时,其呼叫转换为 TERMINATED 状态,但会议桥继续为剩余参与者服务。最后,服务必须支持设备描述中声明的 MaxCallCount 限制——如果达到最大并发呼叫数,Call 操作应以 MAX_CALLS_REACHED 错误优雅地失败。
MaxCallCount 参数声明。每个呼叫由唯一的 CallID 跟踪,并拥有自己的状态机实例。