Re: Дублирование DTMF
Добавлено: 23 май 2018, 13:39
Делается когда у ВАС на астере регистрируются абоненты..host=dynamic
Читать Астериск Будущее Телефонии.. Там всего одну главу перечитать надо..
Делается когда у ВАС на астере регистрируются абоненты..host=dynamic
relaxdtmf не помогает.Как видно, передача цифр в dtmf одинакова в обоих случаях, за исключением передачи события "dtmf end". В случае вызова на номер-679 все три сообщения "dtmf end" (для каждой цифры!) передаются удаленной стороной практически одновременно. В случае вызова на номер 8800 между сообщениями "dtmf end" видим интервал 20 мс. Никаких нарушений RFC2833 не наблюдается. При этом заметим, что для всех четрыех цифр набора астериск корректно опознает все три соообщения "dtmf end".
В логе астериска видим, что корректно распознались все четыре цифры (астериск начинает вызывать набранный номер 5590):
" -- Executing [5590@ivr-k:1] Dial("SIP/Rostel-00002115", "IAX2/MSK/5590") in new stack".
Однако далее астериск почему-то продолжает обрабатывать оставшиеся события "dtmf end" для последней цифры ("DTMF end '0' received"):
"[2018-05-25 14:28:07] DTMF[21961][C-00002118]: channel.c:4040 __ast_read: DTMF end '0' received on SIP/Rostel-00002115, duration 275 ms
-- Call accepted by 172.19.10.10:4569 (format ulaw)
-- Format for call is (ulaw)
[2018-05-25 14:28:07] DTMF[21961][C-00002118]: channel.c:4040 __ast_read: DTMF end '0' received on SIP/Rostel-00002115, duration 275 ms
[2018-05-25 14:28:07] DTMF[21961][C-00002118]: channel.c:4067 __ast_read: DTMF begin emulation of '0' with duration 275 queued on SIP/Rostel-00002115
-- IAX2/MSK-20082 is ringing
-- IAX2/MSK-20082 is ringing
[2018-05-25 14:28:09] DTMF[21961][C-00002118]: channel.c:4204 __ast_read: DTMF end emulation of '0' queued on SIP/Rostel-00002115"
Почему это происходит - неизвестно. Необходимо проверить диалплан (особенно если он самописный), также можно попробовать изменить настройку в файле конфигурации sip.conf на "relaxdtmf=yes"."
Код: Выделить всё
[from-internal]
exten => user12,1,Answer()
exten => user12,n,NoOp(${CDR(src)})
exten => user12,n,NoOp(${CALLERIDNUM})
exten => user12,n,NoOp(${CALLERID(num)})
exten => user12,n,NoOp(${CALLERID(all)})
exten => user12,n,NoOp(${EXTEN})
exten => user12,n,Goto(ivr-k,s,1)
[ivr-k]
exten => s,1,Set(num=0)
exten => s,1,Answer()
exten => s,n,WaitExten(1)
exten => s,n(start),Background(/var/lib/asterisk/sounds/ivr/IVR_K)
exten => s,n,WaitExten(4)
exten => _5[0-4]XX,1,Dial(IAX2/SPB/${EXTEN})
exten => _55XX,1,Dial(IAX2/MSK/${EXTEN})
;exten => _5XXX,1,Set(num=$[${num} + 1])
;exten => _5XXX,n,Dial(SIP/${EXTEN})
;exten => _5XXX,n,Playback(vm-extension)
;exten => _5XXX,n,Playback(vm-isonphone)
;exten => _5XXX,n,Gotoif($[${num} < 2]?s,start)
;exten => _5XXX,n,Dial(IAX2/SPB,,m)
;exten => _XXXX,1,Set(num=$[${num} + 1])
;exten => _XXXX,n,Dial(SIP/${EXTEN})
;exten => _XXXX,n,Playback(privacy-incorrect)
;exten => _XXXX,n,Gotoif($[${num} < 2]?s,start)
;exten => _XXXX,n,Dial(IAX2/SPB,,m)
exten => t,1,Dial(IAX2/SPB,,m)
exten => i,1,Dial(IAX2/SPB/${EXTEN},,m)
1) Согласно этим строчкам вы ждёте ввода внутреннего номера 1 секунду, потом транслируете ему IVR_K и ещё потом ждёте 4 секунды. Объясните зачем?repp.sv писал(а):Получил ответ от службы поддержки Ростелекома.Почему это происходит - неизвестно. Необходимо проверить диалплан (особенно если он самописный),
Код: Выделить всё
exten => s,1,Set(num=0)
exten => s,1,Answer()
exten => s,n,WaitExten(1)
exten => s,n(start),Background(/var/lib/asterisk/sounds/ivr/IVR_K)
exten => s,n,WaitExten(4)
согласен мой косяк.ждёте ввода внутреннего номера 1 секунду
для того что бы клиент мог ввести внутренний номер.потом транслируете ему IVR_K и ещё потом ждёте 4 секунды
Код: Выделить всё
exten => user12,n,Dial(IAX2/SPB,90,r)