Тема уже ни раз поднималась на форумах.
За основу хочу взят сообщение "CallBack по освобождению очереди в Elastix" - https://forum.asterisk.ru/viewtopic.php?f=5&t=4663
Хочется примерно сделать:
1. Абонент попадает в IVR где сразу может набрать набрать номер для колбека
2. Если не набирает, попадает в очереди, где также может набрать экстеншин для вызова колбека.
Так были вопросы:
Код: Выделить всё
1. Можно как нить сделать так, чтобы коллбек отрабатывал тогда, когда очередь опустеет и появится свободный абонент?
Код: Выделить всё
2. Можно подредактировать коллбек так, чтобы он сначала набирал внутреннего абонента, а при ответе оного уже набирал клеента?
В той теме уважаемый zzuz писал, что требуется для решения задачи:
1. Нужно написать скрипт , который будет в асинхронном режиме делать Originate на нужные контексты диаплана.
2.Первый контекст это ожидание в очереди .
3.Второй контекст - ожидание ответа оператором очереди на звонок. Тут используется цикл While() с нужной проверкой ответа.
4.В настройках команды Dial для внутренних звонков нужно выставить параметр U(sub-ext-answer) (sub-ext-answer контекст обработки ответа) , который будет проверять наличие канала звонка в очередь (потому как для всех отвеченных вызовов будет отрабатывать) . В этом же контексте нужно импортировать переменные из нужного канала , так как нужно не забывать , что каналы запущены отдельно.
5. Далее добавляем файлы с важной речью для операторов , о том что сейчас будет исходящий вызов. Также перед исходящем вызове не забываем поправить номер , так как он может определяться по разному в зависимости от провайдера.
В итоге имеем:
-скрипт с originate
-контекст для вхождения в очередь и ожидания ответа на звонок в очередь
-контекст проверки ответа на звонок оператором
-контекст проверки CID(num) звонящего и его правки
Код: Выделить всё
-скрипт с originate
Код: Выделить всё
#!/bin/sh
#
#run - user@host:$ ./call.sh | telnet
#
operator=$1
callee=$2
echo "open 127.0.0.1 5038"
sleep 2
echo "Action: Login"
echo "Username: c2"
echo "Secret: c222"
echo
sleep 2
echo "Action: Originate"
echo "Channel: $1" #внутрений телефон
echo "Context: city-calls" #Dial Patterns, который создается вместе с Outbound Routes, находится в extensions_additional.conf
echo "Exten: $2" #с кем мы собственно соединяем
echo "Priority: 1"
echo "Callerid: $1"
echo "Async: true"
echo
echo
sleep 10
Код: Выделить всё
-контекст для вхождения в очередь и ожидания ответа на звонок в очередь
Cвободный оператор должен попадать в очередь и ждать соединения с клиентом?
Код: Выделить всё
Второй контекст - ожидание ответа оператором очереди на звонок. Тут используется цикл While() с нужной проверкой ответа.
Код: Выделить всё
В настройках команды Dial для внутренних звонков нужно выставить параметр U(sub-ext-answer) (sub-ext-answer контекст обработки ответа) , который будет проверять наличие канала звонка в очередь
Код: Выделить всё
exten => 800,2,Dial(SIP/800,120,TtU(sub-ext-answer))
Хочу сделать callback: