asterisk撥打PSTN

現在介紹怎樣讓 asterisk 撥打到 PSTN(公共交換電話網) 換句話說也就是打到傳統電話線路啦!

首先你得具備底下所提到的這三個條件,你才能設定 asterisk 撥打到 PSTN

1.asterisk卡

此卡有分為類比卡(analog interface card)和數位卡(digital interface card)

類比卡(analog interface card)
可在這家公司 digium 買到卡,當然網路上其它地方也可以買到,4port 卡的型號是 TDM400P , 8port 卡的型號是 TDM800P用這樣的型號去網路上找就可以找到哪些地方有賣。其它家公司也有在賣: RhinoSangomaVoicetronixPikaTechnologies 這些都是國外的,國內的店家:康特龍冠科技訊詠科技

數位卡(digital interface card)
以上所提到賣類比卡的店家,通常都有在賣數位卡。數位卡與類比卡不同的地方在於:
類比卡的FXO port 可直接接我們向中華電信所申請的電話線上去。
數位卡,你就得向中華電信申請 ISDN 專線後接到這張卡上才能使用。

ISDN 專線分為 T1 和 E1
T1 月租費大約12000元左右,提供23 個 chanel (也就是說有23條電話線可打啦)
E1 月租費沒問到(但肯定比T1貴),提供30 個 chanel

參考資料:
a. ISDN Basic Rate Interface:
ISDN BRI可以同時提供兩個通話,以兩個64K的B Channel傳送語音與一個16K的D Channel傳送資料,再加一個48K的訊框同步構成一個192Kbps的傳輸通道。

b. T1 Channel Associated Signaling:
T1總頻寬為1.544M,共有24個64Kb頻道,其中56K做為聲音傳輸、8K做為訊號傳輸。訊號傳輸方式分為Super Frame (SF)與 Extended Super Frame(ESF),SF把12個Frame綁在一起,每第6個Frame做為訊號傳輸;而ESF把24個Frame綁在一起,也是每第6個Frame做為訊號傳輸。
c. T1 Primary Rate Interface: (Common Channel Signaling)
T1 PRI與CAS的差別只在於訊號的傳輸改用Out Of Band的方式,用24個通道的最後一個通道做為訊號傳輸,這種方式叫CCS(Common Channel Signaling),所以有23個B Channel傳輸音訊、一個D Channel傳輸訊號。

d. E1 Channel Associated Signaling:
E1總頻寬為2.048M,共有32個64Kb頻道,分別於T1取其8K做為訊號傳輸,E1以Out Of Band的方式在第1、17頻道進行訊號傳輸,所以總聲音傳輸通道為30個64Kb。
e. E1 Primary Rate Interface: (Common Channel Signaling)
與E1 CAS唯一的差別只在於訊號傳輸方式,E1 PRI用Q.931.

來源:http://smalleaf.blogspot.tw/2010/11/ccna-voice-640-460.html

ISDN參考資料asterisk卡專區

2.VoIP Gateway
市面上有很多這種 voip gateway ,購買時最好注意一下它是否有支援 sip trunk 設定,有的話設定起來會比較簡單。有了這種Voip Gateway 的話,就可以不用買卡了。

3.二類電信節費廠商
或是你可以向二類電信廠商申請一個節費的帳號,設定在 asterisk 裡,然後你就可以撥打了。

二類電信參考資料


底下介紹VoIP Gateway 具體設定方法

VoIP Gateway 設備: 公司:偉僑 型號:WellGate 2680 文件下載

1.先連入 VoIP Gateway 的設定頁面

voice gateway設定教學

在 Primary proxy 的地方請打勾,然後填入 asterisk 的 IP 和 port 位

在 SIP Trunk Configuration 的地方都打勾,然後填入一組帳密,建議最好先把帳密都設成一樣的,因為一會兒 VoIPGateway 要用這組帳密去註冊到 asterisk ,而 asterisk 上面也要開這一樣一組帳密讓這 VoIP Gateway來註冊,為免搞錯帳密的位子先都填一樣吧,之後對 asterisk 比較熟了之後,再回來改帳密吧。

都填完後,先按下方的 Aplly 儲存設定,然後接下來先去 asterisk 那兒開完帳號之後,再回來這裡,按左下方的 Reboot 重開機,重開機之後 VoIP Gateway 就會去向 asterisk 註冊了。

asterisk目前並不支援 VAD(voice activity detector, 語音行為偵測) 這個功能,因此你的voip設備上面若有這個功能的話,請記得把它關掉,避免產生不必要的問題。例如:偉僑的voip gateway 在 Voice Setting 裡面就有 VAD 功能選項,預設是關閉的,不需要將它打開。

2. asterisk 設定

sip.conf 檔設定

[2000]
type=friend
context=my-phones
secret=1234
host=dynamic
disallow=all
allow = ulaw,alaw,g729
 
[2680]
type=peer
username=2680
secret=2680
fromuser=2680
fromdomain=192.168.1.1
host=dynamic
port=8104
;canreinvite=no
dtmfmode=rfc2833
context=my-phones
disallow=all
allow = ulaw,alaw,g729



extensions.conf 檔設定

[my-phones]
exten => _0[1-9].,1,Dial(SIP/${EXTEN}@2680)

安裝codecs

因為 asterisk 預設沒有安裝 g729,g723 這兩種解碼器
所以我們還要為 asterisk 安裝新的語音解碼器(codecs) 安裝codecs參考資料1安裝codecs參考資料2

asterisk codecs 可在這裡下載,選擇你合適的CPU 下載

若你是 64bit 系統,請選擇帶有 x86_64 字樣的檔案下載,至於 icc 或 gcc4 差別,就得你自己去試了,看你的 cpu 是否有支援 sse3 or sse4,可用此指令看 cat /proc/cpuinfo

指令:
cd /usr/lib64/asterisk/modules/
wget http://asterisk.hosting.lv/bin162/codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so
wget http://asterisk.hosting.lv/bin162/codec_g723-ast16-gcc4-glibc-x86_64-pentium4.so

在asterisk的 CLI 模式下輸入底下指令:
module load codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so
module load codec_g723-ast16-gcc4-glibc-x86_64-pentium4.so

看支援 codecs

show translation

PS: asterisk 1.6 版以上,需下這樣的指令 core show translation

d11*CLI> core show translation
         Translation times between formats (in microseconds) for one second of data
          Source Format (Rows) Destination Format (Columns)
 
           g723   gsm  ulaw  alaw g726aal2 adpcm  slin lpc10  g729 speex  ilbc  g726  g722 siren7 siren14 slin16
     g723     -  4001     2     2        2     2     1     2     2  8001     -     2     2      -       -      2
      gsm 40003     -     2     2        2     2     1     2     2  8001     -     2     2      -       -      2
     ulaw 40003  4001     -     1        2     2     1     2     2  8001     -     2     2      -       -      2
     alaw 40003  4001     1     -        2     2     1     2     2  8001     -     2     2      -       -      2
 g726aal2 40003  4001     2     2        -     2     1     2     2  8001     -     2     2      -       -      2
    adpcm 40003  4001     2     2        2     -     1     2     2  8001     -     2     2      -       -      2
     slin 40002  4000     1     1        1     1     -     1     1  8000     -     1     1      -       -      1
    lpc10 40003  4001     2     2        2     2     1     -     2  8001     -     2     2      -       -      2
     g729 40003  4001     2     2        2     2     1     2     -  8001     -     2     2      -       -      2
    speex 40003  4001     2     2        2     2     1     2     2     -     -     2     2      -       -      2
     ilbc     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
     g726 44002  8000  4001  4001     4001  4001  4000  4001  4001 12000     -     -  4001      -       -   4001
     g722 40004  4002     3     3        3     3     2     3     3  8002     -     3     -      -       -      1
   siren7     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
  siren14     -     -     -     -        -     -     -     -     -     -     -     -     -      -       -      -
   slin16 40003  4001     2     2        2     2     1     2     2  8001     -     2     1      -       -      -
d11*CLI>

上方的內容我們可見 g723 的解碼時間需要 40003 效能太低了,所以我們得考慮換換看 icc or gcc4 不同的版本,或是有支援 cpu 指令集sse 的檔案,效能才會好。

裝完後重啟 asterisk
啟動 asterisk 的方式要用此方式 asterisk -vvvvvc 才能看到它詳細的運作情況,此時就可以去重啟 VoIP Gateway 重啟後就可觀察 asterisk 的情況,可看到註冊狀況。
底下的兩個指令可看 VoIP Gateway 的狀況

*CLI> sip show channels

*CLI> sip show peers

asteriskcodecs 編碼簡介備用網址英文資料

目前 Asterisk支援的語音編碼型式及比較表,整理如下表:
Codec Sampling Rate(KHZ) 頻寬(kbps) Nominal Bandwidth(kbps) License Remarks
G.711 * 8 64 87.2 Open Source
G.722 16 48/56/64 Open Source
G.723.1 8 5.3/6.3 20.8/21.9 Proprietry
G.726 8 16/24/32/40 ?/47.2/55.2/? Open Source
G.729 ** 8 8 31.2 Patented
GSM 8 13 Proprietry
iLBC 8 15.2/13.3 Free to use
Speex 8/16/32

2.15-24.6(NB)

4-44.2(WB)

Open Source

* G711 有兩種版本,分別稱為 u-law 及 a-law。u-law 主要使用在北美和日本,a-law 則是使用在歐系國家。如果想了解更多有關這兩個不同的差異特性,請參考這篇 G.711 A Law versus u Law。
** G729 是目前最常被使用的語音編碼型式,有以下幾個不同的版本。
G729: 原始版的編碼
G729A: 精簡版的G729,這個相容原始版G729,由於編碼經過簡化所以語音品質較差。
G729B: 此編碼有靜音抑制(silence suppression)且與上述幾項不相容。
G729AB: 這是有靜音抑制的G729A版本,而且相容 G729B。

參考資料:
1.GSM 就是我們所謂的人耳可接受的音質(手機的音質),效果不錯,文件個頭也小.但在使用多種codec(語音編碼)環境中,GSM就不是我們最好的選擇.首先 GSM格式要浪費asterisk系統資源來作編碼的轉換,這在一些高並發的系統中會出現問題,再就是GSM音質本身就差,在轉換過程會聽到雜音和爆破音

2.Alaw,Ulaw 都是G.711格式的語音編碼,在國內使用的是歐標,即Alaw.alaw和ulaw本身是可以平滑轉換的,資源耗費極少,音質效果非常好.如果是訪問 PSTN資源,Alaw就是最好的選擇(如果采用數字線路–PRI or E1,效果更好,因為數字線路本身傳遞的就是Alaw編碼).當然Alaw也存在和GSM一樣的問題,就是在多codec環境下,編碼轉換會帶來音質的損 失

3.SLN音質最好,也是個頭最大的一種格式.實際上,asterisk在把其它格式讀入內存時已經轉換為SLN格式,所以SLN格式是 多codec環境下的最佳選擇,可以為各種編碼環境提供高質量的語音響應.在實際應用中,我們要考慮到編碼環境,外線資源,並發數量,系統資源等條件選擇 最合適的系統提示語格式

語音編碼有關的Asterisk CLI指令
CLI> core show codecs [audio|video|image]
系統可支援的編碼類型
CLI> core show translation
系統可用的語音編碼類型及不同類型間作轉換(transcoding) 所需要的時間
CLI> core show translation recalc 10
重新計算不同語音編碼轉換所需的時間
CLI> sip show channel
顯示目前的 SIP 通話所使用的語音編碼類型
CLI> iax2 show channels
顯示目前的 IAX2 通話所使用的語音編碼類型

設定檔的編碼名稱使用對照表
Codec Name Type within
Configuration
G.711 u-law ulaw
G.711 a-law alaw
G.722 g722
G.723.1 g723
G.726 g726
G.729 g729
GSM gsm
iLBC ilbc
Speex speex

常用的設定範例如下:
disallow=all
allow=ulaw
allow=alaw
allow=g729

如何規劃頻寬的需求-語音編碼是關鍵
由於網路電話的語音傳遞媒介就是靠網路,所以網路頻寬及網路品質決定了電話網路化的實行效益,這裡的規劃主要指的是IPPBX主機的網路頻寬。頻寬的使用量取決於終端設備使用何種語音編碼類型以及主機容許多少個線上通話數量,所以系統在做規劃時,只要有這兩個數據就可以計算主機需求的總頻寬。

以下這些網站能協助你以最快速的方式得知所需的頻寬,請參考:
Asterisk Guide Bandwidth Calculator
asteriskguru.com

本篇發表於 voip。將永久鏈結加入書籤。