VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

вызов экстена во время выполнения BackGround

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

глубже почитал, люди для выполнения этой задачи такие схемы заворачивают, что волосы дыбом встают, кошмар.

не знаю можно ли ссылки на чужие ресурсы делать, но вот что творят : https://happyman1974.wordpress.com/2016 ... -asterisk/
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: вызов экстена во время выполнения BackGround

Сообщение ded »

Думаете, что вызов через макрос сложная схема и волосы дыбом?

Код: Выделить всё

exten => s,1,Macro(music,470)

[macro-music]
exten => s,1,SetMusicOnHold(mymusic)
exten => s,n,Progress()
exten => s,n,Dial(SIP/${ARG1},40,m)
exten => s,n,Hangup()
P.S. У вас аналоговый порт FXO, так что забудьте про Early media.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

согласен, забыл, использование невозможно.
Сейчас можно сформулировать задачу предельно чётко- нужно что-то, что умеет и звуковой файл играть, и одновременно вызывать экстен.
Пока всё костыли.
P.S. вот это exten => s,n,Dial(SIP/${ARG1},40,m) не понимаю, конкретнее {ARG1}. где почитать ?
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: вызов экстена во время выполнения BackGround

Сообщение ded »

Строка s,1,Macro(music,470) вызывает макрос music (описанный выше, и передаёт в него 470 в качестве аргумента ${ARG1}.
При этом вызов идёт 40 сек, и m) - играет музыка в ожидании, которая на самом деле не музыка, а записанная фраза приветствие_2
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

Почитал про макросы, разобрался. Не знал синтаксис Macro, отсюда и проблемы.

Теперь борюсь с музыкой - звёздочка упорно играет музыку по- умолчанию, не поддается.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

Разобрался. Проигрываем не файл, а содержимое папки, описанное в musiconhold.conf.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

Итак, вот рабочий конфиг. Не все гладко, но работает, и введено в тестовую эксплуатацию. Звуковой файл, как и предполагалось, пришлось резать на две части вышеописанным процессом деления. Конечный результат: голосовой шлюз вызывает интерактивное меню, background проигрывает файл, ожидая DTMF (в случае неправильной комбинации отсылает на номер 470); если ничего никто не нажал,передаёт вызов на номер 470, вместо гудков проигрывая музыку. Если трубка не поднята- отбивает вызов. Закомментированные строчки - то что перестало работать- например, информер вызывается сам по себе, без нажатия кнопок. Беда с голосовой почтой , думаю, нарисовалась независимо от IVR.
Как решить вопрос с возможностью приёма DTMF во время Dial- всё в книжках написано, думаю вернуться к изучения синтаксиса Dial (я про "d") - это чтобы не делить приветствие на две части, учтите только что Dial обрабатывает только одну цифру.
Спасибо всем принявшим участие в обсуждении данной темы, ваша помощь была очень кстати.
[IVR_2]
exten => s,1,Answer()
exten => s,2,Background(приветствие_2_короткое)
exten => s,3,WaitExten(5)
exten => s,4,Macro(greeting_2,470)
exten => s,5,WaitExten(5)
exten => s,6,Playback(vm-nobodyavail)
exten => i,1,Background(invalid)
exten => i,2,WaitExten(5)
exten => i,n,Dial(SIP/470,30) ; секретарь_2
exten => _47X,3,Dial(SIP/${EXTEN},20) ;- при наборе внутреннего номера телефон звонит 20 секунд
exten => _47X,4,Playback(vm-nobodyavail)
; exten => 2,1,Goto(informer_100,s,1)
;same => n,Voicemail(${EXTEN},${IF($["{DIALSTATUS}" = "BUSY"]?b:u)}) ; голосовая почта
same => n,Hangup() ; - вешается трубка

include=> FXO_gateway_2



[macro-greeting_2]
exten=> s,1,SetMusicOnHold(moh_2)
exten=> s,2,Progress()
exten=> s,3,Dial(SIP/${ARG1},40,m)
exten=> s,4,Goto(IVR_2,s,6)


P.S. По- моему, не срабатывает Hangup- не увидел в логах выполнения этой команды. Тоже нужно разбираться.
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: вызов экстена во время выполнения BackGround

Сообщение zzuz »

Чего же ему срабатывать. Вы же про приоритеты выполнения диалплана решили не читать.
Линия24 - Системы Массового Телефонного Обслуживания
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

Re: вызов экстена во время выполнения BackGround

Сообщение davidjonson »

Вызывающий абонент повесил трубку,
Команда вернула код возврата -1 (индикатор ошибки)
Команды со следующим приоритетом не существует
Вызов был переброшен на другой екстеншн

Вы про эти правила ? получается, что команда не выполняется, и голосовой канал остаётся включенным?
Или нужно дописать exten => s,7,Hangup () ?
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

Re: вызов экстена во время выполнения BackGround

Сообщение ded »

exten => _47X,3,Dial(SIP/${EXTEN},20) ;- при наборе внутреннего номера телефон звонит 20 секунд
exten => _47X,4,Playback(vm-nobodyavail)

Отсутствуют приоритеты (шаги) 1 и 2

exten => _47X,1,
exten => _47X,2,

Есть экстен
exten => 2,1,Goto(informer_100,s,1)
но нет
exten => 1,1,
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH