Страница 1 из 2
Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 12:59
P.Ilya
Имеется следующая логика: Нужно проиграть приветствие перед тем, как через очередь соединить клиента и оператора.
примерно так
Код: Выделить всё
exten => s,n,Answer
exten => s,n,BackGround(greeting) #10 секунд
exten => s,n,DoSomething
exten => s,n,Wait(XXX)
exten => s,n,Queue(queue_support,n,,,15,,connect)
[macro-connect]
exten => s,1,NoOp()
exten => s,n,Set(HOLDTIME=${QEHOLDTIME})
exten => s,n,System(php status.php BUSY ${CHANNEL:6} &);
exten => s,n,System(php premium.php update ${ACTIONID} ${group_result} &);
Условно говоря, нужно к концу воспроизведения записи greeting выполнить соединение, желательно до конца приветствия.
Сейчас либо воспоизведение обрывается в момент добавления оператора, либо его добавляет с паузой после окончания записи(довольно большой).
Подскажите, каким способом можно обеспечить данное поведение. Через конференцию?
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 17:26
P.Ilya
Не возвращает управление.
BackGround: Проигрывает звуковой файл, в это время могут исполняться другие команды
Непонятно почему
Подскажите, какие средства смотреть - meetme, конференция, parked call, очередь, MOH?
Нужно, что бы при звонке проигралось сообщение полностью, но управление вернулось сразу, а не после окончания аудио.
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 17:40
ded
Илья, в этом контексте -
Код: Выделить всё
exten => s,n,Answer
exten => s,n,BackGround(greeting) #10 секунд
exten => s,n,DoSomething
exten => s,n,Wait(XXX)
exten => s,n,Queue(queue_support,n,,,15,,connect)
ничего вообще не может выполнится, кроме exten => s
Если бы включили дебаг dtmf, то увидели бы сообщения от нажатий кнопок - "нету никакого экстена чтобы перейти на его выполнение".
Читайте азбуку - диал-план Астериска, книга о вкусной и здоровой пище (Будущее телефонии).
P.Ilya писал(а): нужно к концу воспроизведения записи greeting выполнить соединение, желательно до конца приветствия.
Преположим у нас (у вас) BackGround(greeting) длительностью 43 секунды.
Как Астериск должен понять при воспроизведении BackGround(greeting) что дело уже идёт к концу, и пора выполнить соединение? По комментарию #10 секунд в строке? Которое комментируете не точкой с запятой, а # ?
Я бы на месте Астериск застопорился бы наглухо от такого синтаксиса.
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 17:48
P.Ilya
Да я это все знаю, понятно что там 1 а потом n, я же привел только кусок который не работает, диалплан отрабатывает.
Да я и сам могу сделать WAIT(42) а потом вкинуть клиента в очередь, но как сделать что бы управление после BackGround(greeting) сразу вернулось? или после любой другой команды, которая будет играть файл строго до конца, позволяя в фоне что-то сделать?
Можно MOH сделать, но тогда при соединении оно преррвется, если до конца не воспроизвелось.
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 17:51
P.Ilya
Вот ты хочешь клиенту воспроизвести 10 секунд аудио, а в фоне сделать тяжелые операции, пока аудио воспроизводится, как это сделать? Получив результаты, допустим его вкинуть в нужную очередь, или еще что-то
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 17:53
zzuz
Вот это мощь, вот это Игнор.
По полочкам все разложено, но выход автор все равно через окно ищет.
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 18:00
P.Ilya
Чего по полочкам разложено? Да пусть он дальше воспроизводит файл, в чем проблема?
10 секунд аудио для клиента, в фоне что-то вычисляется, аудио заканчивается, диалплан продолжается
как сделать что-то похожее на BackGround, только неблокирующая операция, которая сразу вернет управление в диалплан дальше.
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 18:24
ded
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 18:27
P.Ilya
Ну MOH же у вас внутреннего протеста не вызывает? Он отлично работает. Только вот прервется при ответе.
Как сделать что бы не прервалось, блин
Re: Проигрывание приветствия перед очередью
Добавлено: 07 фев 2020, 18:35
ded
За это
Код: Выделить всё
exten => s,n,System(php status.php BUSY ${CHANNEL:6} &);
exten => s,n,System(php premium.php update ${ACTIONID} ${group_result} &);
уже можно линейкой по пальцем.
Скрипты premium.php надо помещать в /var/lib/asterisk/agi-bin и вызвывать через
exten => s,n,AGI(premium.php
а не
exten => s,n,System
Вы вроде столько лет уже живёте с Астериском, а такие дрова рубите - диву даюсь!
Только не надо тут заявлений, что у вас много других дел.