Есть машина с установленным asterisk 1.4 и zaptel.
Есть план набора, который при наборе определенной комбинации цифр в аналоговую линию роутит звонок дальше. Суть проблемы, при наборе аналоговой линии астериска из ТФОП и пикания DTMF - все хорошо, все работает, плохо, когда астериск набирается по сотовому телефону - он отвечает и ждет набора DTMF, но практически каждый раз не успеваю набрать до конца нужную комбинацию (9 цифр), происходит HangUp линии. Вот лог этого момента:
Код: Выделить всё
-- Starting simple switch on 'Zap/1-1'
[Feb 7 22:17:09] NOTICE[11082]: chan_zap.c:6563 ss_thread: Got event 18 (Ring Begin)...
-- Executing [s@from-pstn:1] Answer("Zap/1-1", "") in new stack
-- Executing [s@from-pstn:2] Set("Zap/1-1", "TIMEOUT(digit)=5") in new stack
-- Digit timeout set to 5
-- Executing [s@from-pstn:3] Set("Zap/1-1", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10
-- Executing [s@from-pstn:4] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:5] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:6] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:7] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:8] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:9] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:10] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:11] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:12] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:13] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:14] GotoIf("Zap/1-1", "0?400") in new stack
-- Executing [s@from-pstn:15] GotoIf("Zap/1-1", "0?400") in new stack
-- Executing [s@from-pstn:16] BackGround("Zap/1-1", "zdravstujte") in new stack
-- <Zap/1-1> Playing 'zdravstujte' (language 'ru')
-- Executing [s@from-pstn:17] BackGround("Zap/1-1", "speed-enternumber") in new stack
-- <Zap/1-1> Playing 'speed-enternumber' (language 'ru')
[Feb 7 22:17:13] DTMF[11082]: channel.c:2133 __ast_read: DTMF end '9' received on Zap/1-1, duration 0 ms
[Feb 7 22:17:13] DTMF[11082]: channel.c:2185 __ast_read: DTMF end accepted without begin '9' on Zap/1-1
[Feb 7 22:17:13] DTMF[11082]: channel.c:2196 __ast_read: DTMF end passthrough '9' on Zap/1-1
[Feb 7 22:17:13] DTMF[11082]: channel.c:2133 __ast_read: DTMF end '0' received on Zap/1-1, duration 0 ms
[Feb 7 22:17:13] DTMF[11082]: channel.c:2185 __ast_read: DTMF end accepted without begin '0' on Zap/1-1
[Feb 7 22:17:13] DTMF[11082]: channel.c:2196 __ast_read: DTMF end passthrough '0' on Zap/1-1
[Feb 7 22:17:14] DTMF[11082]: channel.c:2133 __ast_read: DTMF end '0' received on Zap/1-1, duration 0 ms
[Feb 7 22:17:14] DTMF[11082]: channel.c:2185 __ast_read: DTMF end accepted without begin '0' on Zap/1-1
[Feb 7 22:17:14] DTMF[11082]: channel.c:2196 __ast_read: DTMF end passthrough '0' on Zap/1-1
[Feb 7 22:17:15] DTMF[11082]: channel.c:2133 __ast_read: DTMF end '9' received on Zap/1-1, duration 0 ms
[Feb 7 22:17:15] DTMF[11082]: channel.c:2185 __ast_read: DTMF end accepted without begin '9' on Zap/1-1
[Feb 7 22:17:15] DTMF[11082]: channel.c:2196 __ast_read: DTMF end passthrough '9' on Zap/1-1
-- Hungup 'Zap/1-1'
Код: Выделить всё
-- Starting simple switch on 'Zap/1-1'
[Feb 7 22:25:18] NOTICE[11178]: chan_zap.c:6563 ss_thread: Got event 18 (Ring Begin)...
-- Executing [s@from-pstn:1] Answer("Zap/1-1", "") in new stack
-- Executing [s@from-pstn:2] Set("Zap/1-1", "TIMEOUT(digit)=5") in new stack
-- Digit timeout set to 5
-- Executing [s@from-pstn:3] Set("Zap/1-1", "TIMEOUT(response)=10") in new stack
-- Response timeout set to 10
-- Executing [s@from-pstn:4] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:5] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:6] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:7] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:8] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:9] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:10] GotoIf("Zap/1-1", "0?200") in new stack
-- Executing [s@from-pstn:11] GotoIf("Zap/1-1", "0?100") in new stack
-- Executing [s@from-pstn:12] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:13] GotoIf("Zap/1-1", "0?300") in new stack
-- Executing [s@from-pstn:14] GotoIf("Zap/1-1", "0?400") in new stack
-- Executing [s@from-pstn:15] GotoIf("Zap/1-1", "0?400") in new stack
-- Executing [s@from-pstn:16] BackGround("Zap/1-1", "zdravstujte") in new stack
-- <Zap/1-1> Playing 'zdravstujte' (language 'ru')
-- Executing [s@from-pstn:17] BackGround("Zap/1-1", "speed-enternumber") in new stack
-- <Zap/1-1> Playing 'speed-enternumber' (language 'ru')
[Feb 7 22:25:21] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '9' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:21] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '9' on Zap/1-1
[Feb 7 22:25:21] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '9' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '0' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:22] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '0' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '0' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '0' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:22] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '0' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '0' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '9' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:22] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '9' on Zap/1-1
[Feb 7 22:25:22] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '9' on Zap/1-1
[Feb 7 22:25:23] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '9' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:23] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '9' on Zap/1-1
[Feb 7 22:25:23] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '9' on Zap/1-1
[Feb 7 22:25:23] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '7' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:23] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '7' on Zap/1-1
[Feb 7 22:25:23] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '7' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '1' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:24] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '1' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '1' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '5' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:24] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '5' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '5' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '4' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:24] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '4' on Zap/1-1
[Feb 7 22:25:24] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '4' on Zap/1-1
[Feb 7 22:25:25] DTMF[11178]: channel.c:2133 __ast_read: DTMF end '#' received on Zap/1-1, duration 0 ms
[Feb 7 22:25:25] DTMF[11178]: channel.c:2185 __ast_read: DTMF end accepted without begin '#' on Zap/1-1
[Feb 7 22:25:25] DTMF[11178]: channel.c:2196 __ast_read: DTMF end passthrough '#' on Zap/1-1
== CDR updated on Zap/1-1
-- Executing [900997154#@from-pstn:1] Playback("Zap/1-1", "pls-hold-while-try") in new stack
-- <Zap/1-1> Playing 'pls-hold-while-try' (language 'ru')
-- Executing [900997154#@from-pstn:2] Macro("Zap/1-1", "trunkdial|IAX2/spain/900997154") in new stack
-- Executing [s@macro-trunkdial:1] Dial("Zap/1-1", "IAX2/spain/900997154") in new stack
-- Called spain/900997154
-- Call accepted by xx.xx.xx.xx (format g729)
-- Format for call is g729
-- IAX2/spain-16384 answered Zap/1-1
Код: Выделить всё
[from-pstn]
exten => s,1,Answer
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?100)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?100)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?200)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?200)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?300)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?300)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?200)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?100)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?300)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?300)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?400)
exten => s,n,GotoIf($["${CALLERID(num)}" = "№№"]?400)
exten => s,n,Background(zdravstujte)
exten => s,n(number),Background(speed-enternumber)
exten = s,100,Playback(pls-hold-while-try)
exten = s,101,Macro(trunkdial,{TRUNK-IAX-SPAIN}/$№№)
exten = s,199,Hangup
exten = s,200,Background(pls-hold-while-try)
exten = s,201,Macro(trunkdial,${trunk_2}/№№)
exten = s,299,Hangup
exten = s,300,Background(connecting)
exten = s,301,Macro(trunkdial,${trunk_2}/№№)
exten = s,399,Hangup
exten = s,400,Background(connecting)
exten = s,401,Macro(trunkdial,${trunk_2}/№№)
exten = s,499,Hangup
exten = s,500,Hangup
exten => _*NXXXXXXXX#,1,Playback(pls-hold-while-try)
exten => _*NXXXXXXXX#,n,Macro(trunkdial,${TRUNK-IAX-SPAIN}/${EXTEN:1:10})
exten => _NXXXXXXXX#,1,Playback(pls-hold-while-try)
exten => _NXXXXXXXX#,n,Macro(trunkdial,${TRUNK-IAX-SPAIN}/${EXTEN:0:9})
exten => _NXXXXXXXX,1,Playback(pls-hold-while-try)
exten => _NXXXXXXXX,n,Macro(trunkdial,${TRUNK-IAX-SPAIN}/${EXTEN})
exten => _34NXXXXXXXX#,1,Playback(pls-hold-while-try)
exten => _34NXXXXXXXX#,n,Macro(trunkdial,${TRUNK-SIPNET}/${EXTEN:0:11})
exten => _34NXXXXXXXX,1,Playback(pls-hold-while-try)
exten => _34NXXXXXXXX,n,Macro(trunkdial,${TRUNK-SIPNET}/${EXTEN})
exten => i,1,Background(invalid)
exten => i,n,Goto(s,number)
exten => t,1,Playback(vremja-ozhidanija-isteklo)
exten => t,n,Playback(goodbye)
exten => t,n,Hangup
exten = 5#,1,Goto(voicemenu-custom-1|s|1)
exten = 4#,1,Goto(dtmf-test|s|1)
[voicemenu-custom-1]
exten = s,1,Background(thank-you-for-calling)
exten = s,n,Background(if-u-know-ext-dial)
exten = s,n,Wait,5
exten = s,n,Playback(vm-goodbye)
exten = s,n,Hangup
exten = s,n,NoOp
exten = _NXXXXXXXX,1,Background(pls-wait-connect-call)
exten = _NXXXXXXXX,n,Macro(trunkdial,${TRUNK-IAX-SPAIN}/${EXTEN})
exten = i,1,Background(you-dialed-wrong-number)
exten = i,n,Background(pls-try-again)
exten = i,n,Background(goodbye)
exten = i,n,Hangup
[dtmf-test]
exten = s,1(collect),Read(digito,,11)
exten = s,n,SayDigits(${digito})
exten = s,n,GoTo(collect)
exten = s,n,Hangup
exten = s,n,NoOp