實作前言:

    在試裝這個套件前,筆者陸續已經測過幾個商用或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/sts/siptosis.html

    更新:[2012-03-13] 軟體名稱已更名為 SipToSis

    心得分享:

    實作的軟硬體環境介紹

    • 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

    ## 要作 Trunk 的 Skype 帳號,可輸入多組
    skypeUserList=skypeuser1,skypeuser2
    
    ## 輸入 SipTheeSkype 的安裝目錄,本例為 /opt/siptheeskype
    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

     

    ◆操作畫面

     my_siptheeskype.png

     

    Was this page helpful?
    標籤 (Edit tags)
    • No tags

    文件 1

    文件大小日期附件上傳者 
     my_siptheeskype.png
    siptheeskype
    102.05 KB17:54, 8 Nov 2008alang動作
    查看第14個(總14個)評論: 查看所有
    1 個Channel 是最大缺點...另外admin 方式也不太理想..
    發佈時間 12:21, 14 Nov 2008 ()
    非常好,Skype Trunk 整合 Asterisk的实例也写上来吧,根据官方的介绍配置trunk失败
    發佈時間 04:26, 23 Nov 2008 ()
    請問有人用stsTrunkBuilder然後把多channel弄出來嗎?因為我怎樣弄都弄不太出來,不知道是不是如同作者說的因為和Asterisk放在同樣一部電腦所以才只能有一個channel,有人有在弄多路的嗎?可以一起討論嗎?感謝感謝。 編輯者 16:15, 25 Nov 2008
    發佈時間 15:06, 25 Nov 2008 ()
    A.Lang大你好,後來照你的方法初始化後再關掉重新執行就OK了,現在才知道用初始化模式下去啟動會互相影響,感謝~
    不過我後來測試後又發生另一個問題,我的環境是用3個skype帳號生成3個trunk,然後我用外部的skype打給trunk其中一個skype帳號,很順利的可以接通並通話,然後沒掛掉,再用一個外部的skype帳號撥打剩下的兩個trunk的其中一個,我的ip phone有順利的響鈴,然後拿起電話要聽時,電話馬上斷線,而我第二個外部的skype那邊顯示遠端的音效裝置有問題,而原本第一通建立好的那個通話,在ip phone那邊也只剩下可以聽到不能說話了,我在想應該是第二個skype要打進來時兩個ip phone互搶音效裝置,所以才造成第二通電話音效裝置有問題和造成原本第一個通話ip phone那邊只能聽不能說,請問是跟ALSA有關嗎?因為有看到官方網站有提到這個,若是這樣的話怎樣解決呢?我音效那邊弄很久還是沒解決問題,請問A.Lang大你有遇到這個問題過嗎?
    感謝解答~ 編輯者 03:27, 5 Dec 2008
    發佈時間 03:25, 5 Dec 2008 ()
    我並沒有測過同時撥兩個 Skype Channels 狀況,但你提到的問題是有可能發生的。
    發佈時間 18:37, 6 Dec 2008 ()
    我那個情況後來測試好像感覺是skype問題,就是我沒啟動siptheeskype的情況下只單獨執行兩個skype帳號(in centos5.2 linux)然後用其他兩台電腦分別各開一個skype帳號撥打給linux那兩個skype帳號,第一部電腦撥打給那個linux那台很OK,順利可以通話,我就沒掛斷方在旁邊,然後再用另外一台電腦撥打給linux那台另一個skype帳號,結果發生一模一樣的狀況,就是遠端音效裝置有問題,然後linux那台第二個skype帳號就當在那邊,不能掛斷或怎樣,只能登出。所以感覺應該是多個skype client戶搶電腦音效裝置的關係。請問有人知道這個怎樣可以解決嗎?因為對linux不熟。我再找看看有沒有解決方法來試看看,希望有遇到類似情況或者熟linux的大大們可以指點一下,感謝。
    發佈時間 01:33, 8 Dec 2008 ()
    如果沒有透過 SipTheeSkype,只是啟動兩個 Skype 帳號,這是肯定不行的。你應該試試藉由 SipTheeSkype 啟動多個 Skype 帳號下,能否 work。
    發佈時間 13:10, 8 Dec 2008 ()
    soga,原來這樣直接啟動是一定不行的喔,我以為可以,所以以為問題是出現在這邊,因為他們發生的情況是一模一樣的,就是當第二通要接通的時候都會出錯,然後都是遠端音效裝置出問題。
    不過我剛開始就是透過stsTrunkBuilder創出的trunk來啟動skype的,這個不是就是類似SipTheeSkype來啟動skype嗎?或者alang大指的是其他意思?
    因為SipTheeSkype算是主程式,stsTrunkBuilder算是幫你創出一些和Asterisk連接的設定檔和執行檔,所以當他執行的時候不是也算是用SipTheeSkype幫你執行兩個skype嗎?或者alang大的意思不是只這樣?可以請alang大指點一下嗎?
    我自己有試過複製兩個SipTheeSkype到兩個資料夾,分別為SipTheeSkype1和SipTheeSkype2,然後又用兩個stsTrunkBuilder分別為那兩個SipTheeSkype個別創一個trunk,然後來試看看這兩個trunk可不可行,但是還是發生一樣的狀況....@@
    發佈時間 22:23, 8 Dec 2008 ()
    我有用初始化的那個模式下(./stsTrunk_XX_start config)來開啟每個trunk,然後因為只有最後一個trunk可以作用,所以我先以外部一部電腦上的skype帳號來撥通那個trunk的skype帳號,然後建立通話,後來在用另一部電腦的skype來撥剩下那兩個trunk其中一個skype帳號,因為用初始化模式他會有xterm視窗出現,然後在xterm視窗裡面有出現一個錯誤訊息,ALSA lib pcm_dsnoop.c:606:(snd_pcm_dsnoop_open) unable to open slave,我感覺是ALSA問題,我在google一下看看那個錯誤訊息怎樣改,到時弄好再測試看看。或者有人知道怎樣修正的話可以教一下嗎?改好在來測試看看。感謝~
    發佈時間 22:59, 9 Dec 2008 ()
    爲什麽./trunkConfig_linux執行后沒有生成stsTrunk_01_start和stsTrunk_01_stop,只有stsTrunk_01.cfg和stsTrunk_01_log.propeties系統centos6.4,stsTrunkBuilderLinux_20110808,請各位大神指點,急求感謝!
    發佈時間 21:28, 8 Jan 2014 ()
    Hi sky-2014, 這篇是幾年前所寫得,新版的作法不大一樣,你要用 stsTrunk_Control 來取代。
    發佈時間 12:54, 9 Jan 2014 ()
    alang,謝謝,看了你的教程,前面的已經Ok,多channel還沒實現,不知是否有更詳細的教程可以分享,感謝。
    發佈時間 20:44, 10 Jan 2014 ()
    sky-2014: 我記得官網有完整的教學。
    發佈時間 17:07, 13 Jan 2014 ()
    谢谢alang,多channel已經配置好了,感谢!
    發佈時間 15:44, 8 Feb 2014 ()
    查看第14個(總14個)評論: 查看所有
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core