Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Не передается DTMF в FXO (Dial, SendDTMF)

1

Asterisk 1.8.8.0-1digium1~squeeze. SIP телефоны X-Lite. Шлюз DLink DVG-7111. FXO подключен к ведомственной АТС. АТС поддерживает тональный набор.

Работает вручную:

exten => 0,1,Dial(SIP/999/${EXTEN})
exten
=> 0,n,Hangup()

Звоню с X-Lite на 0, добираю нужный номер 2222(например) - все работает.

Не работает автоматом, звоню 2222(например) - слышу гудок АТС: Пробовал так:

exten => _2XXX,1,Dial(SIP/999/${EXTEN},,D(${EXTEN}))
exten
=> _2XXX,n,Hangup()

И вот так:

[macro-sendnum]
exten
=> s,1,Wait(3) ; ждет 3 сек, чтобы донабрать внутренний номер
exten
=> s,n,SendDTMF(${ARG1})

[dp1]
exten
=> _2XXX,1,Dial(SIP/999/${EXTEN},,M(sendnum^${EXTEN}))
exten
=> _2XXX,n,Hangup()

Игрался с dtmfmode = rfc2833 relaxdtmf = yes не помогает, такое ощущение, что D или SendDTMF не передаются ничего или передают лабуду.

Лог макро:

  -- Executing [s@macro-sendnum:1] Wait("SIP/999-00000001", "3") in new stack
[Dec 29 16:31:37] DEBUG[4920]: app_macro.c:435 _macro_exec: Executed application: Wait
[Dec 29 16:31:37] DEBUG[4920]: pbx.c:4100 pbx_extension_helper: Launching 'SendDTMF'
   
-- Executing [s@macro-sendnum:2] SendDTMF("SIP/999-00000001", "2335") in new stack
[Dec 29 16:31:38] DEBUG[4920]: app_macro.c:435 _macro_exec: Executed application: SendDTMF
[Dec 29 16:31:38] DEBUG[4920]: app_dial.c:2595 dial_exec_full: Macro exited with status 0

А вот про DTMF не слово в логах, хоть и console => notice,warning,error,debug,verbose,dtmf

спросил Dec 29 '11

morph26 Gravatar morph26
11 1 3

Comments

Вызов то отвечен?

zzuz (Dec 29 '11)edit

немного не понял :( поясните пожалуйста.

morph26 (Dec 29 '11)edit

Поясняю. Отвечен ли вызов ? Куда вы слать dtmf пытаетесь? Ваш шлюз отвечает на вызов при попытке набрать номер , вы шлёте сигналы , когда шлюз только сам начинает набирать ваш ${EXTEN}. Поправьте , если я неправ.

zzuz (Dec 29 '11)edit

dtmf пытаюсь слать АТСке, чтобы она набрала номер. Т.е. если я вручную набираю 0, (exten => 0,1,Dial(SIP/999/${EXTEN})) слышу гудок аналоговой АТС и набираю dtmfом любой номер аналоговой АТС - дозваниваюсь. А если хочу, чтобы это произошло автоматом - набрал сразу номер (без 0) dtmf не отсылается, после набора я слышу только гудок аналоговой АТС.

morph26 (Dec 30 '11)edit

чёт я тоже не понимаю проблемы))) я делал похожую связку и не было никаких проблем! exten => _2XXX,1,Dial(SIP/trunkname/${EXTEN}) тут скорее всего проблема не в дтмф а правильном диалплане

DJs3000 (Jan 4 '12)edit

4 Ответа

0

надо еще сказать в консоли

dtmf debug on
ссылка удалить спам редактировать

ответил Dec 29 '11

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

зачем, если этим логгер занимается?

zzuz (Dec 29 '11)edit

да еще и asterisk 1.8, который на dtmf set debug on, dtmf debug on, core dtmf set debug on ругается что такой команды нет. Хотя cat /var/log/asterisk/messages |grep DTMF дает некий результат, отображается только то,что передает софтверный телефон

morph26 (Dec 29 '11)edit
0

Разобрался - то ли у шлюза кривой DTMF, то ли АТС хитрая. Включил syslog на шлюзе - смотрю номер на PSTN пытается набирать. Pulse\UK в настройках шлюза помог. Хотя с обычного ТА или софтфоном набирается тоном норм. И пробовал разный DTMF включать на шлюзе, и громкость менял... В общем всем спасибо и новым годом!

ссылка удалить спам редактировать

ответил Jan 3 '12

morph26 Gravatar morph26
11 1 3

обновил Jan 3 '12

0
ссылка удалить спам редактировать

ответил Jan 4 '12

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

обновил Jan 4 '12

0

Может быть, я ошибаюсь, но по моему должно быть так:

Dial(SIP/${EXTEN}@999,60,rt)

ссылка удалить спам редактировать

ответил Jan 3 '12

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

Comments

Вы поймете , ошибаетесь или нет , если сами себе ответите на вопрос "А в чем разница?"

zzuz (Jan 3 '12)edit
  1. Впертом случае «Звоню с X-Lite на 0, добираю нужный номер 2222(например) - все работает.» DTMF rfc-2833 генерит софтфон.
  2. Во втором случае это делает Asterisk. В этом же случае DTMF будет генерировать шлюз. В котором должны быть правильные настройки http://3cx.com.ua/index.php?q=node/289 Или я ошибаюсь???
bolshoy_plohish (Jan 4 '12)edit

Вы, Уважаемый , ошибаетесь уже на том месте , когда связываете вид строки Dial с посылом DTMF . Читать документацию иногда полезно. Советую.

zzuz (Jan 4 '12)edit

А выдержкой из документации слабо поделится? ;-)

bolshoy_plohish (Jan 4 '12)edit

да конечно, extensions.conf.sample

zzuz (Jan 4 '12)edit

А вот это вы читали? http://ru.wikipedia.org/wiki/SIP Почитайте внимательнее! Номер можно передать в стеке SIP протокола шлюзу, а можно пихать напрямую через RTP по средствам подачи DTMF сигнала!

bolshoy_plohish (Jan 4 '12)edit

Dial(SIP/${EXTEN}@999,60,rt) - где в этой записи намек на DTMF ? И вообще причем тут DTMF ?

zzuz (Jan 4 '12)edit

Вот и я про тоже!!! Зачем вообще в данном случае нужен DTMF??? "Dial(SIP/${EXTEN}@999,60,rt) В этом же случае DTMF будет генерировать шлюз. В котором должны быть правильные настройки""- Где здесь поро DTMF в Dial() написано??? Вообще то это стандартная SIP адресация!!

bolshoy_plohish (Jan 4 '12)edit

А если уж хочется DTMF сунуть , то в SIP транке нужно dtmfmode=rfc2833 прописать. И в Dial() Разрешитьть звонящему пользователю перевести звонок Наверное так: Dial(SIP/999/${EXTEN},T)

bolshoy_plohish (Jan 4 '12)edit

Пичаль, такая пичаль!

zzuz (Jan 4 '12)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: Dec 29 '11

Просмотрен: 2,532 раз

Обновлен: Jan 04 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.