2013-03-10 44 views
1

在星號的撥號方案爲什麼如此當DTMF輸入是兩個或更多的數字,並且如果一個數字是 按下時正被播放的提示它進入我延伸(無效擴展)作爲 情況如果在播放提示時按下數字,則會輸入一個數字的dtmf輸入,它會將 移動到右側的擴展名中?謝謝多個DTMF​​輸入

回答

0

這將取決於您的配置圖的配置方式,但聽起來好像您正在使用background()應用程序。 Background()將偵聽DTMF,然後在第一個明確的匹配中路由到當前上下文中的擴展。

例如,如果在上下文中有1,2和100,那麼按2將直接路由到2(因爲它是明確的)。按1將等待超時,因爲background()不知道你是否要去到1或100.超時後,它將路由到1.按3將轉到i特殊分機,因爲當前上下文中沒有以3開頭的分機。

如果所需行爲是從您的路由IVR上下文內部的手機之一,那麼你需要包括IVR上下文中的手機背景:

[phones] 
exten => 100,1,Dial(SIP/phone1) 
exten => 101,1,Dial(SIP/phone2) 
... 

[IVR] 
exten => s,1,Background(message) 

exten => 1,1,Queue(Sales) 
exten => 2,1,Queue(Support) 
exten => i,1,Playback(pbx-invalid) 

include => phones 

官方文檔中的更多信息: https://wiki.asterisk.org/wiki/display/AST/Application_BackGround

3

下面是另一個例子,其中一個用戶必須輸入4位PIN碼的撥號方案繼續:

[Login] 
exten = s,1,Playback(/var/lib/asterisk/sounds/custom/login) 
exten = s,n,Set(rightPIN=1234) 
exten = s,n,Read(inPIN,/var/lib/asterisk/sounds/custom/enterPIN,4) 
exten = s,n,GotoIf($["${inPIN}" = "${rightPIN}"]?pin-accepted,1) 

; Didn't go to pin-accepted, so play badPIN and hangup 
exten = s,n,Playback(/var/lib/asterisk/sounds/custom/badPINgoodbye) 
exten = s,n,Hangup() 

; correct pin, play something 
exten = pin-accepted,1,Playback(/var/lib/asterisk/sounds/custom/something) 
... 

讀()應用程序的第三個參數是多少位等待。有關了解更多信息,請參閱Asterisk Wiki: Read

編輯:還有一個叫Authenticate撥號方案的應用程序,做到這一點非常好。