freeswitch是一個電話軟交換服務,因爲項目須要在網頁端作一個軟電話,特意研究了一下。web
安裝frees witch比較簡單,在centos下面推薦的方式是docker
yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-release yum install -y freeswitch-config-vanilla freeswitch-lang-* freeswitch-sounds-* systemctl enable freeswitch
能夠經過它控制f.順利的話上面三步就完成了安裝,對於通常狀況確實什麼依賴就安裝什麼依賴,實在不行能夠docker 部署它嘛。express
安裝完成了使用 netstat -anop|grep freeswitch 是能夠看到f佔用的端口的。其中5066是websocket端口,網頁端能夠直接用SIP.js鏈接,5060是SIP端口,不管軟電話仍是實體的IP電話均可以經過5060註冊上。默認有1000-1020 這20個用戶,默認密碼在$conf/var.xml裏面是能夠設置的,默認密碼也是1234。選用一個IP電話,填上IP+端口已經用戶密碼以後就註冊上了f.利用fs_cli是能夠看到這些註冊的設備的。centos
sofia status profile internal reg
註冊兩個以後就能夠互相撥打測試一下。bash
要想撥打出去的有一個SIP網關,SIP網關通常是運營商提供給你的,也能夠是本身的網關,不過也須要在運營商註冊。在$conf/sip_profiles/external目錄下面有一個example.xml,複製一個出來,而後填上提供的SIP地址已經帳號密碼。最後在fs_cli 裏面reloadxml就會去註冊。websocket
sofia status
光是註冊了網關還不夠,還得讓f知道什麼樣的號碼才須要丟給getway。因此須要在$conf/dialplan/default 裏面新建一個xml。若是是要求0開頭的就給getway須要這樣配置。app
<extension name="call out"> <condition field="destination_number" expression="^0(\d+)$"> <action application="bridge" data="sofia/gateway/om20/$1"/> </condition>
一樣須要fs_cli ->reloadxml。如今隨便用一個註冊在f上的話機加上0撥打本身的手機號都是能夠撥通的。若是打不過fs_cli能夠看到錯誤日誌的,分析日誌而且處理掉dom
如今還打不進來,要想外部能呼入得配置$conf/dialplan/public。若是我須要全部號碼呼入都同振,能夠這樣配置。socket
<condition field="destination_number" expression="^(.*)$"> <action application="set" data="domain_name=$${domain}"/> <!-- This example maps the DID 5551212 to ring 1000 in the default context --> <!-- <action application="transfer" data="1000 XML default"/>--> <!--順振動--> <!-- <action application="bridge" data="user/1002@${domain_name}|user/1001@${domain_name}"/>--> <!--同振動--> <action application="bridge" data="user/1002@${domain_name},user/1001@${domain_name}"/> <action application="set" data="bridge_early_media=true"/>
好了,如今別人打進來的時候全部註冊的話機都會響鈴。一個接聽了其餘的就會自動掛斷。學習
我也是剛剛研究freeswitch,說的不對的地方但願多多指正,互相學習