freeswitch dialplan中获取通道变量的方法

Song2938 次浏览0个评论2018年12月18日

在使用时可以用$${var}的形式来进行引用。这些变量是全局有效的,因而称为全局变量。另外一些变量是在 Dialplan、ApplicationDirectory中设置的,它们会影响呼叫流程且可以被动态改变。这些变量一般与一个呼 叫有关,严格地说是与一个Channel有关,因而又称为Channel Variable,即通道变量。通道变量可以以${var}的 形式引用。全局变量仅在预处理阶段(系统启动时或重新装载-reloadxml时)被求值,一般用于设置一些系统一 旦启动就不会轻易改变的量,如$${domain}$${local_ip_v4}等。而局部变量(即通道变量)仅在Channel的生 命周期中有效。所以,两者最大的区别是,$${var}只在加载时求值一次,而${var}则在每次执行时都求值 (如一个新电话进来时)。 在呼叫过程中,某些变量可以改变Channel的行为。另外,也可以使用自定义的通道变量来存储随路数据等。

一、获取通道变量的方法:

在实际使用中会发现,有些变量在显示时(可以使用dp_tools中的info App显示,后面会讲到)是以 variable_开头的,但在实际引用时要去掉这些开头的variable_。如variable_username,引用时要使用 ${username}:

<extension name="test">
    <condition field="destination_number" expression="^(1330)$">
        <action application="log" data="ERR ${domain} "/>
        <action application="log" data="ERR ${username} "/>
        <action application="log" data="ERR ${dialplan} "/>
        <action application="log" data="ERR ${uuid} "/>
    </condition>
</extension>

二、设置通道变量

<extension name="test">
    <condition field="destination_number" expression="^(1330)$">
        <action application="set" data="new_domain=${domain} "/>
    </condition>
</extension>

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...