Перейти к содержимому
Калькуляторы

Goip+Asterisk. Проблемы с распознаванием DTMF

Здравствуйте!

 

Столкнулся с такими проблемами при настройке связки 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)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добрый день,

в * разрешили донабор? кодеки согласованы?

Дебаг в студию...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Настройки на сервере:

    [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 - не помогло.

post-126279-090028900 1427020987_thumb.jpg

post-126279-006209600 1427020997_thumb.jpg

post-126279-091509200 1427021004_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доброго времени суток.

 

Никогда не работал с "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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В GoIP измени параметр в разделе Configurations/Advance VoIP/ DTMF Signaling = Outband и Outband DTMF type = RFC2833

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, коллеги.

 

Тоже есть GOIP-4 в хозяйстве.

 

Тоже долго не мог настроить передачу DTMF .

 

У меня заработало только  dtmf=inband с разрешенными кодеками alaw&ulaw .

 

По-другому не заработало, время дебажить не было. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.