2017-05-24 41 views
0

我有一個工作的Asterisk 13撥號方案,其中一個呼叫進入的extensions.conf再內的extensions.conf成switch語句:繼續後撥號方案外卡賽

switch => Realtime 

工程。該調用基於數據庫表的內容完成。

現在我想要做的是在呼叫進入實時表之前進行一點過濾。事情是這樣的:

exten => _X.,1,Set(GROUP()=${ACCOUNTCODE:0:4}) 
exten => _X.,n,GotoIf($[${GROUP_COUNT(ABCD)} > 2]?tooMany,1) 
exten => _X.,n,Log(VERBOSE,Call Continuing. ${ACCOUNTCODE} is not a limited group) 
switch => Realtime 

exten => tooMany,1,Congestion(4) 
exten => tooMany,n,hangup(503) 

但是,什麼似乎發生的是,一旦擴展匹配(在_X)的處理繼續通過比賽,但不會繼續和處理「開關=>實時」行(其從不執行撥號方案的數據庫組件)

如何在通過過濾器後執行實時撥號方案?

  • 其次有些相關的問題

順便說一句,我可以在全文字的extensions.conf,我想所有的呼叫,必須做的東西對他們有類似的問題,然後做具體事某些電話。例如

exten => _X.,1,<do something> 
exten => 1122,1,<do some more stuff to the same call> 

這是在文檔中處理,1122是更具體的行,將執行一個。但是,對所有呼叫做某事的正確方法是什麼,然後做具體的事情?

回答

0

我覺得你不明白交換實時的工作原理。

只有一個擴展(或模式)是不可能的。 CONTEXT是可能的。當星號引擎看到switch =>實時時,它的工作原理類似於include,即在這個WHOLE上下文中包含數據庫搜索。

你也像不理解撥號方案如何工作(否則將不成問題2)。請閱讀ORelly的「Asterisk電話的未來」一書,它一步一步地描述了它的工作原理。

+0

如果它的工作方式類似於include,那就好了,除非如果EXTEN匹配它永遠不會進入交換機/數據庫搜索的模式。這是爲什麼? – SchroedingersCat

+0

,因爲它是開關。如果你想在相同的上下文中額外的擴展,你應該包括=> someothecontext,並切換到其他上下文。 – arheops