Страница 5 из 7

Re: Дублирование DTMF

СообщениеДобавлено: 23 май 2018, 14:39
Zavr2008
host=dynamic

Делается когда у ВАС на астере регистрируются абоненты..

Читать Астериск Будущее Телефонии.. Там всего одну главу перечитать надо..

Re: Дублирование DTMF

СообщениеДобавлено: 28 май 2018, 16:54
repp.sv
Получил ответ от службы поддержки Ростелекома.

Как видно, передача цифр в 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"."


relaxdtmf не помогает.
диалплан элементарный
Код: выделить все
[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)


Куда копать?

Re: Дублирование DTMF

СообщениеДобавлено: 28 май 2018, 17:51
ded
Диалплан элементарный, и ошибки элементарные.
Честно говоря, исправлять чужой код (из четырёх строк!) - ужасно, неблагодарно. Рискую нарваться на поношение в мою сторону.
repp.sv писал(а):Получил ответ от службы поддержки Ростелекома.
Почему это происходит - неизвестно. Необходимо проверить диалплан (особенно если он самописный),


1) Согласно этим строчкам вы ждёте ввода внутреннего номера 1 секунду, потом транслируете ему IVR_K и ещё потом ждёте 4 секунды. Объясните зачем?
Код: выделить все
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)

2) Зачем вы приводите замаркированную часть кода? Которая взрывает мозг? Чтобы всем взорвать мозг?
;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)

Re: Дублирование DTMF

СообщениеДобавлено: 28 май 2018, 18:04
awsswa
Значит не судьба ... меняйте оператора

Re: Дублирование DTMF

СообщениеДобавлено: 28 май 2018, 18:05
repp.sv
ждёте ввода внутреннего номера 1 секунду

согласен мой косяк.
потом транслируете ему IVR_K и ещё потом ждёте 4 секунды

для того что бы клиент мог ввести внутренний номер.

Re: Дублирование DTMF

СообщениеДобавлено: 28 май 2018, 18:07
ded
Сделайте всё правильно, и будет работать всё правильно.

Re: Дублирование DTMF

СообщениеДобавлено: 29 май 2018, 09:50
repp.sv
Для теста сделал диалплан.

Код: выделить все
exten => user12,n,Dial(IAX2/SPB,90,r)


цифры все равно дублируются и диалплан здесь не причем.

Re: Дублирование DTMF

СообщениеДобавлено: 29 май 2018, 10:18
ddkprog
если вы поставили dtmf inbound
то тюнте на своей стороне определение цифр https://forum.asterisk.ru/viewtopic.php?f=3&t=6952
mindtmfgap=0
mindtmfduration=0
mindtmfinterval=100
dtmf=relax

патч кстати верните обратно

если ставите info или rfc2833 то теребите ростел, они детектят цифры
вы же как я понял перевели в inbound и теребите ростел, понятно что они к этому не имеют отношения

Re: Дублирование DTMF

СообщениеДобавлено: 29 май 2018, 13:08
repp.sv
Я не использую dongle.
У меня только SIP от провайдера.

Re: Дублирование DTMF

СообщениеДобавлено: 29 май 2018, 13:14
ddkprog
а причем здесь донгл ?
у вас в настройках какой тип dtmf на пире ?
судя по логам у вас бежит dtmf inbound
хотя до этого фигурировал rfc2833
логи не полные и подача нужной инфы от вас никакая, разобраться что у вас там происходит может только телепат или вы
тогда вам лучше найти платную поддержку, потому что тратить время на обучения вас затратно

как совет, найдите в гугле какой то обучающий материал о всех видах dtmf и о том как они работают, может разберетесь