首先让我们解释一下具体的使用方式和其cfg配置文件的用法(完整的本案例配置文件为会晚一点上传到www.kamailio.org.cn)。append_hf() 函数的作用是在SIP头中添加相应的字符串,帮助用户能够判断整体呼叫流程的状态,方便技术人员排查问题。具体的用法是:
- append_hf(txt, hdr)
txt - Header field to be appended. The value can contain pseudo-variables which will be replaced at run time.
- hdr - Header name after which the 'txt' is appended.
在本讲座中,我们使用四个追加的信息来跟踪呼叫流程:
- append_hf("P-hint: (1)sequential request/rr-enforced \r\n");
- append_hf("P-hint: (2)initial request/usrloc applied\r\n");
- append_hf("P-hint: (3)reply thru onreply_route[2]\r\n");
- append_hf("P-hint: (4)new request in failure_route[2]\r\n");
通过对SIP头添加以上四个跟踪信息,整个呼叫流程会实现以下流程:
![](http://www.ctiforum.com/uploadfile/2018/0319/20180319022942810.jpg)
现在,让我们开始具体的测试步骤。开始测试前,读者需要更新到本案例中的cfg文件,重新加载一次cfg文件。然后使用此命令对端口进行抓包保存:
ngrep –p –q –W byline port 5060 >rr-stateful
执行以上命令后,使用已注册两个分机进行分机呼叫。呼叫完成后,停止ngrep命令。通过保存的日志文件查看我们的打印跟踪记录。读者会看到我们在cfg文件中设置的打印字符串信息。
本章节主要技术如何使用append_hf()来跟踪一个完整的呼叫对话流程,另外介绍了如何对其跟踪日志进行抓包的方法。通过本讲座的学习,用户可以了解通过对SIP头追加相应的字符串信息理解呼叫对话过程。
参考资料:http://www.opensips.org/html/docs/modules/2.2.x/sipmsgops.html
![](http://www.ctiforum.com/uploadfile/2018/0319/20180319023301593.jpg)
关注微信公众号:asterisk-cn,获得有价值的行业分享。
访问freepbx官方中文论坛-开源IPPBX论坛获得技术帮助:
www.ippbx.org.cn, 关于Asterisk, freepbx技术wiki: www.freepbx.org.cn
融合通信商业解决方案首选产品:www.hiastar.com