文章目录
Call创建流程
Exosip lib库提供了call的4类接口:
- 第一次建立一个call的initial invite创建及发送接口;
- 在dialog中创建及发送的其它request;
- 在dialog中创建及发送对从对端发送过来的request的response;
- 在invite请求中回应对端response的ACK的创建和发送。
eXosip_call_build_initial_invite的流程
把 eXosip_call_build_initial_invite 拆成 「参数校验 → 基础请求构造 → Dialog 外请求构建 → INVITE 字段补充 → 协议合规检查」

参数合法性校验(阶段 A)
检查 To 头域是否包含合法的 SIP URI(格式如 sip:user@domain.com)。
From 头域需符合 eXosip 初始化配置的生成规则(如 from_tag)。
依据 RFC 3261 第 8.1.1 节(SIP 消息格式)和第 12.1 节(Dialog 标识规则)。
基础请求初始化(阶段 B)
设置 SIP 版本为默认值 SIP/2.0。
初始化 From 头域,包含由 eXosip 生成的 from_tag。
生成全局唯一的 Call-ID,确保 Dialog 标识唯一性。
参考 RFC 3261 第 8.1.1.7 节(Call-ID 规则)和第 12.1.1 节(From/To Tag 规则)。
Dialog 外请求构造(阶段 C)
调用 generating_request_out_of_dialog 构建初始 INVITE 请求。
无需关联已有 Dialog 的 CSeq 或 Route 头域。
Dialog 外请求的 Call-ID 为全新生成,CSeq 从 1 开始递增。
Dialog 内请求需复用 Call-ID 和 From/To Tag,且 CSeq 必须大于当前 Dialog 记录值(RFC 3261 第 12.2.1.1 节)。
INVITE 专属字段填充(阶段 D)
通过 _eXosip_dialog_add_contact 填充 Contact 头域(如 sip:local@192.168.1.100:5060)。
使用 osip_message_set_subject 设置可选呼叫主题(如会议名称)。
通过 osip_message_set_expires 设置会话超时时间(默认 3600 秒)。
协议依据:RFC 3261 第 8.1.1.8 节(Contact)和第 20.19 节(Expires)。
协议合规性检查(阶段 E)
校验 CSeq 是否为初始值(如 1)且方法为 INVITE。
Route 头域可选,未指定时依赖 eXosip 默认路由配置。
若包含 SDP,需确保 Content-Type 为 application/sdp 且符合 RFC 4566 格式。### 表格:Dialog 内外请求的核心差异

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



