Freeswitch配置SIP閘道器撥打外部
阿新 • • 發佈:2020-08-14
Freeswitch配置SIP閘道器撥打外部電話
為了實現freeswitch能夠往外面(也就是打到你的手機號上)打電話,我們需要再freeswitch伺服器上配置一些引數,當然前提是需要有一個SIP閘道器(硬體),一般是向閘道器服務商(華為,奧科等)購買,也可以直接向電信運營商購買。
1. 新增閘道器
新增閘道器只需要在freeswitch伺服器目錄下的conf/sip_profiles/external/中建立一個XML檔案,名字可以隨便取,如gwl.xml,然後在這個檔案裡面輸入如下程式碼:
(注:1.4版本也可能是在conf/sbc/sbc_profiles/external/或者conf/insideout/sip_profiles/external
裡面)
<gateway name="gwl"> <param name="realm" value="SIP伺服器地址,可以是IP或者IP:埠"/> <param name="username" value="SIP使用者名稱"/> <param name="password" value="密碼"/> <param name="proxy" value="112.3.18.9:5060"/> 8 <param name="register" value="true" /> </gateway>
如果你的閘道器還需要其他引數,可以參閱同目錄下的"example.xml",但一般來說上述引數就夠了。你可以重啟freeswitch,或者執行以下命令使之生效:
freeswitch> sofia profile external rescan
顯示一下閘道器的註冊狀態:
freeswitch> sofia status
如果顯示gateway gwl的狀態時REGED,則表明以正確註冊到網關了,可以用命令試一下閘道器是否正常工作:
freeswitch> originate sofia/gateway/gwl/xxxxxxx &echo
以上命令回通過閘道器gwl呼叫號碼xxxxxx(手機號),被叫號碼接聽電話後,Freeswitch會執行echo程式,你就能聽到自己的回聲了。
2. 常用命令
- 啟動:freeswitch
- 啟動並後臺執行:freeswitch -nc
- 進入客戶端:fs_cli -H 127.0.0.1 -P 8021 -p password
- 退出客戶端:/exit, /bye, /quit Ctrl+D
- 停止:freeswitch -stop
- 查詢閘道器狀態: sofia status profile local
- 重啟閘道器: sofia profile local restart
- 檢視freeswitch的埠情況:netstat -anp|grep freeswitch
- 使用fs_cli進行呼叫:originate user/1003 &echo 其中&echo會把聽到的聲音返回給發出者
- 音訊編碼部分裝置不支援可以使用這個bgapi originate {absolute_codec_string=PCMU}user/1009 018162330576 xml default
- reloadxml 重新載入xml檔案
- 檢視當前註冊的使用者數量:sofia status profile internal
- 查詢資料夾:find / -name external -type d
- 複製檔案到多個資料夾:echo a b c | xargs -n 1 cp -v ./gwl.xml
- 重新註冊閘道器:sofia profile external register gw
- ps -ef | grep freeswitch netstat -apn | grep 8021
- 開啟sip訊息顯示 sofia global siptrace on
- 關閉sip訊息顯示 sofia global siptrace off
3. 預設埠作用
8021: fs_cli客戶端連線freeswitch的時候用的埠
5060: SIP軟電話連線的埠
官方freeswitch.docker的埠說明
4. 錯誤解決
- 報錯內容:
[ERROR] fs_cli.c:1659 main() Error Connecting [Socket Connection Error]
這個報錯說明Freeswitch服務沒有開啟,或者mod_event_socket沒有正確載入
可以在/usr/local/freeswitch/conf/autoload_config/event_socket.conf.xml 檔案修改監聽ip地址為0.0.0.0或者127.0.0.1
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<!--<param name="apply-inbound-acl" value="loopback.auto"/>-->
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>