最近在开发GB28181视频监控平台,对于录像的暂停、倍速等控制是通过INFO消息完成的,但是eXosip协议栈没有明确说明该如何去构造INFO消息的应答。通过对源代码的解读,是使用eXosip_call_send_answer接口去构造,参考了一些博客,发现大家使用该接口去构造INFO的应答时会失败。
最开始我构造时也会失败,通过一步步定位发现,失败的原因不是该接口,而是传递给该接口的参数。最开始构造INFO的应答时给接口传入的tid是Invite请求创建的事务,将Invite请求创建的事务tid传递给接口让生成INFO的应答,肯定会失败。在sip协议中INFO消息会产生一个新的事务,因此我们在构建应答时应当使用INFO请求生成的事务tid去构建应答,这样就可以顺利构建成功