close
實作前言:

在試裝這個套件前,筆者陸續已經測過幾個商用或OpenSource的其他套件,憑心而論,如果是要應用在正式營運環境,還是建議使用商用的套件,例如 SisSky(請參閱之前的討論)。不過這套 SipTheeSkype 在整合 SIP 或 Asterisk 上還是有幾項優點:

  • 純Java的執行環境,所以可以在兩大主流作業平台Linux及Windows上運作。
  • OpenSource 的使用授權,意思就是可以免費使用它,這對玩家可是很重要。
  • 不限定 Skpe Channel 數,這取決於主機的硬體效能而定,依照官方的 FAQ 說明如下
    Windows - 56-70mb - Approx 12% cpu with an AMD Athlon 2700
    Linux - 52mb+ for SipTheeSkype & Skype and 16mb+ for Xvfb & xterm - Approx 5% cpu with an AMD Athlon 2700. If you use a different method to create X sessions, your memory usage will be different.
  • 可以與 Asterisk 運行在同一個機器上,不過這只能運行單一個 Skype channel。
  • 同一個 Skype 帳號整合 Asterisk Trunk,可作為 Outbound Route 或 Inbound Route,但不可同時為兩者用途。

這套件可以使用在三種模式下,分別是

  • 與 SIP adapter 連接,例如 Sipura PAP2。
  • 與 IP PBX 整合,例如 Asterisk Server。
  • 與 SIP Provider 連接,例如 GizmoProject。

其各自的流程說明如下

for SIP adapter)

  • SIPDevice --> SipTheeSkype --> SkypeSTS --> SkypeUser or SkypeOut to PSTN
  • SkypeUser or SkypeIn --> SkypeSTS --> SipTheeSkype --> SIP Device or SIP Destination

for IP PBX)

  • SIPCaller --> Asterisk/PBX --> SipTheeSkype --> SkypeSTS --> SkypeUser or SkypeOut to PSTN
  • SkypeUser or SkypeIn --> SkypeSTS --> SipTheeSkype --> Asterisk --> SIP destination

for SIP Provider)

  • SIPCaller --> SIPProvider --> SipTheeSkype --> SkypeSTS --> SkypeUser or SkypeOut to PSTN
  • SkypeUser or SkypeIn --> SkypeSTS --> SipTheeSkype --> SIP destination

以上的 SkypeSTS 是指設定在 SipTheeSkype 的 Skype 帳號。

官網連結 - http://www.mhspot.com/siptheeskype.html

心得分享:

實作的軟硬體環境介紹

  • Server 硬體 - Asus ep20, 需有音效卡裝置
  • IP PBX - Elastix 1.1-8 (Asterisk 1.4.19 + FreePBX2.4.1.2)
  • Skype - for Linux 2.0.0.72
  • SipTheeSkype - SipTheeSkype3_20081101 + stsTrunkBuider_20081026

在這次實作我們將套件裝在 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,卻渾然不知自己的頻寬已被這家公司拿來作分享。

 

◆下載 java SE Runtime Enviroment(JRE) 6 Update 10

- 前往連結

安裝 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 版本號。

◆下載安裝 vncserver

由於在下一個 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 for CentOS Linux

- 前往連結

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 有兩個設定要注意:

  1. 勾選自動登入並記憶密碼。
  2. 取消自動更新。
◆驅動音效卡

這個步驟是筆者花費最多時間的,原因是這次選用的機器 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 

 

 

◆下載安裝 SipTheeSkype SIP Skype Bridge

- 前往連結

選擇 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 主機,主要資訊如下

  • SIP server = sptheeskype 主機 IP
  • Port = 5070
  • 不要勾選註冊功能
  • username/password = skype/123456

用 SJphone 撥 5551,如連結正確,會聽到 Skype 的 Echo Test,撥通正常後,也試試看能不能聽到自己的聲音,如果都沒問題,已經完成大部分的設定了。

不過,如果要和 Asterisk 整合,還有一項工作要作,下載 SipTheeSkype Skype Trunk Builder,這工具將幫助你快速建立所需的設定檔。

 

Skype Trunk 整合 Asterisk

參考文章:http://www.mhspot.com/siptheeskype_s...unk_howto.html

下載及安裝 stsTrunkBuilder

在開始安裝這個工具前,先作個簡單說明,不然會與上述的 SipTheeSkype 這支程式有所混淆。

SipTheeSkype - 這是建立 Skype Channel 的主程式,所以要繼續以下有關 Asterisk 整合 Trunk 的步驟前,一定要先完成所有步驟,並且作完 SIP device/softphone --> Skype 的測通步驟。

 stsTrunkBuilder - 這是基於上述的主程式的設定檔產生器,透過這,可以很快速的建立,每個 Skype Channel 連結 Asterisk 所需的所有設定檔及啟動檔。既然它只是用來產生設定檔,所以只要熟悉主程式的用法,也可以手動逐一建立這些設定檔,而完全不需要這個工具。

到這個連結下載最新版的 stsTrunkBuilder

#unzip -d /opt/ststrunkbuilder tmp_3170f_stsTrunkBuilder_20081026.zip
#cd /opt/ststrunkbuilder
#cp -a samples/* ./

編輯設定檔 stsTrunkDef.cfg
#vi stsTrunkDef.cfg

  1. ## 要作 Trunk 的 Skype 帳號,可輸入多組   
  2. skypeUserList=skypeuser1,skypeuser2   
  3.   
  4. ## 輸入 SipTheeSkype 的安裝目錄,本例為 /opt/siptheeskype   
  5. stsBaseConfigFile=/opt/siptheeskype/siptheeskype.cfg  

產生Skype Trunk 所需的設定檔及啟動檔

#chmod u+x trunkConfig_linux
#./trunkConfig_linux

這些產生出來的設定檔及啟動檔,若一切都正常,會儲存在 SipTheeSkype 的程式目錄下,此例為 /opt/siptheeskype。

簡單的說明一下,這些檔案的用途:

  • stsTrunk_01_start - 啟動第一組 Skype Channel
  • stsTrunk_01.cfg - 第一組 Skype Channel 的設定檔
  • stsTrunk_01_stop - 關閉第一組 Skype Channel
  • 若有第二組、第三組以此類推
  • stsTrunkStartAll_linux - 啟動所有 Skype Channel
  • stsTrunkStopAll_linux - 關閉所有 Skype Channel

用視窗模式以 root 登入主機,第一次啟動任一組 Skype Channel 時,必須先作設定的初始化,啟動指令再加一個參數 config:

#cd /opt/siptheeskype
#./stsTrunk_01_start config

初始化的過程,會開啟 xterm 視窗以及呼叫 Skype 程式(請先完成 Skype 的安裝),依序完成 Skype 的登入程序,登入的Skype帳號要與第一組設定檔所指定的相同,並且確認以下的設定:

  • 在 Skype 的登入設定要勾選密碼記憶
  • 若一切都正常,會跳出 Skype API 執行確認的提示窗,除了選 Yes 外,要勾選 "不要再提示" 的選項。

到這邊已經完成了第一個 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 也按此法依序啟動。

 

 

Tips:
  1. 如果從 SIP 分機撥 Skype Echo Test,都無法聽到自己的聲音,請檢查 /etc/hosts 的設定。
  2. 從 Skype 帳號撥入進 Asterisk 的 IVR,無法辨識 DTMF 按鍵訊號時,請修改檔案 siptheeskype.cfg 或 stsTrunk_xx.cfg 的兩個參數
    enableSkypeDtmfDetector=yes
    inbandFullTimeDtmfDetection=yes
  3. 錯誤:Xvfb: command not found
    Ans: yum install xorg-x11-server-Xvfb
  4. 如果使用多個 Skype Channels,每啟動一個 Skype Channel會佔用 port 5070+1,例如:
    skypeuser1 - port 5070
    skypeuser2 - port 5071
    skypeuser3 - port 5072

    然而在 CentOS 預設環境下,這些 port 可能被其他系統佔用,請將需要用到的 port number 空出給 SipTheeSkype 使用,步驟如下:
    修改 /etc/services

    // 註解會用到的 port
    #powerschool     5071/tcp                        # PowerSchool
    #powerschool     5071/udp                        # PowerSchool
    #ayiya           5072/tcp                        # Anything In Anything
    #ayiya           5072/udp                        # Anything In Anything

    檢查 port 是否有開啟,執行指令
    #netstat -lu | grep 507
  5. 錯誤:error opening security policy file /usr/lib/xserver/SecurityPolicy
    Ans:yum install xorg-x11-server-Xorg

 

 

 

 

arrow
arrow
    全站熱搜

    安德森 發表在 痞客邦 留言(0) 人氣()