freeswitch電話軟交換配置使用筆記


我廠最近新買了新辦公樓,新辦公室那邊的電話系統:包括軟交換,數字中繼網關,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{4,})$">
<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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM