Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Конфигурация и настройка / Прослушивание dtmf в канале

Прослушивание dtmf в канале

Avatara of zlat
Сообщений: 215

Прослушивание dtmf в канале

Доброго всем дня!
Вот такой вопрос назрел, что-то никак не могу найти решение. В чем суть: допустим звоню я на какой-либо внешний номер, где стоит голосовое меню. С той стороны приходит ответ и просят ввести добавочный номер. Я набираю (dtmf при этом передаются уже при установленном соединении), переключаюсь на этот внутренний номер, и т.д. Вот. А как бы узнать (занести в переменную) те цифры, что я набираю при этом. Включил логирование, в консоли эти dtmf-посылки от себя я вижу, только в какую переменную они заносятся мне неизвестно. Смотрел сначала в сторону Read(), но он выполняется по завершению вызова. Нашел опцию одну в Dial M(Макрос), но не знаю, в то ли направление смотрю. Есть еще варианты?
2010-05-19 16:58

Сообщений: 6521

Re: Прослушивание dtmf в канале

Пример

; dial 307 = для перезапуска Asterisk
; Замечание: вместо Read() мы также можем использовать команду Authenticate()
exten => 307,1,DigitTimeout(4) ; Установка Digit Timeout в 4 секунды
exten => 307,2,ResponseTimeout(5) ; Установка Response Timeout в 5 секунды
; Следующая команда проигрывает приглашение: "для перезапуска введите пароль"
exten => 307,3,Read(Secret,posix-pass-restart-ast,3)
exten => 307,4,NoOp(${Secret})
exten => 307,5,Gotoif($[${Secret} = 123]?6:9)
exten => 307,6,Playback(posix-restarting) ; "Перезапуск asterisk"
exten => 307,7,Wait(1)
exten => 307,8,System(/usr/sbin/asterisk -rx reload)
exten => 307,9,Hangup
2010-05-19 18:15

Сообщений: 1573

Re: Прослушивание dtmf в канале

zlat:

Смотрел сначала в сторону Read(), но он выполняется по завершению вызова.
Что то вы недосмотрели ...
2010-05-19 19:08

Avatara of zlat
Сообщений: 215

Re: Прослушивание dtmf в канале

2ded: это я видел, только, как понимаю, это не совсем то.
У меня сначала выполняется Dial, я сначала дозваниваюсь до абонента, он мне отвечает, Dial продолжает выполняться и вот здесь мне одновременно надо набрать цифры и записать их в переменную, одновременно с выполнением Dial. А здесь я могу или до совершения вызова поставить Read
exten => 333333,1,Read(Secret,,3) ; пока не выполн, не сделает вызов
exten => 333333,n,Dial(SIP/trunk/333333)

или после
exten => 333333,1,Dial(SIP/trunk/333333)
exten => 333333,n,Read(Secret,,3) ; начнет выполняться после завершения вызова

а мне нужно одновременно

вот что я нашел про использование макроса в Dial:
Пример 1: макрос в команде Dial.

screen-record: Назовите Ваше имя и нажмите решетку.
screen-from: Вам поступил звонок от
screen-accept: Нажмите 1 для принятия вызова или любую другую, чтоб отвергнуть.

exten => 890,1,Wait(0.2)
exten => 890,2,Playback(screen-record)
exten => 890,3,SetVar(SCREEN_FILE=/tmp/${CALLERIDNUM}-${EPOCH})
exten => 890,4,Record(${SCREEN_FILE}.gsm|6|25)
exten => 890,5,Dial(SIP/16|60|gM(screen^${SCREEN_FILE}))
exten => 890,6,Voicemail(10@default)

[macro-screen]
exten => s,1,Wait(0.2)
exten => s,2,Playback(screen-from)
exten => s,3,Playback(${ARG1})
exten => s,4,Read(ACCEPT|screen-accept|1)
exten => s,5,GotoIf($[${ACCEPT} = 1 ] ?7:6)
exten => s,6,SetVar(MACRO_RESULT=CONTINUE)
exten => s,7,System(/bin/rm ${ARG1})


M(x): Заставляет выполнить macro (x) в момент ответа на вызов - вроде как оно
2010-05-19 19:51

Сообщений: 1530

Re: Прослушивание dtmf в канале

zlat:

Dial продолжает выполняться и вот здесь мне одновременно надо набрать цифры и записать их в переменную, одновременно с выполнением Dial.
В чем глубокий смысл одновременного выполнения?
Напишите, зачем Вам нужно именно так, а не иначе?

M() не поможет:
M(x[^arg]) - Execute the Macro for the *called* channel before connecting to the calling channel.

Может вначале получить эти цифры при помощи Read, а затем передать их через Dial:


D([called][:calling]) - Send the specified DTMF strings *after* the called
party has answered, but before the call gets bridged. The 'called'
DTMF string is sent to the called party, and the 'calling' DTMF
string is sent to the calling party. Both parameters can be used
alone.

описание может отличаться -- у меня старая версия *.
http://www.telecomtechnology.net - premium терминация
2010-05-19 23:35

Avatara of zlat
Сообщений: 215

Re: Прослушивание dtmf в канале

Спасибо, tma. Ваш ответ натолкнул меня на одну мысль. Попытаюсь ее завтра реализовать :)
2010-05-20 00:46

Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru