
如果需要實(shí)現FreePBX或者Asterisk自定義撥號規則的處理,用戶(hù)首先在系統中添加一個(gè)特殊處理文件,定義其文件名稱(chēng)和撥號規則。具體文件存儲在A(yíng)sterisk默認的系統路徑下:/etc/asterisk

編輯extensions_custom.conf 文件,添加以下內容:

注意,用戶(hù)添加自己自定義的撥號規則文件時(shí)需要注意自己的撥號規則,并且了解撥號規則的處理流程和語(yǔ)法。如果不清楚撥號規則和語(yǔ)法,請查詢(xún)本公眾號,Asterisk 語(yǔ)法等內容學(xué)習。
[from-internal-custom] // 通過(guò)自定義內部分機撥號規則實(shí)現靈活撥號需求
[from-internal-custom] // 通過(guò)自定義內部分機撥號規則實(shí)現靈活撥號需求
exten => _**XXX*XXXX,1,Noop(Entering user defined context from-internal-custom in extensions_custom.conf)
exten => _**XXX*XXXX,n,Noop(ext: ${EXTEN:-4} delay: ${EXTEN:2:3}) // 打印
exten => _**XXX*XXXX,n,Wait(${EXTEN:2:3}) // 秒為單位
exten => _**XXX*XXXX,n,goto(from-internal,${EXTEN:-4},1) // 跳轉
以上自定義撥號規則說(shuō)明:
僅適用于內部分機互相呼叫的自定義撥號規則。
內部分機先撥兩個(gè)星號(××),然后撥一個(gè)三位數的數字表示時(shí)長(cháng),最后再撥一個(gè)星號(×),撥四位數的分機號碼。
撥號以后,等待一個(gè)時(shí)長(cháng),然后再執行呼叫分機號碼的流程。
示例:××005×1001 表示等待005,然后再撥分機1001
以上流程可以實(shí)現各種自定義方式,用戶(hù)可以根據不同場(chǎng)景做相應修改。當然,首先需要用戶(hù)熟悉Asterisk 撥號規則的語(yǔ)法。
安全提示:通過(guò)此特別自定義的撥號規則,系統內部分機可以通過(guò)agi命令執行其他的linux命令,包括重新啟動(dòng)服務(wù)器,刪除數據等其他命令,所以請用戶(hù)需要特別注意其自定義文件內容。
然后通過(guò)freepbx界面,添加兩個(gè)PJSIP的分機,分機賬號如下:

通過(guò)鼎信話(huà)機界面訪(fǎng)問(wèn)SIP配置,添加SIP 分機1001.

添加通過(guò)FreePBX已創(chuàng )建的分機1001和FreePBX IP地址。

如果一切正常的話(huà),添加以后,幾秒鐘以后會(huì )顯示成功注冊。

或者用戶(hù)可以通過(guò)Asterisk CLI命令查看分機狀態(tài),確認成功注冊:
pjsip show endpoints

pjsip debug log,看到dinstar SIP log。


然后我們開(kāi)始呼叫測試。通過(guò)軟電話(huà)注冊分機102,確保成功注冊。然后,根據以下演示撥號輸入相應的撥號字符串,分別為等待時(shí)間和分機號碼。


這里輸入的是等待5秒鐘,然后呼叫1001分機。

Asterisk CLI 輸出的呼叫log,撥號規則觸發(fā)了自定義的規則,并且完整打印出了自定義撥號規則的內容。

以下是分機1001接聽(tīng)呼叫的log日志。

分機之間呼叫的CDR 呼叫記錄:
CDR記錄:

總結:
筆者通過(guò)FreePBX配置兩個(gè)SIP分機,實(shí)現了SIP內部分機(一個(gè)軟電話(huà),一臺鼎信SIP話(huà)機)的自定義撥號規則的流程處理。通過(guò)自定義規則用戶(hù)可以輕松實(shí)現界面配置不能支持的某些特殊需求,包括自定義呼入前處理(數據庫流程,自定義目的地),呼叫后處理和內部分機的某些特殊需求。通過(guò)自定義的撥號規則可以完美支持一些界面不能配置的功能。希望讀者通過(guò)此示例可以讓讀者進(jìn)一步挖掘FreePBX強大的業(yè)務(wù)支持功能,實(shí)現更多業(yè)務(wù)需求。
參考資料:
www.freepbx.org.cn
www.asterisk.org.cn
www.freepbx.org
