

1、早期的trunk 中繼的概念來(lái)自于傳統的PSTN網(wǎng)絡(luò ),后來(lái)發(fā)展出來(lái)H323和SIP。 我們今天重點(diǎn)討論的是PSTN的trunk和SIP的trunk。根據維基百科的定義對trunk的定義:
A circuit between telephone switchboards or other switching equipment, as distinguished from local loop circuits which extend from telephone exchange switching equipment to individual telephones or information origination/termination equipment.
簡(jiǎn)單來(lái)說(shuō),就是trunk 就是一個(gè)電路交換,通過(guò)交換機實(shí)現多種電話(huà)終端的交互,例如我們經(jīng)常看到的E1,SS7,R2等。
在IETF的官方定義中,SIP trunk是這樣定義的:
- A SIP trunk is a virtual sip entity on a server (UAS, UAC or proxy) constrained by a predefined set of polices and rules that determine how to process requests.
首先,SIP trunk是虛擬的實(shí)體(傳統的PSTN都是物理設備),通過(guò)一定的業(yè)務(wù)策略來(lái)決定業(yè)務(wù)請求。在SIP 網(wǎng)絡(luò )環(huán)境中,SIP也可以起到類(lèi)似的作用,它是由服務(wù)提供商對接企業(yè)用戶(hù)的一種連接方式,當然服務(wù)提供商提供什么樣的服務(wù)都是基于用戶(hù)和服務(wù)提供商的合同約定。具體的業(yè)務(wù)包括:
- 可以支持PSTN所提供的語(yǔ)音服務(wù),基本上可以替代傳統的PSTN網(wǎng)絡(luò )。
- 可以拓展出其他的增值服務(wù),例如語(yǔ)音郵箱服務(wù),呼叫中心服務(wù)等。
- 支持企業(yè)IPPBX接入服務(wù)。
在開(kāi)源FreePBX的trunk 模塊中,此模塊可以說(shuō)支持了目前市場(chǎng)上所有的trunk 接入方式:
- E1/SS7/R2的基于語(yǔ)音板卡的接入方式,系統默認的是E1 trunk接入,用戶(hù)也可以通過(guò)手動(dòng)編譯來(lái)支持SS7或者R2的方式來(lái)支持trunk接入。關(guān)于SS7/中國一號R2和語(yǔ)音板卡安裝配置的文檔,請讀者參考:www.freepbx.org.cn 的詳細配置文檔。此對接方式是通過(guò)FreePBX+板卡一體機的方式來(lái)實(shí)現。
- SIP trunk接入方式,用戶(hù)可以通過(guò)語(yǔ)音網(wǎng)關(guān)對接SIP來(lái)實(shí)現接入,也可以和服務(wù)商提供的SIP trunk實(shí)現對接,同樣也可以通過(guò)服務(wù)商提供的IMS/SIP實(shí)現對接,VOS/SIP trunk 對接。通過(guò)FreePBX+語(yǔ)音網(wǎng)關(guān)的方式來(lái)實(shí)現,或者FreePBX+SIP trunk的方式實(shí)現。
- BRI 語(yǔ)音板卡實(shí)現對接,此對接方式支持的是2B+D方式,上面的E1是30B+D,目前國內基本上不再使用,歐洲有部分用戶(hù)使用。可以通過(guò)FreePBX+語(yǔ)音卡方式,或者FreePBX+外置網(wǎng)關(guān)(支持BRI的網(wǎng)關(guān))
- 自定義的H323 trunk方式實(shí)現對接,默認freepbx不支持H323對接,用戶(hù)需要手動(dòng)編譯H323模塊,配置模塊以后,可以實(shí)現對接方式。
- 其他自定義的Trunk方式使用的比較少,我們這里不再介紹,例如IAX方式實(shí)現Asterisk-Asterisk服務(wù)器之間的對接等,我們這里不再介紹。
在開(kāi)源FreePBX的trunk 模塊中都支持了以上所介紹的接入方式,用戶(hù)可以根據不同的需求來(lái)對接不同的接入方式,例如可以同時(shí)支持SIP和dahdi trunk(語(yǔ)音卡)。
2、Trunk 模塊有很多中參數配置,因為,我們使用的是SIP和dahdi模塊來(lái)配置trunk,所以,我們重點(diǎn)介紹基于SIP trunk的配置參數和基于Dahdi的配置參數。


Prepend
預設號碼前綴。 如果用戶(hù)已撥號碼成功匹配了 prefix加match pattern,則在中繼出局前,移除prefix, 在match pattern 前加此預設的數字號碼。
Prefix
號碼前綴。如果用戶(hù)已撥號碼成功匹配了prefix加match pattern ,則在中繼出局前移除這個(gè)前綴號碼,如果帶預設號碼的話(huà),
match pattern 加預設號碼出局。如果沒(méi)有帶可選的預設號碼,則僅發(fā)送match pattern 號碼出局。
Match pattern
匹配模式。用戶(hù)已撥號碼將匹配prefix 和match pattern 的匹配模式。如果成功匹配,則移除號碼前綴,加一個(gè)預設號碼出局(如果設置了預設號碼)。當然用戶(hù)也可以?xún)H完全匹配號碼前綴,然后加一個(gè)預設號碼,match pattern 為空。
Dialled Rules Wizard Always dial with prefix
中繼號碼前綴快速撥號。對voip 中繼來(lái)說(shuō),這個(gè)功能非常簡(jiǎn)單實(shí)用。例如,如果用戶(hù)撥打了號碼 "5551234”, PBX 會(huì )自動(dòng)轉換此號碼為 "16135551234”。
Remove prefix from local numbers
對語(yǔ)音板卡支持的Dahdi 中繼非常有用,如果用戶(hù)撥打的是一個(gè)本地號碼 "6135551234”的話(huà),PBX 會(huì )自 "555-1234”。通常來(lái)說(shuō),撥打本地號碼無(wú)需添加本地前綴。
Setup directory assistance
可以通過(guò)此選項轉換此呼叫進(jìn)行 目錄查詢(xún)協(xié)助。
Lookup numbers for local trunk
本地中繼號碼查詢(xún)服務(wù)。通過(guò)號碼查詢(xún)服務(wù)的資源例如 www.localcallingguide.com , 創(chuàng )建號碼歸屬,所以用戶(hù)通過(guò)本地中繼撥打7位數或者10位數 來(lái)直接進(jìn)行呼叫。通常情況下,用戶(hù)需要撥打1+區號(長(cháng)途電話(huà))+號碼,但是通過(guò)這樣的方式,用戶(hù)可以直接撥打 “5551234” (7位數撥號) 或者 “6135551234” (10位數撥號) 來(lái)實(shí)現本地呼叫。 注意,以上設置僅支持北美地區的號碼范圍。
Upload from CSV
支持上傳一個(gè)撥號匹配模式CSV 文件來(lái)替換當前的整個(gè)文件。如果沒(méi)有文件頭的話(huà),則文件必須至少設置3個(gè)列,需要和界面的列順序一致。用戶(hù)有可以設置3個(gè)文件頭,在第一行中包括: prepend, prefix 和 match pattern 。如果少于3個(gè)文件頭,剩余的列將是空白。
Outbound Dial Prefix
呼出撥號前綴,呼出前在中繼添加的前綴號碼。例如,如果此中繼是在另外一個(gè)PBX 背后的系統中,用戶(hù)需要撥打9 或者其他的數字通過(guò)這個(gè)PBX 出局。如果中繼線(xiàn)路是POTS 線(xiàn)路的話(huà),常用的做法是設置為“w”,讓系統等待 500ms ,以便有足夠的時(shí)間來(lái)等待撥號音,避免已撥打數字號碼丟失。大部分情況下,此設置為空白。
指定一個(gè)中繼名稱(chēng),例如 “mysiptrunk”。
PEER Details
這里的 PEER 信息是用來(lái)對接運營(yíng)商的帳號信息。用戶(hù)可能需要添加設置或者刪除一些設置,完全取決于運營(yíng)商的要求。
注意
這里的配置順序非常重要。例如,如果用戶(hù)使用了 “allow/deny” ,那么必須確保第一個(gè)是 “deny”。
USER Context
這里是運營(yíng)商要求提供的帳號或號碼信息。
USER Details
這里是用戶(hù)連接運營(yíng)商的參數設置。因為運營(yíng)商要求的不同,用戶(hù)可能需要添加或者刪除一些設置參數。
Register String 大部分運營(yíng)商要求用戶(hù)PBX 系統注冊到運營(yíng)商側。如果有此要求,用戶(hù)需要輸入運營(yíng)商提供的注冊信息。例如,
username:password@some.voipprovider.com。 還有一些環(huán)境下,用戶(hù)也需要提供DID號碼注冊:
例如:username:password@some.voipprovider.com/7045551212。
這里要注意,使用SIP trunk之前,一定要確保SIP trunk和對端對接的成功的,否則不能使用此trunk。關(guān)于SIP trunk狀態(tài),用戶(hù)可以通過(guò)Asterisk CLI 命令來(lái)查詢(xún)。
- DAHDi (簡(jiǎn)稱(chēng)為Digium Asterisk 硬件設備接口)。Dahdi 是asterisk 語(yǔ)音卡的通信接口,它可以支持模擬接口(FXS/FXO)和數字接口(E1/PRI)。用戶(hù)需要參考硬件安裝文檔來(lái)實(shí)現語(yǔ)音卡的初始化配置。然后可以通過(guò) DAHDi 中繼模塊來(lái)集成呼出呼入的路由和分機設置。請用戶(hù)先參考相應的dahdi 語(yǔ)音板卡配置使用指南配置板卡后執行中繼的配置。
- DAHDI 配置文件由 DAHDI 配置模塊來(lái)管理。一旦成功配置好板卡以后,用戶(hù)可以通過(guò)中繼界面選擇Dahdi 中繼出局。
- DAHDI Trunks
用戶(hù)可以通過(guò)選擇不同的組來(lái)進(jìn)行輪詢(xún)呼叫。參考一下表做相應的調整。在這個(gè)表中,我們使用了Group 0 (Zero) 作為輪詢(xún)策略方式。在配置Dahdi trunk之前,用戶(hù)要首先確認語(yǔ)音板卡是否成功配置。如果底層的語(yǔ)音板卡沒(méi)有配置成功的話(huà),dahdi trunk是沒(méi)有任何作用的。

3、Trunk 模塊可以使用在很多企業(yè)用戶(hù)的呼叫需求,以便滿(mǎn)足多種業(yè)務(wù)的需求,這些使用場(chǎng)景包括:
對接分公司trunk,接入分公司的IPPBX系統。通過(guò)不同的撥號匹配來(lái)實(shí)現使用不同的trunk呼出。
對接多種trunk 方式,根據以上介紹,用戶(hù)可以同時(shí)對接多種trunk方式,通過(guò)多種方式的trunk對接,實(shí)現trunk 線(xiàn)路的逃生,保證企業(yè)通信網(wǎng)絡(luò )正常使用,靈活切換。
根據需要,可以關(guān)閉或啟用不同的trunk,用戶(hù)可以對任何一條trunk進(jìn)行開(kāi)啟或者關(guān)閉處理,無(wú)需再次進(jìn)行配置。
根據不同計費模式設置不同的trunk呼叫,用戶(hù)可以選擇不同的trunk實(shí)現不同的呼叫國家目的地。
根據不同的時(shí)段現在不同的trunk進(jìn)行呼叫,幫助企業(yè)節省話(huà)費支出。
4、trunk 模塊僅是一個(gè)FreePBX 界面管理工具,真正實(shí)際呼叫是通過(guò)底層Asterisk的dial命令來(lái)實(shí)現,通過(guò)不同的SIP或者Dahdi來(lái)實(shí)現對trunk的呼叫。具體的用法如下:
Dial(Technology/Resource&[Technology2/Resource2[&…]],[timeout,[options,[URL]]])
這里的Technology 表示接口方式(SIP或DAHDI),Resource 表示可用的通道。當然dial 命令的用法有很多參數支持,用戶(hù)可以查閱文檔來(lái)進(jìn)一步研究。
5、經(jīng)常使用trunk模塊的還有我們大家比較熟悉的呼叫中心應用,通過(guò)FreePBX或者asterisk進(jìn)行自定義的呼叫功能。在自定義的代碼中加入到時(shí)呼叫控制任務(wù),可以對多個(gè)號碼通過(guò)trunk模塊來(lái)實(shí)現自動(dòng)呼叫或手動(dòng)呼叫。Issabel的呼叫中心模塊就是使用的類(lèi)似的設計,Odoo也支持了類(lèi)似的自動(dòng)外呼模塊。關(guān)于通過(guò)SIP trunk 實(shí)現自動(dòng)外呼的功能實(shí)現,用戶(hù)可以查閱參考資料的了解。

6、總結,筆者首先介紹了關(guān)于trunk的概念和功能,然后介紹了在開(kāi)源IPPBX環(huán)境下SIP和PSTN trunk的配置參數介紹,trunk 使用的場(chǎng)景,然后具體介紹了底層Asterisk如何進(jìn)行呼叫呼出,最后提供了一個(gè)通過(guò)trunk來(lái)實(shí)現呼叫中心外呼的簡(jiǎn)單功能實(shí)現。
參考資料:
https://tools.ietf.org/id/draft-rosenberg-sipping-siptrunk-00.txt
https://tools.ietf.org/html/rfc4904
https://wiki.freepbx.org/display/FPG/Trunks+Module
https://github.com/litnimax/asterisk_dialer

關(guān)注微信公眾號:asterisk-cn,獲得有價(jià)值的行業(yè)分享。訪(fǎng)問(wèn)5060社區-開(kāi)源IPPBX論壇獲得技術(shù)幫助:www.ippbx.org.cn/www.hiastar.com