freeswitch中拨号计划

更新时间:2023-07-12 20:10:08 阅读: 评论:0

freeswitch中拨号计划
1、正则表达式
例子
 说明
^1234$ 
^匹配字符串的开头,$ 匹配字符串的结尾,
表示严格匹配1234
^1234 |5678$ 
|是或的意思,表示匹配1234或5678
俯视人物 
^123[0-9]$ 
表示匹配1230、1239
^123\d$ 
\d等于[0-9]
^123\d+$ 
表示匹配123开头的至少4位数的数字串
 
^123\d*$ 
表示匹配123开头的至少3位数的数字串 
 ^123
由于没有结尾的$,表示匹配任何以123开头
的数字串,或后面是字母的情况 
 123$ 
表示匹配任何以123结尾的字符串 
^123\d{5}$ 
 {5}表示精确匹配5位,包含它前面的一个
字符。匹配以123开头的所有8位数字串
^123(\d+)$ 
跟^123\d+$是相同的;匹配结果中除123
之外的数字都将存储在$1这个变量中,
在后面可以引用 
^123(\d)(\d+)$ 
如果用它跟12345678匹配,则匹配成功,
结果是$1=4,$2=5678 
 .
.表示匹配任意一个字符,“.*”表示匹配
任意字符串 
FreeSwitch提供了简单的API可以测试你写的正则表达式是否正确,只需要在命令行输入“regex 要匹配的字符串 | 正则表达式”即可。如:
freeswitch> regex 1234 | \d
true
freeswitch> regex 1234 | \d{4}
true
freeswitch> regex 1234 | \d{5}
fal
freeswitch> regex 1234 | ^123
true
2、通道变量
在FreeSwitch中,每一次呼叫都由一条或多条“腿(Call Leg)组成,其中的一条腿又成为一个Channel(通道),每一个Channel都由很有属性,用于标识Channel的状态、性能等,这些属性称为Channel Variable(通道变量),可简写为Channel Var、Chan Var或Var。
log的作用就是将信息写到日志中,他的第一个参数是loglevel,就是log的级别,不同的级别在彩色的终端上能以不同的颜色显示,日志的级别有以下几种(数越大显示越详细):
0 - CONSOLE
1 - ALERT
2 - CRIT
3 - ERR
4 - WARNING
5 - NOTICE
6 - INFO
7 - DEBUG
3、测试条件
大部分的测试条件都是针对被叫号码的,但你也可以对其他变量进行测试,如在
Dialplan的l中IP地址就可以这样测试:
<condition field="network_addr" expression="^192\.168\.200\.158$">
Dialplan中的测试条件
 变量
 说明
 context
Dialplan当前的Context 
 rdnis
 被转移的号码过年为什么吃饺子
 destination_number
 被叫号码
网络伦理 dialplan
 Dialplan模块的名字                   
 caller_id_name
 主叫名称
一句话形容春天 caller_id_number
 主叫号码   
 ani
主叫的自动号码识别 
 aniii
 主叫类型
 uuid
 本Channel的唯一标志
 source
 呼叫源,来自哪个Freeswitch模块
 chan_name               
 Channel名字
 network_addr
 主叫IP地址
 year
 当前的年
鹅鹅鹅古诗作者
 yday 
 一年中的第几天
 mon
 月
 mday 
 日
 week 
 一年中第几周
班主任工作总结 mweek   
 本月中的第几周
 wday
 一周中的第几天
 hour
小时,0-23 
鲫鱼功效
 minute   
 分,0-59
 minute-of-day   
一天中的第几分钟(1-1440) 
除此之外,测试还接受用户在用户目录中设置的变量,但必须使用${}对变量进行引用。如下面toll_allow就是在用户目录中设置的:
<condition field="${toll_allow}" expressio="internation">
如果在你的用户目录中设置以下变量,可以在Dialplan中通过condition一行进行相关测试。
用户目录中的设置:
<ur id="1000">
<variables>
<variable name="my_test_var" value="my_test_value"/>
</variables>
</ur>
Dialplan中的测试条件:
<condition field="${my_test_var}" expressio="my_test_value$">
测试条件不可以嵌套,但可以迭加。如下:
<extension name="Testing">
<condition field="network_addr" expression="^192\.168\.200\.158$"/>
<condition field="destination_number" expression="^1234$">
<action application="log" data="INFO , I know you called ${destination_number}"/>
</condition>
</extension>
两个condition是迭加关系,即只有在IP地址和被叫号码两个条件都匹配的情况下才执行
action,否则就跳过本extension ,继续解析下一项。
迭加的condition还可以构成其他关系,break参数就是用于实现这个功能,它有以下几个值:
on-fal:第一次匹配失败时停止,但继续处理其他extension ,这个是默认的配置。
on-true:第一次匹配成功时停止,会先完成对应的action,再继续处理其他extension。
always:不管是否匹配,都停止。
never:不管是否匹配,都继续。
假设呼叫1234,如果ip地址是192.168.200.158,就播放早上好,如果ip是192.168.200.159,就播放晚上好,设置如下:
<extension name="Testing">
<condition field="destination_number" expression="^1234$"/>
<condition field="network_addr" expression="^192\.168\.200\.158$" break="on-true">
<action application="playback" data="good-morning.wav"/>
</condition>
<condition field="network_addr" expression="^192\.168\.200\.159$">
<action application="playback" data="good-night.wav"/>
</condition>
</extension>
4、动作与反动作
<extension name="Testing">
<condition field="destination_number" expression="^1234$"/>
<condition field="network_addr" expression="^192\.168\.200\.158$" break="on-true">
<action application="playback" data="good-morning.wav"/>
<anti-action application="playback" data="good-night.wav"/>
</condition>
</extension>
如果呼叫ip地址来自192.168.200.158则播放good-morning.wav,否则播放good-night.wav。
兴华大学

本文发布于:2023-07-12 20:10:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1078869.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:匹配   表示   变量   号码   用于
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图