Roman_R Posted March 18, 2015 Posted March 18, 2015 Здравствуйте! Столкнулся с такими проблемами при настройке связки Goip+Asterisk. Goip регистрируется на сервере Asterisk. Я звоню на шлюз по GSM. Он кидает на IVR, где осуществляется донабор номера. Так вот сигналы DTMF цифр 4 и 5 (да только эти ))) не распознаются сервером. Что за..? Наткнулся на кучу статей и рекомендаций в гугле. Вот одна из них: http://subnets.ru/blog/?p=1278 Перепробовал все что можно. за исключением инструкций по смене частот кодов и перекомпиляции сервера (Asterisk работает на NAS Synology). Склоняюсь к мысли, что дело все-таки в несогласованности используемых кодеков. Т.к. с очень древнего мобильного телефона все отлично работает) Поэтому было принято решение отправлять набираемый номер смсками, но и тут возникли проблемы, о которых я написал в соседней ветке. Может есть еще у кого идеи? Кстати вот так Сервер собирает и обрабатывает DTMF: [dtmf-analys] exten => s,1,SayDigits(0) [0-чтобы знать что мы в нужном контексте] ; exten => s,n,Answer() exten => s,n,Wait(1) exten => s,n(collect),Read(digito,,9) exten => s,n,SayDigits(${digito}) exten => s,n,GoTo(collect) exten => s,n,Hangup ; exten => t,1,Goto(s,1) Вставить ник Quote
_uznik_ Posted March 19, 2015 Posted March 19, 2015 Добрый день, в * разрешили донабор? кодеки согласованы? Дебаг в студию... Вставить ник Quote
Roman_R Posted March 22, 2015 Author Posted March 22, 2015 Настройки на сервере: [users](!) type=friend host=dynamic nat=yes canreinvite=no transport=udp qualify=yes disallow=all allow=alaw allow=ulaw callgroup=1 pickupgroup=1 deny=0.0.0.0/0.0.0.0 permit=172.126.0.0/255.255.255.0 [230](users) username=230 secret=1234 fromuser=230 insecure=port,invite context=default dtmfmode=rfc2833 Вот что происходит: == CDR updated on SIP/230-00000078 -- Executing [0@menu:1] Goto("SIP/230-00000078", "dtmf-analys,s,1") in new stack -- Goto (dtmf-analys,s,1) -- Executing [s@dtmf-analys:1] SayDigits("SIP/230-00000078", "0") in new stack -- <SIP/230-00000078> Playing 'digits/0.alaw' (language 'en') -- Executing [s@dtmf-analys:2] Answer("SIP/230-00000078", "") in new stack -- Executing [s@dtmf-analys:3] BackGround("SIP/230-00000078", "beep") in new stack -- <SIP/230-00000078> Playing 'beep.alaw' (language 'en') -- Executing [s@dtmf-analys:4] Wait("SIP/230-00000078", "1") in new stack -- Executing [s@dtmf-analys:5] Read("SIP/230-00000078", "digito,,9") in new stack -- Accepting a maximum of 9 digits. [Mar 22 16:33:41] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '1' received on SIP/230-00000078 [Mar 22 16:33:41] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '1' on SIP/230-00000078 [Mar 22 16:33:41] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '1' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:41] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '1' on SIP/230-00000078 [Mar 22 16:33:42] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '2' received on SIP/230-00000078 [Mar 22 16:33:42] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '2' on SIP/230-00000078 [Mar 22 16:33:42] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '2' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:42] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '2' on SIP/230-00000078 [Mar 22 16:33:43] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '3' received on SIP/230-00000078 [Mar 22 16:33:43] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '3' on SIP/230-00000078 [Mar 22 16:33:43] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '3' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:43] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '3' on SIP/230-00000078 [Mar 22 16:33:47] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '6' received on SIP/230-00000078 [Mar 22 16:33:47] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '6' on SIP/230-00000078 [Mar 22 16:33:47] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '6' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:47] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '6' on SIP/230-00000078 [Mar 22 16:33:51] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '7' received on SIP/230-00000078 [Mar 22 16:33:51] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '7' on SIP/230-00000078 [Mar 22 16:33:51] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '7' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:51] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '7' on SIP/230-00000078 [Mar 22 16:33:52] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '8' received on SIP/230-00000078 [Mar 22 16:33:52] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '8' on SIP/230-00000078 [Mar 22 16:33:52] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '8' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:52] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '8' on SIP/230-00000078 [Mar 22 16:33:56] DTMF[20485]: channel.c:4151 __ast_read: DTMF begin '9' received on SIP/230-00000078 [Mar 22 16:33:56] DTMF[20485]: channel.c:4155 __ast_read: DTMF begin ignored '9' on SIP/230-00000078 [Mar 22 16:33:56] DTMF[20485]: channel.c:4066 __ast_read: DTMF end '9' received on SIP/230-00000078, duration 100 ms [Mar 22 16:33:56] DTMF[20485]: channel.c:4135 __ast_read: DTMF end passthrough '9' on SIP/230-00000078 -- User entered '1236789' -- Executing [s@dtmf-analys:6] SayDigits("SIP/230-00000078", "1236789") in new stack -- <SIP/230-00000078> Playing 'digits/1.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/2.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/3.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/6.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/7.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/8.alaw' (language 'en') -- <SIP/230-00000078> Playing 'digits/9.alaw' (language 'en') -- Executing [s@dtmf-analys:7] Goto("SIP/230-00000078", "collect") in new stack -- Goto (dtmf-analys,s,5) -- Executing [s@dtmf-analys:5] Read("SIP/230-00000078", "digito,,9") in new stack -- Accepting a maximum of 9 digits. -- User entered nothing. -- Executing [s@dtmf-analys:6] SayDigits("SIP/230-00000078", "") in new stack -- Executing [s@dtmf-analys:7] Goto("SIP/230-00000078", "collect") in new stack -- Goto (dtmf-analys,s,5) -- Executing [s@dtmf-analys:5] Read("SIP/230-00000078", "digito,,9") in new stack -- Accepting a maximum of 9 digits. -- User entered nothing. -- Executing [s@dtmf-analys:6] SayDigits("SIP/230-00000078", "") in new stack -- Executing [s@dtmf-analys:7] Goto("SIP/230-00000078", "collect") in new stack -- Goto (dtmf-analys,s,5) -- Executing [s@dtmf-analys:5] Read("SIP/230-00000078", "digito,,9") in new stack -- Accepting a maximum of 9 digits. Повторюсь: если звонить с очень древнего мобильного телефона, все корректно работает. Также если звонить со софтфонов. Проблема только при звонке с мобильного на Goip. Пробовал разные типы DTMF - не помогло. Вставить ник Quote
SUrov_IBM Posted March 26, 2015 Posted March 26, 2015 Доброго времени суток. Никогда не работал с "Goip". Могу лишь предположить, что при звонке со "старенького" мобильного ТА передача DTMF происходит в голосовом канале (dtmf in band), "прозрачно" пробегая на Asterisk в кодеке G711. Это приводит к успешной обработке звукового сигнала IVR'ом. Современные мобильные ТА, возможно отдают DTMF в телефонной сигнализации (dtmf out of band), не генерируя звукового сигнала. При этом Ваш "Goip шлюз" не может корректно распознать сигнализацию оператора и передаёт на Asterisk (в dtmfmode=rfc2833), что ему почудилось. Для эксперимента: 1. Между "Goip шлюз" и Asterisk оставьте только голосовой кодек G711 (A-Law). 2. В файле конфигурации Asterisk "sip.conf" установите значение "dtmfmode=auto" (см. "General" конфигурацию). 3. После этого переберите DTMF параметры на "Goip шлюз" с совершением звонка (мобильный ТА современного поколения). Если не помогает, соедините "Goip шлюз" вместо Asterisk с какие-нибудь VoIP шлюзом (AddPac или D-Link (в режиме dtmf in band)) вывод на аналоговый ТА, терминируя на него звонок. Ответьте на звонок, далее наберите (мобильный ТА современного поколения) DTMF - Вы должны услышать характерный зуммер цифры. Если Вы его не слышите, а слышите шелест или треск, попробуйте поменять прошивку на "Goip шлюз". Вы должны услышать набор цифры, что решить проблему. Либо же будет корректно обрабатываться сигнализация (dtmf out of band), но это Вы поймете, только вернув соединение "Goip шлюз" и Asterisk. Вставить ник Quote
Beetec Posted March 26, 2021 Posted March 26, 2021 В GoIP измени параметр в разделе Configurations/Advance VoIP/ DTMF Signaling = Outband и Outband DTMF type = RFC2833 Вставить ник Quote
andrsharov Posted March 29, 2021 Posted March 29, 2021 Здравствуйте, коллеги. Тоже есть GOIP-4 в хозяйстве. Тоже долго не мог настроить передачу DTMF . У меня заработало только dtmf=inband с разрешенными кодеками alaw&ulaw . По-другому не заработало, время дебажить не было. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.