我有一段
Dialplan
代码,非常简单,它播放声音并接收dtmf
输入。
当我用这段代码拨打 internal 号码时,它正常工作,但如果我用 trunk 拨打相同号码,
dtmf
根本不起作用。
我使用的Asterisk服务器是
Asterisk 16.7.0
。它定期工作(在dtmf
和ivr
接收queue
和......一切正常)。
我在
dtmf
中测试了不同的trunk
模式,但没有任何区别。
我的拨号规则代码:
[my-test-context]
exten => test,1, NoOp(**********************);
same => n,Answer();
same => n,WaitExten(1);
same => n,Background(hello-world);
same => n,WaitExten(5);
exten => 1,1 ,SayDigits(1);
same => n,Hangup();
exten => i,1,SayDigits(0);
same => n,Hangup();
exten => t ,1,SayDigits(2);
same => n,Hangup();
我在
dtmfmode=rfc2833
里设置了sip.conf
但是没有用
任何帮助表示赞赏。
更新:
我的星号日志:
-- SIP/5191010914-0000003c answered
-- Executing [test@my-test-context:1] NoOp("SIP/5191010123-0000003c", "**********************") in new stack
-- Executing [test@my-test-context:2] Answer("SIP/5191010123-0000003c", "") in new stack
-- Executing [test@my-test-context:3] WaitExten("SIP/5191010123-0000003c", "1") in new stack
-- Timeout on SIP/5191010123-0000003c, continuing...
-- Executing [test@my-test-context:4] BackGround("SIP/5191010123-0000003c", "hello-world") in new stack
-- <SIP/5191010123-0000003c> Playing 'hello-world.gsm' (language 'pr')
[2023-04-07 23:15:11] NOTICE[2543]: chan_sip.c:28942 handle_request_register: Registration from '<sip:[email protected]:5060>' failed for 'xxx.xxx.xx.xx:51211' - Wrong password
-- Executing [test@my-test-context:5] WaitExten("SIP/5191010123-0000003c", "5") in new stack
[2023-04-07 23:15:16] NOTICE[2543]: chan_sip.c:28942 handle_request_register: Registration from '<sip:[email protected]:5060>' failed for 'xxx.xxx.xx.xx:52677' - Wrong password
-- Timeout on SIP/5191010123-0000003c, going to 't'
-- Executing [t@my-test-context:1] SayDigits("SIP/5191010123-0000003c", "9") in new stack
-- <SIP/5191010123-0000003c> Playing 'digits/9.slin' (language 'pr')
-- Executing [t@my-test-context:2] Hangup("SIP/5191010123-0000003c", "") in new stack
== Spawn extension (my-test-context, t, 2) exited non-zero on 'SIP/5191010123-0000003c'
这是调试问题,调试在 SO 上是题外话
要调试此问题,请参阅 dtmf debug
在 logger.conf 中
[general]
[logfiles]
console => notice,warning,error,dtmf
之后在控制台上(星号-r)
logger reload