- 会话发起协议教程
- SIP - 首页
- SIP - 简介
- SIP - 网络元素
- SIP - 基本呼叫流程
- SIP - 消息
- SIP - 响应码
- SIP - 头部
- SIP - 会话描述协议
- SIP - 提供/应答模型
- SIP - 移动性
- SIP 分支
- SIP - 代理和路由
- SIP 到 PSTN
- SIP - 编解码器
- SIP - B2BUA
- SIP 有用资源
- SIP - 快速指南
- SIP - 有用资源
- SIP - 讨论
SIP 分支
有时,代理服务器会将单个 SIP 呼叫转发到多个 SIP 端点。此过程称为分支。单个呼叫可以同时响铃多个端点。
使用 SIP 分支,您可以同时让您的办公电话和软电话或手机上的 SIP 电话响铃,从而可以轻松地从任何设备接听电话。
通常,在办公室中,如果老板无法接听电话或不在,SIP 分支允许秘书接听其分机的电话。
如果存在有状态代理,则可以进行分支,因为它需要执行操作并从众多收到的响应中进行响应。
我们有两种类型的分支:
- 并行分支
- 顺序分支
并行分支
在这种情况下,代理服务器将同时将 INVITE 分支到两个设备(UA2、UA3)。两个设备都将生成 180 Ringing,并且接听电话的设备将生成 200 OK。首先到达发起者的响应(假设为 UA2)将与 UA2 建立会话。对于另一个响应,将触发 CANCEL。
如果发起者同时收到两个响应,则它将根据 q 值转发响应。
顺序分支
在这种情况下,代理服务器将 INVITE 分支到一个设备 (UA2)。如果 UA2 此时不可用或繁忙,则代理服务器将将其分支到另一个设备 (UA3)。
分支 ID 和标签
分支 ID 帮助代理将响应与分支请求匹配。如果没有分支 ID,代理服务器将无法理解分支响应。分支 ID 将在 Via 头部中可用。
UAC 使用标签来区分来自不同 UAS 的多个最终响应。UAS 无法确定请求是否已被分支。因此,它需要添加一个标签。
如果代理生成最终响应,它也可以添加标签;它们绝不会将其添加到它们转发的请求或响应中。
单个请求也可能被多个代理服务器分支。因此,进行分支的代理应将其自己唯一的 ID 添加到它创建的分支中。
呼叫路径和呼叫 ID
呼叫路径是指两个用户代理之间一对一的信令关系。呼叫 ID 是 SIP 消息中携带的唯一标识符,用于指代呼叫。呼叫是呼叫路径的集合。
UAC 通过发送 INVITE 开始。由于分支,它可能会从不同的 UA 接收多个 200 OK。每个都对应于同一呼叫内的不同呼叫路径。
因此,呼叫是一组呼叫路径。呼叫路径是指 UA 之间的端到端连接。
呼叫路径两个方向的 CSeq 空间是独立的。在一个方向内,序列号在每次事务中递增。
语音邮件
语音邮件如今对于企业用户来说非常普遍。这是一个电话应用程序。当被叫方无法接听电话时,PBX 将通知呼叫方留下语音留言。
如果被叫方的号码无法接通,用户代理将收到 3xx 响应或重定向到语音邮件服务器。但是,需要某种 SIP 扩展来指示语音邮件系统使用哪个邮箱,也就是播放哪个问候语以及在哪里存储录制的留言。有两种方法可以实现这一点:
使用 SIP 头字段扩展
使用 Request-URI 来表示此信息
假设用户 **sip:[email protected]** 在 sip:voicemail.tutorialspoint.com 处有一个提供语音邮件的语音邮件系统,则将其转发到语音邮件服务器时的 INVITE 的 Request-URI 可能如下所示:
sip:voicemail.tutorialspoint.com;target = sip:[email protected];cause = 486
下图显示了 Request-URI 如何携带邮箱标识符和原因(此处为 486)。