星号DTMF有时会被忽略(但只对某些人)



我有一个很奇怪的问题,甚至不知道从哪里开始找

我们正在使用AGI和Java库来呈现IVR,但是已经收到用户的投诉,他们的按键被忽略了。

在我的sip.conf中,在general部分下,我像这样定义了DTMF("relax"行被注释掉):

dtmfmode = rfc2833
;relaxdtmf=yes

我已经和提供商确认过了,它应该是rfc2833,因为这是他们专门为我们配置的。

我将logger.conf中的dtmf调试级别打开到我的messages文件:

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;

我在这个问题上很困惑,尤其是因为不是每个人都这样。我该从哪里开始查找/调试这样的东西呢?

提前感谢!

是的,它通常来自提供商端,因为信号是从提供商端发送/接收的,所以总是尝试使用不同的dtmf模式。

相关内容

  • 没有找到相关文章

最新更新