Звездочка DTMF иногда игнорируется (но только для некоторых людей) - PullRequest
0 голосов
/ 05 декабря 2011

У меня очень странная проблема, и я даже не знаю, с чего начать.

Мы используем библиотеки AGI и Java для представления IVR, но получили жалобы от пользователей, что их нажатия клавишигнорируются.

В моем sip.conf в разделе general я определил DTMF следующим образом (строка "relax" закомментирована):

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;

Я в растерянности с этим, тем более чтоне бывает для всех.С чего бы мне даже начать искать / отлаживать что-то подобное?

Заранее спасибо!

1 Ответ

0 голосов
/ 18 ноября 2014

Да, это обычно со стороны провайдеров, потому что сигнал отправляется / принимается от провайдеров, всегда пытайтесь использовать разные режимы dtmf.

...