- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
- Asterisk課堂-如何通過源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統(tǒng)部署環(huán)境要求
- Asterisk課堂-Asterisk技術(shù)架構(gòu)
- Asterisk課堂-撥號規(guī)則基礎
- Asterisk課堂-創(chuàng)建第一個撥號規(guī)則
- Asterisk課堂-撥號規(guī)則中的Contexts
- Asterisk課堂-撥號規(guī)則中變量的使用
- Asterisk課堂-撥號規(guī)則中的Extensions用法
- Asterisk課堂-撥號規(guī)則中匹配模式
- Asterisk課堂-IAX2 介紹
- Asterisk課堂-IAX2 呼叫流程
- Asterisk課堂-SIP介紹
- Asterisk課堂-SIP呼叫流程
- Asterisk課堂-終端注冊
- Asterisk課堂-SIP Trunk
- Asterisk課堂-SIP和NAT
- Asterisk課堂-撥號規(guī)則中的Include使用方法
Asterisk 撥號規(guī)則的使用方式和C語言的格式基本類似,如果用戶了解基本的C語言語法或者其他的開發(fā)語言的話,也非常容易了解撥號規(guī)則中的Include 使用方式。因為撥號規(guī)則涉及了非常多的業(yè)務邏輯,如果一個企業(yè)PBX的業(yè)務非常多,分機設置也很多的話,把所有的邏輯都在一個文件中編寫是非常麻煩的,也不容易維護,所以需要把整個撥號規(guī)則分割成不同的文件。Include 使用方式支持了用戶的這個要求。當然,因為包含了一些聲明或者其他的文件,所以可能導致用戶對呼叫執(zhí)行的邏輯出現(xiàn)誤判,呼叫流程發(fā)送錯誤。視頻中介紹了Include中的幾個撥號規(guī)則和執(zhí)行的流程,請大家留意:
現(xiàn)在我們根據(jù)Include 的語法,給大家歸納了幾個應該注意的問題:
- 語法和撥號規(guī)則邏輯要清晰。很多用戶在編寫撥號規(guī)則時沒有注意編寫撥號規(guī)則的一些基本的邏輯和語法,這樣導致了很多問題。這些問題的根本原因就在于呼叫流程執(zhí)行錯誤。通常來說,這些錯誤的發(fā)生是因為Include 聲明的位置順序發(fā)生了錯誤。在以下的圖例中,撥號規(guī)則會首先判斷撥打號碼,然后根據(jù)Include context 來一步步查詢最后匹配的語法。如果Include 的位置不對,撥號規(guī)則的執(zhí)行順序或者邏輯完全可能發(fā)生改變。希望大家一定要注意這些問題。
- Inlcude 和Goto 命令之間的跳轉(zhuǎn)。如果撥號規(guī)則中使用了Goto命令時,用戶一定要注意Goto 跳轉(zhuǎn)到位置。如果錯誤使用了跳轉(zhuǎn)的命令,撥號規(guī)則完全可能執(zhí)行了一個錯誤的流程。在Goto 跳轉(zhuǎn)過程中以后要了解原來繼承的context,并且注意在撥號規(guī)則中Goto命令中的context, 優(yōu)先級等等問題。如下圖例中,如果用戶撥打 2 的話,在context_1 中沒有找到2 號碼,則會繼續(xù)匹配include context_2, 最后在context_2 中找到了號碼 2, 然后執(zhí)行回放語音功能。當然,如果用戶撥打 3 時也是類似的執(zhí)行方式,撥號規(guī)則會查詢第一個context,然后接下來查詢Include context 中是否有包含的號碼3, 如果匹配了號碼3,則執(zhí)行相應的呼叫規(guī)則。
- Include context 和Include 文件的不同。Include 聲明的執(zhí)行方式比較容易理解,撥號規(guī)則按照邏輯流程一步步執(zhí)行,看起來沒有什么太疑惑的地方。Include context 會影響撥號規(guī)則的邏輯,而include file 則不會影響Asterisk 撥號規(guī)則的執(zhí)行流程。Asterisk僅解析包含文件中的內(nèi)容,然后把內(nèi)容加載到撥號規(guī)則中。另外,大家要注意,Include 一個文件的格式和Include 一個context是不同的,包含文件時,必須加前綴#。
總結(jié),本章節(jié)簡單介紹了Include 中包含context和包含文件的不同,也重點提示用戶注意Include的位置順序,還有Goto跳轉(zhuǎn)時可能引起的邏輯錯誤。建議大家在編寫撥號規(guī)則中的Include時要特別注意位置順序Goto跳轉(zhuǎn)的位置和繼承關(guān)系,以免引起撥號規(guī)則的流程錯誤。