
如果需要實現(xiàn)FreePBX或者Asterisk自定義撥號規(guī)則的處理,用戶首先在系統(tǒng)中添加一個特殊處理文件,定義其文件名稱和撥號規(guī)則。具體文件存儲在Asterisk默認的系統(tǒng)路徑下:/etc/asterisk

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

注意,用戶添加自己自定義的撥號規(guī)則文件時需要注意自己的撥號規(guī)則,并且了解撥號規(guī)則的處理流程和語法。如果不清楚撥號規(guī)則和語法,請查詢本公眾號,Asterisk 語法等內容學習。
[from-internal-custom] // 通過自定義內部分機撥號規(guī)則實現(xiàn)靈活撥號需求
[from-internal-custom] // 通過自定義內部分機撥號規(guī)則實現(xiàn)靈活撥號需求
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) // 跳轉
以上自定義撥號規(guī)則說明:
僅適用于內部分機互相呼叫的自定義撥號規(guī)則。
內部分機先撥兩個星號(××),然后撥一個三位數(shù)的數(shù)字表示時長,最后再撥一個星號(×),撥四位數(shù)的分機號碼。
撥號以后,等待一個時長,然后再執(zhí)行呼叫分機號碼的流程。
示例:××005×1001 表示等待005,然后再撥分機1001
以上流程可以實現(xiàn)各種自定義方式,用戶可以根據(jù)不同場景做相應修改。當然,首先需要用戶熟悉Asterisk 撥號規(guī)則的語法。
安全提示:通過此特別自定義的撥號規(guī)則,系統(tǒng)內部分機可以通過agi命令執(zhí)行其他的linux命令,包括重新啟動服務器,刪除數(shù)據(jù)等其他命令,所以請用戶需要特別注意其自定義文件內容。
然后通過freepbx界面,添加兩個PJSIP的分機,分機賬號如下:

通過鼎信話機界面訪問SIP配置,添加SIP 分機1001.

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

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

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

pjsip debug log,看到dinstar SIP log。


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


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

Asterisk CLI 輸出的呼叫l(wèi)og,撥號規(guī)則觸發(fā)了自定義的規(guī)則,并且完整打印出了自定義撥號規(guī)則的內容。

以下是分機1001接聽呼叫的log日志。

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

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