2011-12-05 43 views
0

我有一個很奇怪的問題,甚至不知道從哪裏開始看。星號DTMF有時會被忽略(但只限於某些人)

我們正在使用AGI和Java庫來呈現IVR,但已經從用戶那裏得到他們的按鍵被忽略的抱怨。

在我sip.conf,下一般部分,我有這樣的定義的DTMF(以下簡稱「放鬆」行被註釋掉):

dtmfmode = rfc2833 
;relaxdtmf=yes 

我已經與供應商確認它應該是rfc2833,因爲這是他們專門爲我們配置的。

我打開DTMF調試級別在我logger.conf消息文件:

messages => notice,warning,error,dtmf 

我現在看不出紋路像這樣:

DTMF[8744] channel.c: DTMF begin '1' received on SIP/veracity-00005052 
DTMF[8744] channel.c: DTMF begin ignored '1' on SIP/veracity-00005052 
DTMF[8744] channel.c: DTMF end '1' received on SIP/veracity-00005052, duration 270 ms 
DTMF[8744] channel.c: DTMF end passthrough '1' on SIP/veracity-00005052 
DTMF[8741] channel.c: DTMF begin '1' received on SIP/veracity-00005056 
DTMF[8741] channel.c: DTMF begin ignored '1' on SIP/veracity-00005056 
DTMF[8741] channel.c: DTMF end '1' received on SIP/veracity-00005056, duration 415 ms 
DTMF[8741] channel.c: DTMF end passthrough '1' on SIP/veracity-00005056 

事實上,它說,「忽略」關注我,但我沒有閱讀任何信息或論壇帖子,表明這是不受歡迎的行爲。

接收輸入的Java代碼如下所示。基本上它可以讓返回數字,或者 - 如果它爲零 - 重播菜單。

char key = 0; 

if (validOptions.contains("1")) 
    key = agiChan.streamFile(menu("menu1"), validOptions); 

if (validOptions.contains("2") && key == 0) 
    key = agiChan.streamFile(menu("menu2"), validOptions); 

if (validOptions.contains("3") && key == 0) 
    key = agiChan.streamFile(menu("menu3"), validOptions); 

if (!validOptions.contains("1") && !validOptions.contains("2") && key == 0) 
    key = agiChan.streamFile(menu("menu4"), validOptions); 

if (key == 0) 
    key = agiChan.waitForDigit(5000); 

return key; 

我對這件事感到迷茫,特別是因爲它不適合每個人。我甚至會在哪裏開始尋找/調試這樣的東西?

預先感謝您!

+0

快速更新:我取消註釋了「relaxdtmf」並將其設置爲yes的行。我會看日誌文件,看看我是否仍然忽略輸入。 – aimzies

+0

我們的供應商對他們的結局做出了改變,問題似乎消失了。我仍然不知道原因(甚至是解決方案)。 – aimzies

回答

0

是的,它通常來自提供者端,因爲信號從提供者發送/接收,總是嘗試使用不同的dtmf模式。