freeswitch dialplan(转)

4人阅读 评论(0) 收藏 举报
分类:


freeswitch dialplan学习总结





原创

2014年09月14日 16:27:19

        <ul class="article_tags clearfix csdn-tracking-statistics tracking-click" data-mod="popu_377">
            <li class="tit">标签:</li>


  • voip /
  • freeswitch /
  • dialplan /





  • Dialplan 是freeswitch 对一个呼入电话的路由查询。通过 show dialplan 命令可以查看到当前freeswitch可以支持的哪些 dialplan.

    常用的 dialplan 有 XML、LUA、inline等。

    XML Dialplan 主要由一系列xml配置文件组成,格式如下:

    1. <context name=“mydialplan”>  
    2.     <extension name=“ext1”>  
    3.         <condition field=“xxx” expression=“xxx”>  
    4.              <action application=“app” data=“args”/>  
    5.         </condition>  
    6.     </extension>  
    7. </context>  
    <context name="mydialplan">
        <extension name="ext1">
            <condition field="xxx" expression="xxx">
                 <action application="app" data="args"/>
            </condition>
        </extension>
    </context>

    更详细的配置可以参考 conf/dialplan/default.xml 文件。

    其中配置文件中的 name 字段是可以重复存在的, freeswitch并没有对该属性做检查,freeswitch 只在找到匹配的extension时,将其 action 记录到执行队列。注意:在dialplan的匹配过程中,并不会执行 action(带有inline属性的action除外,该类型的action会立即执行,一般用来设置一个变量值),需要等到dialplan结束时,才会进入执行阶段!

    对于dialplan解析何时结束,这是可控的。

    1、在extension 后面可以添加 continue 属性

           continue = “true” :表示不管该extension中是否有condition匹配,都继续执行dialplan

           continue = “false”:表示如果该extension中有匹配的condition,那么就停止了dialplan。false是默认值

    2、在condition 后面可以添加 break 属性,break可以是下面几个值

           “on-false”  :表示在第一次匹配失败时停止(但继续处理其他的extension),这是默认配置

           “on-true”    :表示在第一次匹配成功时停止,不成功则继续路由该condition后面的其他 condition

           “always”    :不管是否匹配都停止该 extension 中的 condition 路由

           “never”       :不管是否匹配都继续该 extension 中的 condition 路由

    默认情况下,在没有任何 continue、break属性的时候,在找到 匹配后,就会结束dialplan.

    从上面两点可以看出,continue是用来限制是否继续下一个 extension; break 是用来限制是否继续下一个 condition

    有点特殊地方就是 break=”on-false”的时候,如果该 conditon 没有被匹配,则结束后面的 condition, 然后跳到下一个 extension。看似 break 影响了 extension 的流程,其实这样是可以理解的,因为 break=”on-false” 表示没有匹配到就退出,此时该extension 的最新匹配状态被标示为不匹配,如果extension没有被匹配,则默认会进入下一个extension.

    这里的extension最新状态特别说明一下,如下例子:

    1.  <extension name=“test_dialplan”>  
    2.    <condition field=“destination_number” expression=“7777” break=“never”>  
    3.   <action application=“info”/>  
    4. </condition>  
    5.    <condition field=“destination_number” expression=“8888” break=“on-false”>  
    6.   <action application=“info”/>  
    7. </condition>  
    8. <condition field=“destination_number” expression=“9999”>  
    9.   <action application=“info”/>  
    10. </condition>  
    11.  </extension>  
      <extension name="test_dialplan">
        <condition field="destination_number" expression="7777" break="never">
          <action application="info"/>
        </condition>
        <condition field="destination_number" expression="8888" break="on-false">
          <action application="info"/>
        </condition>
        <condition field="destination_number" expression="9999">
          <action application="info"/>
        </condition>
      </extension>

    当我们拨打 7777 时,第一个 condition 被匹配,但是 break=’never” 则会继续下一个 condition,此时extension被标示为匹配状态。路由到第二个 condition时,发现不匹配,同时 break=”on-false” 所以应该停止后面的 condition,结束该 extension, 并且将 extension 的匹配状态标示为不匹配,extension的匹配状态决定了是否进行下一个extension.

    可以看出,extension 的 匹配状态是最后一个 condition 的匹配状态!

                    </div>
        <script>
        $(".MathJax").remove();
        </script>
    </article>
    
    查看评论

    FreeSwitch Lua编程接口(1)dialplan里的配置

    Dialplan里的配置 可以为freeswitch配置一个或若干个号码,当其他的sip终端通过拨打此号码时,通过拨号路由,查找到此号码,从而执行lua脚本。在Dialplan里的配置如下:   ...
    • argpunk
    • argpunk
    • 2012-02-06 15:54:35
    • 3682

    freeswitch dialplan学习总结

    Dialplan 是freeswitch 对一个呼入电话的路由查询。
    • It_way
    • It_way
    • 2014-09-14 16:27:19
    • 5790

    freeswitch dialplan 笔记

    本文来自csdn lidp http://blog.csdn.net/perfectpdl,转载注明出处,谢谢。 我建了一个 Freeswitch 内核研究 交流群, 45211986,...
    • perfectpdl
    • perfectpdl
    • 2012-09-12 18:09:10
    • 3426

    freeswitch的dialplan中condition变量

    fs中dialplan中的condition变量可以是channel变量、
    • wtswjtu
    • wtswjtu
    • 2014-07-28 11:11:38
    • 950

    FreeSWITCH dialplan APPlication

    freeswitch dialplan application
    • u010317005
    • u010317005
    • 2016-07-17 23:52:32
    • 6367

    FreeSwitch的mod_dialplan_xml模块分析

    • 2011年06月03日 13:28
    • 35KB
    • 下载

    BL1600A + Freeswitch_1.0.6

    操作环境: =========================== OS:CentOS 5.4 Kernel: 2.6.18-194.el5 Zaptel: zaptel-1.4.12.1 ...
    • wangjie5540
    • wangjie5540
    • 2013-12-08 21:59:16
    • 1023

    用perl 语言写freeswitch dialplan

    我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案, 承接 sip/ims 视频客户端开发,支持接入sip软交换,i...
    • perfectpdl
    • perfectpdl
    • 2012-10-26 22:27:28
    • 2480

    FreeSWITCH学习笔记 第一场 第九个镜头 拨号计划(Dialplan)

    FreeSWITCH拨号计划的简单讲解
    • ErErFei
    • ErErFei
    • 2017-11-01 16:21:04
    • 451

    freeswitch xml_curl模块使用

    • 2015年11月26日 16:10
    • 38KB
    • 下载
      个人资料
      持之以恒
      等级:
      访问量: 1035
      积分: 112
      排名: 122万+
      最新评论