Страница 2 из 4
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 16:38
chardisdze
Это тоже хотел сделать. Спасибо за решение.
Первостепенная задача заставить * работать так как надо.
По сути, нужно оповещение и dial одновременно...
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 16:51
chardisdze
ded писал(а):
chardisdze писал(а):Выпрыгивает из macro-dial-one после gosub
как описано кодом, так и выпрыгивает. А куда ему надо? Разве понятно?
предполагал что return() верну исполнение диалплана в macro-dial-one, но gosub отменяет macro.
Решение вижу только в использовании другого приложения.
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 16:57
ded
Нет, просто надо разобраться с вложениями. Macro & go sub вполне работтают вместе, посмотрите весь диалплан FreePBX - присутствуют и Macro, и Gosub.
Макрос возвращает результат выполнения в точку, откуда он вызывался.
Обзовите по другому, и всё получится:
Код: Выделить всё
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE | "RINGINUSE""]?Macro(play-and-set),s,1)
[macro-play-and-set]
exten => s,1,Set(__D_OPTIONS=Ttm))
exten => s,n,Playback(custom/V-dannyi-moment-sotrudnik))
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 17:21
chardisdze
Это будет решением в том контексте, что я обозначил, но не решит проблемы: всеравно сначала будет отрабатываться оповещение а потом dial... Задачку неверно поставил себе изначально... Сори если ввел в заблуждение.
Думаю как мне заставить playback работать одновременно с выполнение диалплана дальше.
Конечный результат планируется такой: вызов - определение статуса девайса - playback и dial одновременно (если условие совпало); если не совпало - просто dial.
Нашел
https://forum.asterisk.ru/viewtopic.php?p=82899, но пока не пойму как разрулить dial с moh и dial без moh и насколько это будет правильным.
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 17:25
ded
Код: Выделить всё
exten => s,n,ExecIf($["${DEVICE_STATE(${DSTRING})}" = "INUSE | "RINGINUSE""]?Macro(play-and-set),s,1)
[macro-play-and-set]
exten => s,1,Set(__D_OPTIONS=Ttm))
exten => s,n,Playback(custom/V-dannyi-moment-sotrudnik))
exten => s,n,Hangup()
вызов - определение статуса девайса - playback и dial одновременно (если условие совпало); если не совпало - просто dial.
playback и dial одновременно делается вызовом макроса в команде Dial (буква М)
Re: Использование 2ух приложений одновременно в execif
Добавлено: 26 ноя 2018, 17:30
chardisdze
Вот туда и буду копать.
Огромное спасибо за помощь! По результатам отпишусь, может кому пригодиться.
Re: Использование 2ух приложений одновременно в execif
Добавлено: 29 ноя 2018, 14:34
chardisdze
Сделано.
Последовательность действий:
1) Формируем отдельный класс MOH
2) Кидаем туда нужные для воспроизведения файлы
3) В extension_custom.conf в контексте указанном в примере прописываем условие и действие
3.1) Сравниваем статус девайса с нужными
3.2) если true то подменяем переменную D_Options и указываем в ней класс MOH
Вуаля!!!
Если девайс INUSE или RINGINUSE то слышим файлики MOH.
Если девайc NOT_INUSE то контекст пропускается и идет стандартный вызов.
Re: Использование 2ух приложений одновременно в execif
Добавлено: 29 ноя 2018, 14:51
ded
Это очень грамотно сформулировано и правильно реализовано.
Сентенция:
Придумывают гении, реализуют умники, а дураки пользуются, и даже не благодарят. (c) не моё.
Re: Использование 2ух приложений одновременно в execif
Добавлено: 29 ноя 2018, 17:29
chardisdze
ded, прости пожалуйста если обидел!!!
ОГРОМНЕЙШЕЕ ВАМ СПАСИБО ЗА СОДЕЙСТВИЕ!!!
Единственный нюанс: немного кривовато работает с FollowMe. Хочу попробовать с очередями...
И думаю еще, чтоб вызываемому абоненту шепотом сообщалось "Звонок на второй линии".
Буду думать. Еще раз спасибо!!!
Re: Использование 2ух приложений одновременно в execif
Добавлено: 29 ноя 2018, 19:37
ded
Вообще не обижался!
Лучшее - враг хорошего. И вызываемому абоненту будет пикать в ухо, не надо там шёпотом ничего, и на экране ИП-телефона высвечивается - от кого этот вызов.