码迷,mamicode.com
首页 > 其他好文 > 详细

freeswitch电话软交换配置使用笔记

时间:2014-09-10 17:30:50      阅读:835      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   os   io   使用   ar   文件   art   

我厂最近新买了新办公楼,新办公室那边的电话系统:包括软交换,数字中继网关,E1和VOIP,交由我去配置。多功能程序员 :)

下面是配置freeswitch过程中的一些记录,贴在这里与大家分享。更多详细资料请参考fs官方以及中文官网

1.freeswitch src里,有个perl脚本, add_user批量增加用户

2.查看用户注册情况sofia status profile internal reg

3.对5004用户进行模拟呼叫originate user/5004 &echo()

4.配置conf/dialplan/default.xml设置sip对外呼出(加0外拨,加00外地,本地区号去除,主叫方送号)
<extension name="Local_Extension2">
<condition field="destination_number" expression="^0(551)*([0-9]\d{5,})$">
<action application="export" data="dialed_extension=$1"/>
<action application="answer"/>
<action application="set" data="call_timeout=30"/>
<action application="set" data="record_sample_rate=8000"/>
<action application="export" data="RECORD_STEREO=false"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<condition field="caller_id_number" expression="^(50)([0-4][0-9])$">
<action application="set" data="effective_caller_id_number=123456$2"/>
</condition>
<!--<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>-->
<!--<action application="bridge" data="${rtmp_contact(default/${dialed_extension}@$${domain})}"/>-->
<action application="bridge" data="sofia/gateway/gw1/$1"/>
</condition>
</extension>

5. 配置外线呼入找号,公司内部拨内部长号转换为公司内部分机短号(帮公司省钱,公司新政应该分点奖金给我 0.0)
<extension name="public_extensions">
<condition field="destination_number" expression="^123456([0-4]\d)$">
<action application="pre_answer"/>
<action application="transfer" data="50$1 XML default"/>
</condition>
</extension>
<extension name="public_extensions">
<condition field="destination_number" expression="^([0-9]\d+)$">
<action application="pre_answer"/>
<action application="transfer" data="$1 XML default"/>
</condition>
</extension>

6. 拨号计划中查看所有Channel Variable. 通过使用 info 这个 APP,可以查看所有的 Channel Var。我们先修改一下 Dialplan。
<extension name="Show Channel Variable">
<condition field="destination_number" expression="^1235$">
<action application="info" data=""/>
</condition>
</extension>

变量对照表
http://wiki.freeswitch.org/wiki/Channel_Variables#Info_Application_Variable_Names_.28variable_xxxx.29

7.set和export的区别
<action application="set" data="dialed_extension=$1"/>
<action application="export" data="dialed_extension=$1"/>
set 是将变量设置到当前的 Channel 上,即 a-leg。而 export 则也将变量设置到 b-leg 上。当然,这里 b-leg 还不存在。所以在这里它对该 Channel 的影响与 set 其实是一样的。因此,使用 set 完全是多余的。但是除此之外,export 还设置了一个特殊的变量,叫 export_vars,它的值是dialed_extension。

8.拨号字符串中的通道变量
使用大括号{ } 和 中括号[] 的语法解释如下:
{foo=bar} 只能用在拨号字符串的开头. 它会在每个通道上设置相同的值.
[foo=bar] 它设置在某个特定的拨号字符串的前面,此通道变量值只对当前通道有效.
下面这个例子设置变量foo=bar 到所有通道,设置 chan=1 到blah 同时设置chan=2 到 blah2
如果你想让中括号[]内的变量覆盖同名大括号{}内设置的变量值,你可以在大括号{}内先设定 ‘local_var_clobber=true‘ ,例如:{local_var_clobber=true,sip_secure_media=true}sofia/default/blah1@baz.com|sofia/default/johndoe@example.com|[sip_secure_media=false]sofia/default/janedoe@acme.com

9.配置fs拨打外部网关
conf/sip_profiles/external下建立gw1.xml内容
<gateway name="gw1">
<param name="realm" value="192.168.1.2:5060"/>
<param name="username" value="5678"/>
<param name="password" value="1234"/>
<param name="register" value="false" />
<param name="caller-id-in-from" value="true"/>
</gateway>

10.实现IVR语言菜单www.freeswitch.org.cn/2010/03/21/yong-freeswitchshi-xian-ivr.html
首先如果要实现名字为welcome的语言菜单要修改conf/dialplan/public.xml
<extension name="incoming_call">
<condition field="destination_number" expression="^你的DID号码$">
<action application="answer" data=""/>
<action application="sleep" data="1000"/>
<action application="start_dtmf"/>
<action application="ivr" data="welcome"/>
</condition>
</extension>
其次welcome的语言菜单配置,修改conf/autoload_configs/ivr.conf
<configuration name="ivr.conf" description="IVR menus">
<menus>
<!--<menu name="demo_ivr">-->
<menu name="welcome"
greet-long="custom/welcome.wav"
greet-short="custom/welcom_short.wav"
invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
exit-sound="voicemail/vm-goodbye.wav"
timeout="15000"
max-failures="3"
max-timeouts="3"
inter-digit-timeout="2000"
digit-len="4">
<entry action="menu-exec-app" digits="0" param="transfer 1000 XML default"/>
<entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML default"/>
</menu>
</menus>
</configuration>


11.判断电话语音文件是否存在
<extension name="play-news-announcements">
<condition expression="${file_exists(${sounds_dir}/news.wav)}" expression="true"/>
<action application="playback" data="${sounds_dir}/news.wav"/>
<anti-action application="playback" data="${soufnds_dir}/no-news-is-good-news.wav"/>
</condition>
</extension>

12.接通后再录音录音时不要将前置媒体录制进去.
<action application="set" data="media_bug_answer_req=true"/>

13.fs中生成随机uuid
<action application="set" data="newuuid=${create_uuid()}"/>

14.FreeSWITCH在呼叫失败的情况下播放语音提示 http://zdm2008.blog.163.com/blog/static/20491545201321945439885/
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} ${dialed_extension}"/>
改为
<action application="playback" data="${originate_disposition}.wav"/>

15. fs_cli命令行桥接legA,legB电话

originate {effective_caller_id_number=xxxxxx}sofia/internal/5001@192.168.1.2 &bridge(sofia/gateway/gw1/xxxxxxxxxx)

 

freeswitch电话软交换配置使用笔记

标签:des   blog   http   os   io   使用   ar   文件   art   

原文地址:http://www.cnblogs.com/kennyhr/p/3964771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!