这篇博文主要讲我本身半年前第一次接触Opensips时,对脚本中route块和SIP消息相关性的疑惑,主要讲route,onreply_route,failure_route三个类型。其余的能够直接参考官网的说明:编程
http://www.opensips.org/Documentation/Script-Routes-2-1编程语言
概况的讲,opensips.cfg配置文件相似简单的编程语言,能够认为route块分为主入口函数,设置的根据条件--SIP事务过程--的回调函数,执行的块函数。函数
SIP消息分为: SIP requests/SIP responses,其中SIP responses分为正常消息和错误消息。根据SIP消息的事务类型:事务
SIP请求---主入口函数--route块ip
SIP回复---回复调用函数---onreply_route块get
SIP错误回复--设置的错误回调函数---failure_route块回调函数
以下面:requests
当SIP消息如:INVITE消息过来时,opensips会执行进入这个函数,最后执行route(relay),相似C语言里面的调用。it
其中route[relay]的实现io
其中: t_on_reply("handle_nat");和t_on_failure("missed_call");两个语句分别设置了本次SIP事务的回调函数,SIP的回复和错误回复。这个是我最开始不能很好理解的地方。
两个route块的代码以下,只作必定的参考。:
这两个route块能够设置判断条件,加上你本身的逻辑去处理。
写在后面这是半年前要写的文章,一直没空去写,不少细节都忘了。