freeswitch学习笔记:按时间进行路由

 按时间进行路由
有时候,在一些企业应用中,可能需要按时间段进行路由。例如,在上班时间路由到一个IVR,该IVR在报完
欢迎语后,可以引导转到人工总机接电话;而在下班后,来电就转到另外一个IVR,工作全部由电脑自动处理。
我们可以构造如下Dialplan:
<extension name="time_based_ivr">
 <condition wday="2-6" hour="8:30-17:30">
 <action application="ivr" data="ivr_day"/>
 <anti-action application="ivr" data="ivr_night"/>
 </condition>
</extension>
其中,我们可以看到,这里的测试条件(Condition)与以前的不同。以前我们大部分以destination_number
为测试条件,而在这里,我们有两个测试条件,一个是wday,一个是hour,这两个测试条件是逻辑“与”的关
系。其中,wday表示星期(星期日的值为“0”),一般上班的时间都是周一至周五,因而这里wday的值用“2~
6”表示;同时,这里的hour表示小时,即工作日的8:30至17:30为上班时间。
在有呼叫到达后,如果系统时间在该条件定义的范围内,则执行在后续的action中定义的App。这里,我们只
有一个action,它只是使用ivr App将呼叫转入白天应该播放的IVR(即ivr_day)。如果定义的条件不在这个范围
内,FreeSWITCH就会执行anti-action指定的App,它也是执行ivr,不过这次它的参数是另一个IVR——
ivr_night。

上面的例子没有测试被叫号码,会不会有什么副作用?这种担心不是多
余的。这里由于没有限制被叫号码,相当于任何被叫号码都会转到IVR,而实际上,我们只希望有人打我们的DID
号码时才转入IVR,所以我们的配置一般会比上面的更复杂一些。
首先,写一个extension,它会根据不同的时间执行不同的动作,如:
<extension name="time_based_ivr" continue="true">
 <condition wday="2-6" hour="8:30-17:30">
 <action application="set" data="ivr=ivr_day" inline="true"/>
 <anti-action application="set" data="ivr=ivr_night" inline="true/>
 </condition>
</extension>

与前面的extension不同的是,此处的extension中使用了“continue=true”属性。保证在Dialplan解析的时
候解析完此处会继续往下进行。如果当前的时间可以匹配这里的测试条件(工作日上班时间),便会执行set,设
置ivr变量的值为ivr_day;否则,则将ivr变量的值设为ivr_night。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值