在試裝這個套件前,筆者陸續已經測過幾個商用或OpenSource的其他套件,憑心而論,如果是要應用在正式營運環境,還是建議使用商用的套件,例如 SisSky(請參閱之前的討論)。不過這套 SipTheeSkype 在整合 SIP 或 Asterisk 上還是有幾項優點:
這套件可以使用在三種模式下,分別是
其各自的流程說明如下
for SIP adapter)
for IP PBX)
for SIP Provider)
以上的 SkypeSTS 是指設定在 SipTheeSkype 的 Skype 帳號。
官網連結 - http://www.mhspot.com/sts/siptosis.html
更新:[2012-03-13] 軟體名稱已更名為 SipToSis。
實作的軟硬體環境介紹
在這次實作我們將套件裝在 Elastix Server 上,所以只能運行一個 Skype Channel,並且在與 Asterisk 作整合時,當建立了 Trunk 可使用 Skype 帳號撥出時,卻無法使用 Skype 帳號的撥入,必須刪除 Trunk 或 Disable 才可以正常撥入,原因有可能是運行在同一機器的關係。
至於大家最關心的通話品質,實在很抱歉,我們並沒有和其他 Skype 用戶作充分的通話測試,只是簡單的用幾個 Skype 帳號互相作單向的測試,即使如此,結果顯示它的通話品質應該是可以接受的。
就我們作過 Skype 整合 SIP 的經驗上,不管是用哪一套,若 Skype 與 SIP 分屬不同主機上,必須同屬在內部網路(LAN),否則通話品質會因網路關係大打折扣。
這個套件與其他的商用或非商用型套件架構相同,皆以 Skype API 方式與 SIP 溝通,這樣雖然不是個很好的方式,但以目前 Skype 仍屬封閉的軟體來說,暫時也沒有更好的方式,不過 Skype 官方已經在考慮開發與 Asterisk 整合的版本(詳見討論區),希望很快能有進一步的釋出計畫。
雖然很辛苦的將它安裝起來了,不過最後還是沒將它掛上線,原因是 Skype 啟動後,即使沒有使用,頻寬仍會被偷偷吃掉,對此我很反感,如果頻寬不是很大的人,還是建議別想用 Skype。很多人很快樂在用 Skype,卻渾然不知自己的頻寬已被這家公司拿來作分享。
- 前往連結
安裝 jre-6u10-linux-i586.bin:
#chmod u+x jre-6u10-linux-i586.bin #./jre-6u10-linux-i586.bin 閱讀授權政策完後輸入 yes #mv jre1.6.0_10/ /opt #vi /etc/profile.d/java.sh 輸入以下這一段 JAVA_HOME=/opt/jre1.6.0_10 JAVA_BIN=$JAVA_HOME/bin PATH=$PATH:$JAVA_BIN export JAVA_HOME JAVA_BIN PATH
驗證 Java,重新再登入 console,執行
#java -version
此時應輸出正確的 Java 版本號。
由於在下一個 Skype 安裝步驟前,系統需先具備視窗的執行環境,且為了方便遠端管理,也一併將 VNC 套件裝上(請注意:基於系統安全考量,VNC 套件可選擇不裝)。
安裝 GNOME 視窗套件 #yum groupinstall "GNOME Desktop Environment" 重開機 #reboot 安裝 vncserver #yum install vnc-server 設定 vncserver,以root執行以下指令,第一次執行時,系統會要求設定 vnc 登入密碼。 #vncserver 檢查 vncserver 的通訊埠,若有出現 port 590x,表示 vnc 啟動中。 #netstat -lt 關閉 vncserver 服務,如服務埠是 5902,請輸入 :2,埠號的最後一碼。 #vncserver -kill :2
- 前往連結
Skype 一定要與 siptheeskype 裝在同一部主機。以 root 登入 console
#wget http://www.skype.com/go/getskype-linux-centos 安裝其他相依性套件 #yum install qt4.i386 #rpm -ivh skype-2.0.0.72-centos.i586.rpm
進入視窗環境,啟動 Skype 時要以 root 身份執行,若以一般用戶執行有可能無法抓到音效卡。第一次啟動 Skype 作初始化設定,這與在 Windows 的差不多,開啟終端機執行以下指令:
#skype&
因為要配合 SipTheeSkype,Skype 有兩個設定要注意:
這個步驟是筆者花費最多時間的,原因是這次選用的機器 Asus ep20,在 Linux 預設環境無法正常驅動內建的音效卡,不過還好的是,在查了 Google 後,這內建的音效卡晶片是有支援 Linux,但要手動安裝驅動程式,又這款機器在網路上查到有使用在 Linux 的資料很少,如果能選擇有支援 Linux 音效驅動的機器,就可以減少不少的安裝時間。
以下步驟是以 Asus ep20 內建音效卡驅動為例。
#wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.17.tar.bz2 #wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.17a.tar.bz2 #wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.17.tar.bz2 #tar -xjf alsa-driver-1.0.17.tar.bz2 #cd alsa-driver-1.0.17 #./configure --with-cards=hda-intel --with-sequencer=yes #make #make install #cd ../ #tar -xjf alsa-lib-1.0.17a.tar.bz2 #cd cd alsa-lib-1.0.17a #./configure #make #make install #cd ../ #tar -xjf alsa-utils-1.0.17.tar.bz2 #cd alsa-utils-1.0.17 #./configure #make #make install #cd ../ #alsaconf
- 前往連結
選擇 SipTheeSkype3_20081025.zip,下載後上傳至 Elastix 主機上目錄 /usr/src。
安裝:
#mkdir /opt/siptheeskype #cd /opt/siptheeskype #unzip /usr/src/SipTheeSkype3_20081101.zip #cp samples/* ./
修改檔案 siptheeskype.cfg,取代 192.168.0.4 為執行 siptheeskype 的主機 IP。
#vi siptheeskype.cfg //-------------------------------------------------------------------------------------------------------- #Sample config with NO registration - change 192.168.0.4 to ip address of computer running siptheeskype # username and password not important in this mode #Set to available port to transport SIP messages on siptheeskype computer host_port=5070 contact_url=sip:skype@192.168.0.4:5070 from_url="Skype" <sip:5611111111@192.168.0.4:5070> username=skype passwd=123456 realm=192.168.0.4
啟動 Skype
#skype &
先完成帳號登入。
啟動 siptheeskype
#./SipTheeSkype_linux
此時會出現提示視窗,請予許所執行的程式。
到這裡已經完成整合終端 SIP 設備/軟體電話撥 Skype 的環境了。
作測試時,可使用 SJphone 註冊至 siptheeskype 主機,主要資訊如下
用 SJphone 撥 5551,如連結正確,會聽到 Skype 的 Echo Test,撥通正常後,也試試看能不能聽到自己的聲音,如果都沒問題,已經完成大部分的設定了。
不過,如果要和 Asterisk 整合,還有一項工作要作,下載 SipTheeSkype Skype Trunk Builder,這工具將幫助你快速建立所需的設定檔。
參考文章:http://www.mhspot.com/siptheeskype_s...unk_howto.html
在開始安裝這個工具前,先作個簡單說明,不然會與上述的 SipTheeSkype 這支程式有所混淆。
SipTheeSkype - 這是建立 Skype Channel 的主程式,所以要繼續以下有關 Asterisk 整合 Trunk 的步驟前,一定要先完成所有步驟,並且作完 SIP device/softphone --> Skype 的測通步驟。
stsTrunkBuilder - 這是基於上述的主程式的設定檔產生器,透過這,可以很快速的建立,每個 Skype Channel 連結 Asterisk 所需的所有設定檔及啟動檔。既然它只是用來產生設定檔,所以只要熟悉主程式的用法,也可以手動逐一建立這些設定檔,而完全不需要這個工具。
#unzip -d /opt/ststrunkbuilder tmp_3170f_stsTrunkBuilder_20081026.zip #cd /opt/ststrunkbuilder #cp -a samples/* ./
編輯設定檔 stsTrunkDef.cfg
#vi stsTrunkDef.cfg
產生Skype Trunk 所需的設定檔及啟動檔
#chmod u+x trunkConfig_linux #./trunkConfig_linux
這些產生出來的設定檔及啟動檔,若一切都正常,會儲存在 SipTheeSkype 的程式目錄下,此例為 /opt/siptheeskype。
簡單的說明一下,這些檔案的用途:
用視窗模式以 root 登入主機,第一次啟動任一組 Skype Channel 時,必須先作設定的初始化,啟動指令再加一個參數 config:
#cd /opt/siptheeskype #./stsTrunk_01_start config
初始化的過程,會開啟 xterm 視窗以及呼叫 Skype 程式(請先完成 Skype 的安裝),依序完成 Skype 的登入程序,登入的Skype帳號要與第一組設定檔所指定的相同,並且確認以下的設定:
到這邊已經完成了第一個 Skype Channel 的初始化設定以及啟動,請繼續按同樣的方法依序完成第二個、第三個 Skype Channel 的初始化及啟動。
在完成所有 Channel 的初始化啟動後,雖然此時所有 Channel 都已經啟動了,但卻只有最後啟動的那個 Channel 可以作用,在反覆閱讀官方的資料後,才理解,初始化的啟動模式會影響多 Channel 之間的運作。
所以做完初始化後,先關閉各 Channel,執行:
#cd /opt/siptheeskype #./stsTrunk_01_stop #./stsTrunk_02_stop
注意:關閉 Channel 時,同時也會自動關閉相應的 Skype 程式,所以不用先手動關閉 Skype。
啟動 Skype Channel,但不要加任何參數:
#./stsTrunk_01_start
這時啟動的程序會丟到背景執行,你可以使用以下指令,檢視程式是否已執行:
#ps -ef | grep skype
root 15034 15021 23 22:12 pts/4 00:00:03 skype --dbpath=/opt/siptheeskype_20081101/skype_stsTrunk_01/root 15049 15048 9 22:12 pts/4 00:00:00 java -Xms24m -Xmx24m -Djava.library.path=. -classpath tritonus_gsm-0.3.6.jar:tritonus_share-0.3.6.jar:jmf.jar:jspeex.jar:sip.jar:ua.jar:skype.jar:log4j-1.2.15.jar:siptheeskype.jar:. local.ua.SkypeUA stsTrunk_01.cfg
其他 Channel 也按此法依序啟動。
Images 1 | ||
---|---|---|
![]() siptheeskypemy_siptheeskype.png |
不過我後來測試後又發生另一個問題,我的環境是用3個skype帳號生成3個trunk,然後我用外部的skype打給trunk其中一個skype帳號,很順利的可以接通並通話,然後沒掛掉,再用一個外部的skype帳號撥打剩下的兩個trunk的其中一個,我的ip phone有順利的響鈴,然後拿起電話要聽時,電話馬上斷線,而我第二個外部的skype那邊顯示遠端的音效裝置有問題,而原本第一通建立好的那個通話,在ip phone那邊也只剩下可以聽到不能說話了,我在想應該是第二個skype要打進來時兩個ip phone互搶音效裝置,所以才造成第二通電話音效裝置有問題和造成原本第一個通話ip phone那邊只能聽不能說,請問是跟ALSA有關嗎?因為有看到官方網站有提到這個,若是這樣的話怎樣解決呢?我音效那邊弄很久還是沒解決問題,請問A.Lang大你有遇到這個問題過嗎?
感謝解答~ 編輯者 19:27, 4 Dec 2008
不過我剛開始就是透過stsTrunkBuilder創出的trunk來啟動skype的,這個不是就是類似SipTheeSkype來啟動skype嗎?或者alang大指的是其他意思?
因為SipTheeSkype算是主程式,stsTrunkBuilder算是幫你創出一些和Asterisk連接的設定檔和執行檔,所以當他執行的時候不是也算是用SipTheeSkype幫你執行兩個skype嗎?或者alang大的意思不是只這樣?可以請alang大指點一下嗎?
我自己有試過複製兩個SipTheeSkype到兩個資料夾,分別為SipTheeSkype1和SipTheeSkype2,然後又用兩個stsTrunkBuilder分別為那兩個SipTheeSkype個別創一個trunk,然後來試看看這兩個trunk可不可行,但是還是發生一樣的狀況....@@