zoukankan      html  css  js  c++  java
  • opensips路由类型总结(更新中)

    opensips的路由可以分为主路由和子路由,主路由是由opensips触发的,子路由更像是编程语言里的函数调用

    主路由可以分为以下几种:

    请求路由

    请求路由是opensips中最重要的一种路由类型,也是opensips的路由脚本中必须有的一种路由类型,当opensips接收到从网络发送过来的SIP请求的时候,触发请求路由(请求路由只处理opensips接收到的请求,不处理返回)

    示例:

    route{
    
    	if (is_method("INVITE"))   xlog("L_INFO", "<sc>: $rm $ru, $fU to $tU");	
    	
    	if (is_method("REGISTER")) xlog("L_INFO", "<sc>: $rm $ru, $fU from $si:$sp, expires $(hdr(Expires))");
    	
    	if (is_method("OPTIONS")) {
    		sl_send_reply("200", "OK");
    		exit;
    	}
    	
    	# per request sanity checks
    	route(CHECK_SANITY);
    	
    	# nat detection
    	route(NAT_DETECT);
    	
    	# handle requests within sip dialogs
    	if (has_totag()) {
    	  route(WITHINDLG);
    	}
    

    分支路由

    分支路由在SIP请求离开opensips时做处理,不能够做一些信号操作(结束请求,转发请求或者是drop请求),但是可以检查和修改和删除SIP请求。

    分支路由主要的应用场景在fork SIP请求,比如,当你有一个SIP请求,可以在这里把它变成多个SIP请求(比如说一键多呼的场景,客户端发起一个invate,opensips可以把它变成多个invate发送出去)

    在请求路由中设置一个 t_on_branch("分支路由名称"),这相当于设置了一个钩子,当SIP请求离开opensips的时候相应的分支路由会被触发。

    可以设置多个t_on_branch,但是只有一个会被执行,后边的钩子会覆盖前边的。

    失败路由

    当SIP请求返回的状态码大于200时,触发失败路由,在失败路由中,可以选择把失败的状态码返回给客户端,或者重新发送请求,也可以修改SIP的状态码,然后返回给客户端。

    响应路由

    当opensips接收到响应的时候,触发响应路由,包括1xx - 6xx的所有相应。

    本地路由

    有一些请求是opensisp自己发出的,并不是opensips从网络上接收到的请求,比如多方通话的场景下,由opensips发送给多个客户端的BYE消息,这些场景下触发本地路由的执行

    启动路由

    opensips启动的时候,做一些操作,并不涉及SIP消息的接收和处理

    定时器路由

    定时执行一些操作,不涉及SIP消息的接收和处理

    事件路由

    特定的事件发生的时候触发的路由,不涉及SIP消息的接收和处理

    错误路由

    用来捕获运行时错误,比如解析SIP时出错等

    error_route {
       xlog("$rm from $si:$sp  - error level=$(err.level),
         info=$(err.info)
    ");
            sl_send_reply("$err.rcode", "$err.rreason");
            exit;
     }
    

    总结

    使用矩阵图类来总结以上的路由类型:

  • 相关阅读:
    第一个android开发,记录三
    第一个android开发,记录二
    第一个android开发,记录一
    第一行代码LitePal的问题
    第二阶段冲刺个人总结5
    PHP中验证码的制作教程
    选项卡的制作代码
    HTML5布局总结篇
    PHP实现简单的计算器
    PHP中的运算符
  • 原文地址:https://www.cnblogs.com/jiaoyiping/p/12543395.html
Copyright © 2011-2022 走看看