- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
- Asterisk課堂-如何通過(guò)源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統部署環(huán)境要求
- Asterisk課堂-Asterisk技術(shù)架構
- Asterisk課堂-撥號規則基礎
- Asterisk課堂-創(chuàng )建第一個(gè)撥號規則
- Asterisk課堂-撥號規則中的Contexts
- Asterisk課堂-撥號規則中變量的使用
- Asterisk課堂-撥號規則中的Extensions用法
- Asterisk課堂-撥號規則中匹配模式
- Asterisk課堂-IAX2 介紹
- Asterisk課堂-IAX2 呼叫流程
- Asterisk課堂-SIP介紹
- Asterisk課堂-SIP呼叫流程
- Asterisk課堂-終端注冊
- Asterisk課堂-SIP Trunk
- Asterisk課堂-SIP和NAT
- Asterisk課堂-撥號規則中的Include使用方法

Asterisk 撥號規則的使用方式和C語(yǔ)言的格式基本類(lèi)似,如果用戶(hù)了解基本的C語(yǔ)言語(yǔ)法或者其他的開(kāi)發(fā)語(yǔ)言的話(huà),也非常容易了解撥號規則中的Include 使用方式。因為撥號規則涉及了非常多的業(yè)務(wù)邏輯,如果一個(gè)企業(yè)PBX的業(yè)務(wù)非常多,分機設置也很多的話(huà),把所有的邏輯都在一個(gè)文件中編寫(xiě)是非常麻煩的,也不容易維護,所以需要把整個(gè)撥號規則分割成不同的文件。Include 使用方式支持了用戶(hù)的這個(gè)要求。當然,因為包含了一些聲明或者其他的文件,所以可能導致用戶(hù)對呼叫執行的邏輯出現誤判,呼叫流程發(fā)送錯誤。視頻中介紹了Include中的幾個(gè)撥號規則和執行的流程,請大家留意:
現在我們根據Include 的語(yǔ)法,給大家歸納了幾個(gè)應該注意的問(wèn)題:
- 語(yǔ)法和撥號規則邏輯要清晰。很多用戶(hù)在編寫(xiě)撥號規則時(shí)沒(méi)有注意編寫(xiě)撥號規則的一些基本的邏輯和語(yǔ)法,這樣導致了很多問(wèn)題。這些問(wèn)題的根本原因就在于呼叫流程執行錯誤。通常來(lái)說(shuō),這些錯誤的發(fā)生是因為Include 聲明的位置順序發(fā)生了錯誤。在以下的圖例中,撥號規則會(huì )首先判斷撥打號碼,然后根據Include context 來(lái)一步步查詢(xún)最后匹配的語(yǔ)法。如果Include 的位置不對,撥號規則的執行順序或者邏輯完全可能發(fā)生改變。希望大家一定要注意這些問(wèn)題。



- Inlcude 和Goto 命令之間的跳轉。如果撥號規則中使用了Goto命令時(shí),用戶(hù)一定要注意Goto 跳轉到位置。如果錯誤使用了跳轉的命令,撥號規則完全可能執行了一個(gè)錯誤的流程。在Goto 跳轉過(guò)程中以后要了解原來(lái)繼承的context,并且注意在撥號規則中Goto命令中的context, 優(yōu)先級等等問(wèn)題。如下圖例中,如果用戶(hù)撥打 2 的話(huà),在context_1 中沒(méi)有找到2 號碼,則會(huì )繼續匹配include context_2, 最后在context_2 中找到了號碼 2, 然后執行回放語(yǔ)音功能。當然,如果用戶(hù)撥打 3 時(shí)也是類(lèi)似的執行方式,撥號規則會(huì )查詢(xún)第一個(gè)context,然后接下來(lái)查詢(xún)Include context 中是否有包含的號碼3, 如果匹配了號碼3,則執行相應的呼叫規則。


- Include context 和Include 文件的不同。Include 聲明的執行方式比較容易理解,撥號規則按照邏輯流程一步步執行,看起來(lái)沒(méi)有什么太疑惑的地方。Include context 會(huì )影響撥號規則的邏輯,而include file 則不會(huì )影響Asterisk 撥號規則的執行流程。Asterisk僅解析包含文件中的內容,然后把內容加載到撥號規則中。另外,大家要注意,Include 一個(gè)文件的格式和Include 一個(gè)context是不同的,包含文件時(shí),必須加前綴#。

總結,本章節簡(jiǎn)單介紹了Include 中包含context和包含文件的不同,也重點(diǎn)提示用戶(hù)注意Include的位置順序,還有Goto跳轉時(shí)可能引起的邏輯錯誤。建議大家在編寫(xiě)撥號規則中的Include時(shí)要特別注意位置順序Goto跳轉的位置和繼承關(guān)系,以免引起撥號規則的流程錯誤。