Владимир Кортель
24.02.2021
78739

Настройка CallBack при помощи Call File. Отложенный CallBack

Функция обратного звонка помогает разгружать Call-центры и позволяет принимать заявки на звонки даже в нерабочее время. В этой статье рассмотрим и настроем прием обратного звонка в рабочее время, когда все участники группы вызова заняты, а также регистрацию звонка в нерабочее. Задачи следующие: 1. Создавать возможность для клиента оставить CallBack в рабочее время для очереди при […]

Функция обратного звонка помогает разгружать Call-центры и позволяет принимать заявки на звонки даже в нерабочее время. В этой статье рассмотрим и настроем прием обратного звонка в рабочее время, когда все участники группы вызова заняты, а также регистрацию звонка в нерабочее.

Задачи следующие:

1. Создавать возможность для клиента оставить CallBack в рабочее время для очереди при длительном ожидании, а также реализовать голосовое оповещение.

2. Сделать возможность для клиентов оставлять заявку на звонок в нерабочее время и автоматического перезвона им в рабочее время.

К данной статье не предусмотрены готовые звуковые оповещения. Все скрипты размещаем по пути var/lib/asterisk/agi-bin.

Создание CallBack для рабочего времени:

Для начала создадим скрипт для создания callfile callback.sh

Код sh-скрипта для дневного времени:

#!/bin/sh

#Получаем номер из звонка
number=$1
callfile=/usr/src/callback/$number.call
rm -rf $callfile

#Создаем call-file
echo "Channel: Local/601@ext-queues
CallerID: $number
MaxRetries: 5
RetryTime: 300
WaitTime: 600
Context: callback
Extension: $number
Priority: 1" > $callfile

#перемещаем созданный call file в нужную директорию
chown asterisk. $callfile
mv $callfile /var/spool/asterisk/outgoing/

Кратко о строках:

Channel: <channel> — Какой канал использовать для звонка.
CallerID: <CallerID> — Установить Caller ID для звонка
MaxRetries: <number> — Количество попыток дозвона, где 0 соответствует одной попытке.
RetryTime: <number> — Время в секундах между попытками дозвона. Стандартно 300 сек.
WaitTime: <number> — Сколько секунд ожидаем поднятия трубки. Стандартно 45 сек.
Context: <context-name> — Имя используемого контекста (позже укажем его в extensions.conf).
Extension: <extensions> — Какой экстеншн используем в выбранном контексте (также в extensions.conf).
Priority: <priority> — С какого приоритета начинаем.

Сохраняем, обязательно даем права на выполнения # chmod 777 callback.sh

в extensions_custom.conf

[callback-to-to]

exten => s,1,System(/var/lib/asterisk/agi-bin/callback.sh ${CALLERID(num)})
same => n,Playback(custom/spasibo_s_vami_svyazhetsya_pervy_osvobodivshyisya_operator)same => n,Hangup()


[callback]

exten => _X.,1,NoOp(CallBack)
same => n,Wait(1)
same => n,Playback(ru/custom/client_prosil_perezvonit)
same => n,Dial(SIP/${EXTEN}@транк-через-который-звонить,220,r)
same => n,Hangup

Остальные настройки для этого CallBack проводим уже в Web. Для начала нам необходимо как-то направить из очереди на наш ранее созданный кастом. Для этого будет использоваться Custom Destinations

Демонстрация настройки Custom Destinations
Настройка Custom Destinations

Заполняем по аналогии и переходим в нашу очередь операторов во вкладку Caller Announcements, нас интересует Periodic Announcements.

Основная очередь вызова
Настройка основной очереди вызова

Выставляем необходимую периодичность звонка и создаем/указываем IVR

Пример настройки IVR для CallBack
Настройка IVR для CallBack

Указываем запись где сообщаем, что все заняты

Пример настройки IVR для CallBack
Настройка IVR для CallBack

и предлагаем нажать «#» если человек не желает больше ожидать звонка в общей очереди. Сохраняем и применяем настройки, после чего создаем специально отдельную очередь для обратных звонков. Это нужно сделать по двум причинам:

Настройка очереди вызова для CallBack. Queue No Answer
Настройка очереди вызова для CallBack. Queue No Answer

1. Queue No Answer – Yes – Чтоб вызов не уходил в сторону клиента до того, пока кто-то из операторов не возьмет звонок

Настройка очереди вызова для CallBack. Queue Weight
Настройка очереди вызова для CallBack. Queue Weight

2. Queue Weight – 10 – Пониженный приоритет для обратных звонков. У нас в приоритете те, кто ожидает своей очереди здесь и сейчас.

Остальные настройки уже не так важны. На этом с дневными CallBack мы закончили и переходим к ночным.

Отложенный CallBack для ночного времени:

Код sh-скрипта для ночного времени:

#!/bin/sh

#Получаем номер из звонка
number=$1
callfile=/usr/src/callback/$number.call
rm -Rf $callfile

#Создаем call-file
echo "Channel: Local/605@ext-queues
CallerID: $number
MaxRetries: 5
RetryTime: 300
WaitTime: 600
Context: callback
Extension: $number
Priority: 1" > $callfile

#перемещаем созданный call file в нужную директорию
chown asterisk. $callfile

Опять же не забываем давать разрешение на выполнение.

в extensions_custom.conf добавляем следующее

[callback-to-to-night]

exten => s,1,System(/var/lib/asterisk/agi-bin/callback_night.sh ${CALLERID(num)})
same => n,Playback(custom/My_svyazhemsya_s_vami_v_rabocheye_vremya)
same => n,Hangup()

Для организации звонков в рабочее время будем использовать crontab. Набираем # crontab –e

Нам необходимо чтоб обратный звонок начинался ежедневно в 10:05 и конструкция будет иметь следующий вид:

5 10 * * * /usr/bin/mv /usr/src/callback/*.call /var/spool/asterisk/outgoing/

Сохраняем. Как вы могли заметить, в скрипте мы используем уже другую очередь.  Создаем по аналогии с очередью 601 очередь 605 после чего разруливаем в нерабочее время, например, через Time Conditions

Пример настройки через Time Conditions
Настройка Time Conditions

И конечно направляем на ночную IVR

Настройка IVR для нерабочего времени 1
Настройка IVR для нерабочего времени

Где после оповещения предлагаем что-то нажать, чтоб оставить заявку на обратный звонок

Настройка IVR для нерабочего времени 2
Настройка IVR для нерабочего времени

И направляем через Custom Destinations на callback-to-to-night

На этом работы выполнены. Теперь, после заказа обратного звонка сгенерируется вызов и после клиент услышит оповещение: “Вам перезвонит первый освободившийся оператор” после чего вызов будет направлен на очередь с пониженным приоритетом где будет дожидаться ответа.

С “ночным” звонком все несколько интереснее. Да, он так же формируется, но в отличии от дневного звонка не сразу попадает в /var/spool/asterisk/outgoing/ а создает в отдельной созданной для этого папке. После чего через команду в crontab уже выполняет перенос в 10:05, что инициализирует вызов.

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

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

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

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

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.