很多剛剛接觸Asterisk的朋友在試驗完內(nèi)部通話組網(wǎng)后,興沖沖的搞到一塊digium兼容的PSTN卡,想把自己的Asterisk接入到PSTN網(wǎng)絡(luò),結(jié)果發(fā)現(xiàn)似乎不像剛開始試驗時那么順利了,在這里,我簡單的把一些基礎(chǔ)的通訊知識分享給大家,讓大家在配置zaptel或dahdi時能減少一些迷惑(既然是個人經(jīng)驗,歡迎大家一起來補充,修整) 考慮大多數(shù)試驗用戶沒有條件使用數(shù)字線路,關(guān)于數(shù)字線路的知識在未來再專帖討論,本貼中討論的是模擬接口(模擬信令),假設(shè)工作在zaptel下(dahdi和zapel的命令和配置文件的對應(yīng)在google上很容易找到) 1.模擬接口 FXO-Foreign Exchange Office FXS-Foreign Exchange Station 兩者的差別就是FXS饋電(提供電壓),而FXO不提供.普通模擬電話就是一個典型的FXO設(shè)備. 在真實的世界中,FXS和FXO總是成對出現(xiàn)的.由FXS接口向FXO接口饋電(提供電壓),振鈴;FXO向FXS傳送號碼(DTMF/FSK).所以對接時會出現(xiàn)fxs側(cè)的用戶需要首先呼叫到fxs,再二次撥號呼叫到被叫側(cè),而fxo側(cè)用戶可以一次直接呼叫被叫用戶(一次撥號)。 在Asterisk中,FXO接口接受的是fxs信令和FXS提供給fxo信令.所以你在zapata中看到fxsXX(ls,gs,ks) 這個端口是FXO接口,如果是fxoXX(ls,gs,ks) 這個端口是FXS接口. FXO用于連接PSTN(因為PSTN(FXS)向Asterisk的FXO接口饋電) FXS用于連接普通電話機,(因為Asterisk通過FXS接口向模擬話機(FXO)提供饋電--這也就是為什么Asterisk接口卡上的FXS接口板需要外接電源的原因) 如果Asterisk位于企業(yè)程控交換機(PBX)的后面,Asterisk的FXO接口和PBX的模擬分機口相連,asterisk的FXS接口和PBX的模擬中繼端口相連 2.模擬信令 loop start Kewl start grand start 這三個術(shù)語的具體區(qū)別牽扯到通訊專業(yè)領(lǐng)域了,普通用戶需要了解的是grand start是需要專門申請的,一般用于中繼線(它的好處就在于可以避免進線和出線的碰撞,提高線路使用率),而普通的電話線路一般是loop start的.Asterisk推薦的kewlstart也是一種loop start,只不過它識別supervisor disconnect信號(就是遠端拆線后在發(fā)送忙音之前,發(fā)送這個信號.所以如果你的局端提供的是kewlstart信號,Asterisk默認的配置可以很正確的識別遠端拆線,這也就是為什么默認的zapata.conf中不啟用busydetect的原因).在中國大陸,主要采用的是loop start而北美采用的是kewlstart. 所以當你正確安裝了卡板和驅(qū)動,但用默認的fxsks信令,撥號到pstn得到"all circuit busy now"的提示語時,嘗試將zaptel.conf和zapata.conf中默認的fxsks改為fxsls--(修改完畢后需要重啟機器而不是單純重啟asterisk) 3.惱人的忙音識別和拆線 前文提到FXO是被動接受型的,也就是說在真實世界FXS發(fā)送模擬信令,而FXO識別來自FXS的信令.這些信令工作在特定的頻率,有特殊的斷通比.如果局端交換能正確提供這些信號,FXO就能正確的判斷線路的狀態(tài)(使用中,已掛機),但實際上由于中國的國情,很多地區(qū)的信號音是非標準的,比如,規(guī)范的忙音信號應(yīng)該是(0.35秒通,0.35秒斷,工作頻率是450kz),Asterisk在indications.conf對cn的定義就是如此 [general] country=cn .... [cn] ringcadence = 1000,4000 dial = 450 ;撥號音 busy = 450/350,0/350 ;中國忙音標準 ring = 450/1000,0/4000 ;振鈴音 congestion = 450/700,0/700 ;擁塞音 callwaiting = 450/400,0/4000 ;呼入等待音 dialrecall = 450 record = 950/400,0/10000 info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400 stutter = 450+425 中國標準信號音 撥號音:(450Hz,-10±3dBm0,連續(xù))——“嗡…”的連續(xù)音。 忙音:(450Hz,-10±3dBm0,0.35s on/0.35s off)——“嘟,嘟,嘟…”短促音(響0.35秒,斷0.35秒)。 擁塞音:(450Hz,-10±3dBm0、0.7s on/0.7s off)——這是一種“嘟,嘟…”的短音(響0.7秒,音隔0.7秒)。擁塞音有點像忙音,但比忙音聲音要長,它表示程控交換機因某種原因機線擁塞不通。 呼入等待音:(450Hz,-20±3dBm0、0.4s on/4.0s off)——在用戶登記了“呼叫等待”服務(wù)項目后,如果該用戶正與對方通話時,又有第三者呼叫該用用,則該用戶在受話器中會聽到一種微弱的信號音,這種信號是“嘟…”的短促音(響0.4秒,音隔0.4秒,再響0.4秒)。它表示有第三者在呼叫,提醒該用戶是否要與第三者通話。 特種撥號音:(450Hz,-10±3dBm0,0.4s on/0.04s off)這是一種“嘟,嘟…”的一短一長的聲音,當用戶的電話中登記了某種程控電話服務(wù)項目后,摘機聽到的撥號音就是這種特種撥號音,用以提醒該用戶。這種撥號音不妨礙該用戶打電話,只要在規(guī)定產(chǎn)時間(5秒)內(nèi)撥號即可。 二次撥號音:(400Hz,-10±3dBm0、連續(xù)) 回鈴音:(450Hz,-10±3dBm0,1.0s on/4.0s off)——“嘟,嘟…”的斷續(xù)音(響1秒,斷4秒)表示用戶撥叫的對方電話已接通,正在振鈴。 空號音:(450Hz,-10±3dBm0、0.1s on/0.1s off/0.1s on/0.1s off/0.1s on/0.1s off/0.4s on/0.4s off)--“嘟、嘟、嘟-”的450赫的三短一長音(短音為0.1秒,間斷0.1秒,長音為0.4秒) 三方通話提醒音:(950Hz,-20±3dBm0、0.4s on/10.0s off) 催掛音:(950HZ 0.4dB)——當用戶用完電話,沒有掛機或話機手柄沒有放好時,程控電話局會發(fā)出一種由小逐漸變大的連續(xù)音(950HZ),提醒該用戶把話機掛好。 長途通知音:(450Hz,-10±3dBm0,0.2s on/0.2s off/0.2s on/0.6s off)——當用戶在市內(nèi)電話通話過程中,又聽到“嘟,嘟”聲,跟著一小段間歇,又再“嘟,嘟”,這樣的短音(響0.2秒,斷0.2秒,音隙0.6秒)就是“長途電話通知音”,告訴用戶有人工長途電話要和您通話,請盡快結(jié)束市內(nèi)通話,準備接聽長途電話。這種長途電話通知音隨著我國長途電話自動化的普及也越來越少了。 如果電信給你的忙音信號根本就不是這樣的,Asterisk怎么可能識別呢,必然出現(xiàn)無法正確判斷拆線的狀況.(大城市這種情況就好得多).如果出現(xiàn)這種情況,就不得不通過ztmonitor錄音后,判別它通斷比,然后將這些數(shù)值填入zapata.conf的busypattern中,重啟asterisk所在的服務(wù)器(例如beep持續(xù)600號碼,靜音400毫秒,那么busypattern=600,400) kewlstart優(yōu)于傳統(tǒng)的Loop start的地方就在于supervisor disconnect信號.你可以看到北美的論壇上沒有討論忙音識別或者無法拆線的,而在UK,Australia就有很多類似的帖子.但是UK的經(jīng)驗?zāi)玫街袊鴣硪膊恍?因為UK的電信普遍采用了7號信令,通過CPC(Calling party Control-主叫控制)來處理拆線(remote hang up). 如果你的局端提供給你CPC,或supervisor disconnect,恭喜您,你可以擺脫惱人的忙音識別問題了. 備注: 如何確定自己的線路是否支持kewlstart 將一個支持撥號盤高亮的(不需要外接電源,直接從市話取電)普通模擬電話連接到PSTN線路上,撥通你的手機,接聽手機,然后手機掛機,如果那部模擬電話在遠端(手機)掛線后撥號盤燈熄滅(drop battery),那么這條線路是支持kewlstart的.不需設(shè)置busyXXX和callprogress 在中國,Asterisk的zapata.conf需要啟用busydetect=yes,以及busycount=6可以解決大多數(shù)忙音識別和無法拆線的問題(基于loopstart) zapata.conf(或zapata-channels.conf) busydetect=yes busycount=6 ;設(shè)置的值過小會引起通話中中斷的故障 .................... loadzone = cn defaultzone = cn 備注: 不要盲目按照國外的帖子隨便增加busypattern這個參數(shù)。除非你明確知道這么作的原因。沒有這個參數(shù),Asterisk接受任何有規(guī)律的斷通信號在busycount規(guī)定的次數(shù)內(nèi)判別為忙音。如果busy tone的通斷間隔不相等(如前文提到的beep 600毫秒,靜默400毫秒),才需要手工設(shè)置. 不要把callprogress和busyxxx屬性混用,這是兩種不同的工作方式.目前默認工作方式的callprogress僅對北美生效 如果上述設(shè)置在你的機器上不生效,請檢查線路質(zhì)量,檢測是否有回聲,有的時候線路的雜音會干擾到Asterisk的忙音識別。 啟用回聲消除(見本文回聲一節(jié)) 啟用增益 ?。ㄒ姳疚?font color="red">增益一節(jié)) 如果是話務(wù)量比較密集的應(yīng)用或?qū)τ嬞M數(shù)據(jù)比較敏感的環(huán)境,建議去電信申請反極信號,同時在zapata.conf中增加 zapata.conf(zapata-channels.conf) hanguponpolarityswitch=yes ;拆線 answeronpolarityswitch=yes ;對端應(yīng)答(用于計費) (不要和busydetect=yes或callprogress=yes同時使用) 4.CLID(主叫號碼) CLID主叫號碼在使用中一般不會碰到問題,但在一些地區(qū)還是會有麻煩(我就在寧夏銀川哪里碰到過).CLID工作在FSK(美規(guī))或DTMF方式,中國這兩種情況都有,甚至還有歐規(guī)的情況.如果不幸你也有這種問題,呵呵,或者購買一個轉(zhuǎn)換器(幾十塊一個),或者采用國產(chǎn)的卡(如OpenVox就支持Global CLID). 備注:如何確定CLID的制式 拿家里原來的可以來顯的電話機,必須是有時間顯示的電話機. 1、先把機器的時間調(diào)亂.(隨便調(diào),但月份一定調(diào)) ?。?、然后用自己的手機打進去,電話響5聲后掛掉,不要接. ?。?、然后看時間自動改過來了沒. 如果是改過來了(年份不改不要緊,但月份一定要),那證明您家里是FSK制式。如果沒改過來那您家里就是DTMF制式。 區(qū)分了fsk之后,如果在第一聲之前,就顯示了號碼,那么就是歐制的,如果在第一聲和第二聲之間顯示了來電,那么就是美制的。 5.DTMF 6.回聲 zapata.conf(zapata-channels.conf) echocancel=yes echocancelwhenbridged=yes, echotraining=800 7.增益 |