admin管理员组文章数量:1599447
Condition 属 Extension 下的内容,是执行 [ant-]Action 的条件。
常见于 Freeswitch 各 XML 配置文件下,路由表 Dialplan 中作用显著。
<condition field="destination_number" expression="^2906$">
1、工作流程
-
作为
Dialplan
路由表 / 拨号方案中的控制元素,condition
可以通过正则表达式或者其他参数是否满足某种条件来控制路由表
的进入。 -
如果
condition
的判断结果为true
,那么condition
内指定的action
将被添加到TODO
预执行列表中。 -
如果
condition
的判断结果为false
,那么condition
内指定的anti-action
将被添加到TODO
预执行列表中。 -
但只要
condition
结果为true
,或者有内部anti-action
被加入到TODO
预执行列表中,就会触发参数break
。
注:有特殊情况,当遍历到的 action
中参数 inline=true
时,当前 action
不会放到 TODO
列表中,会被直接执行。常用语 set action
中,用于给变量赋值,并在接下来的 condition
中,作为条件被引用。
2、参数及用法
2.1 时间条件
<condition wday="6" hour="8-12">
其他相关参数:
year
: 日历年,0-9999yday
:一年中的某一天,1-366mon
:月份,1-12(一月份=1)mday
: 一个月中的某一天,1-31week
:一年中的某一周,1-53mweek
:一个月中的某一周,1-6wday
:一周中的某一天,1-7(周日=1,周一=2…),或者英语缩写"sun"、 “mon”、 "tue"等hour
:一天中的某小时,0-23minute
:一小时中的某一分钟,0-59minute-of-day
:一天中的某一分钟,(1-1440)(午夜=1,凌晨1点=60,正午=720)time-of-day
:格式化的时间范围,格式:hh:mm[:ss]-hh:mm[:ss] (秒数是可选的),例如:“08:00-17:00”date-time
:格式化日期/时间范围:格式YYYY-MM-DD hh:mm[:ss]~YYYY-MM-DD hh:mm:ss,例如:2010-10-01 00:00:01~2010-10-15 23:59:59
2.2 require-nested
默认值: true
当前参数用于嵌套条件
。
如果一个条件的 require-nested
参数值为 “true
” ,那么它的所有嵌套条件都必须为 true
(其表达式值为 true
),condition
才能计算为 true
。如果 “require-nested
” 值为 false
,那么只要它的表达式值为 true
,condition
结果就为 true
,不管嵌套条件是什么。
有兴趣,可以测试测试:
你可以修改 expression
,require-nested
, inline
, break
值。
<extension name="nested_example">
<condition field="destination_number" expression="^2901$" require-nested="false">
<action application="log" data="ERR 00 CIDnum is
${caller_id_number} CIDname is ${caller_id_name}"/>
<action application="set" data="var_01=N/A" inline="true"/>
<action application="set" data="var_02=N/A" inline="true"/>
<action application="set" data="var_03=N/A" inline="true"/>
<action application="set" data="var_04=N/A" inline="true"/>
<action application="set" data="var_05=N/A" inline="true"/>
<action application="log" data="ERR 01 I'm before..."/>
<action application="set" data="var_01=01" inline="true"/>
<action application="log" data="ERR 02 I'm before ${var_01}
${var_02} ${var_03} ${var_04} ${var_05}"/>
<condition field="caller_id_number" expression="1011" break="on-false">
<action application="log" data="ERR 03 I'm the first..."/>
<action application="log" data="ERR 04 I'm the first CIDnum is
${caller_id_number}"/>
<action application="set" data="var_02=02" inline="true"/>
<action application="log" data="ERR 05 I'm the first ${var_01}
${var_02} ${var_03} ${var_04} ${var_05}"/>
</condition>
<action application="log" data="ERR 06 I'm in between..."/>
<action application="set" data="var_03=03" inline="true"/>
<action application="log" data="ERR 07 I'm in between ${var_01}
${var_02} ${var_03} ${var_04} ${var_05}"/>
<condition field="${caller_id_name}" expression="Giovanni" break="on-false">
<action application="log" data="ERR 08 I'm the second..."/>
<action application="log" data="ERR 09 I'm the second CIDname is ${caller_id_name}"/>
<action application="set" data="var_04=04" inline="true"/>
<action application="log" data="ERR 10 I'm the second ${var_01}
${var_02} ${var_03} ${var_04} ${var_05}"/>
</condition>
<action application="log" data="ERR 11 I'm after..."/>
<action application="set" data="var_05=05" inline="true"/>
<action application="log" data="ERR 12 I'm after ${var_01}
${var_02} ${var_03} ${var_04} ${var_05}"/>
</condition>
</extension>
<extension name="call_has_not_stopped_before_here">
<condition field="destination_number" expression=".*">
<action application="log" data="ERR NOT STOPPED BEFORE HERE"/>
</condition>
</extension>
本文标签: 入门freeswitchcondition
版权声明:本文标题:【Freeswitch从入门到精通】六、Condition 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1728321531a1153885.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论