最近需要开发有关智能外呼的项目,需要对Freesiwth相关内容进行详细的了解,学习整理整理。
一、常用总结
1、常用命令
fsctl loglevel [1-7]
# 设置日志levelreloadxml
# 重载xml文件regex 被匹配字符串|正则表达式
# 校验正则表达式是否正确,匹配到,返回true,否则返回falseregex 被匹配字符串|正则表达式|%[01...]
# 返回%0代表全部匹配内容,%1表示寄存器1内容,其他同理originate
发起呼叫。 如:建立A与B的通话,originate user/A &bridge(user/B) ,首先是fs与user/A建立一通通话(A leg),然后被bridge桥接到B上,当B接通后,形成(B leg),此时fs将A与B桥接在一起,A和B就可以通话了。eval $${变量名}
# 获取全局变量值,eg:eval $${sound_prefix}show interfaces
# 获取全局接口global_setvar 变量名=变量值
设置全局变量global_getvar 变量名
获取全局变量值
2、流程总结
2.1 context执行
fs执行每个extension
下的condition
,如果condition expression
满足,则在条件执行完毕后,执行break
。
condition
默认有break
– > "break='on-false'
,就会跳出,如果为'on-true'
和'nerver'
,继续检查下一个condition
。如果当前condition
条件不满足,但是其中有anti-action
,那么默认当前condition
条件已经进入,并只
执行anti-action App
,同理也会执行break
操作。Action和anti-action生存在condition内部。如果条件表达式匹配成功,则执行Action;否则执行Anti-action。
如果condition
不满足,那么继续下个condition
,不执行break
。
上述所有的action
,在fs
遍历到之后,并没有直接进行执行,而是将当前action
,放进TODO列表
中,当所有的extension
执行完毕之后(这儿有可能是全部执行完extension
,也有可能是extension
的continue
为false
来结束),再顺序执行TODO
中的所有[anti-]action
。
当然也有特殊情况,如果在action
标签中加入属性‘online=true’
,那么当前的[anti-]action
就会立刻被执行。目前只支持: set application
<action application="set" data="myvariable=abc" inline="true"/>
- break取值:
on-false: 这是缺省值,如果表达式值为 false ,不再检查下一个条件
on-true: 如果表达式值为 true ,不再检查下一个条件
never: 永远不跳出,继续检查后续条件
always: 不检查后续条件,直接跳出
10、FreeSWITCH通过迅时网关连接PSTN
11、使用sngrep抓包工具
sngrep :
Linux服务器可以直接暗转:
apt-get install sngrep