1. 程式人生 > 實用技巧 >Freeswitch配置SIP閘道器撥打外部

Freeswitch配置SIP閘道器撥打外部

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. 常用命令

  1. 啟動:freeswitch
  2. 啟動並後臺執行:freeswitch -nc
  3. 進入客戶端:fs_cli -H 127.0.0.1 -P 8021 -p password
  4. 退出客戶端:/exit, /bye, /quit Ctrl+D
  5. 停止:freeswitch -stop
  6. 查詢閘道器狀態: sofia status profile local
  7. 重啟閘道器: sofia profile local restart
  8. 檢視freeswitch的埠情況:netstat -anp|grep freeswitch
  9. 使用fs_cli進行呼叫:originate user/1003 &echo 其中&echo會把聽到的聲音返回給發出者
  10. 音訊編碼部分裝置不支援可以使用這個bgapi originate {absolute_codec_string=PCMU}user/1009 018162330576 xml default
  11. reloadxml 重新載入xml檔案
  12. 檢視當前註冊的使用者數量:sofia status profile internal
  13. 查詢資料夾:find / -name external -type d
  14. 複製檔案到多個資料夾:echo a b c | xargs -n 1 cp -v ./gwl.xml
  15. 重新註冊閘道器:sofia profile external register gw
  16. ps -ef | grep freeswitch netstat -apn | grep 8021
  17. 開啟sip訊息顯示 sofia global siptrace on
  18. 關閉sip訊息顯示 sofia global siptrace off

3. 預設埠作用

8021: fs_cli客戶端連線freeswitch的時候用的埠
5060: SIP軟電話連線的埠

官方freeswitch.docker的埠說明

4. 錯誤解決

  1. 報錯內容:
    [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>