Asterisk Автообзвон - Autodialer
Примеры реализации автодайлер (autodialer) на Asterisk.
Роботизированный исходящий колл-центр
- Запуск нескольких кампаний одновременно.
- Ограничение одновременных вызовов.
- Предиктивный набор для Колл Центра.
- Обзвон по базе данных.
- Экпорт/Импорт csv.
- Запуск по расписанию.
- Ограничение временных диапазонов работы кампании, для защиты от неурочных звонков.
- Запись разговоров и поиск вызовов по базе обзвона.
- Управление через веб интерфейс или через API.
Автообзвон при помощи Call Files
Реализация автоматического обзвона абонентов (автодозвона) при помощи Asterisk и call файлов.
Bash скрипт генерирует 'Call File' на основании списка номеров из текстового файла и
копирует в директорию /var/spool/asterisk/outgoing.
Asterisk вызывает номер на основании информации из 'call file' и отправляет на обработку в заданный контекст или приложение плана набора.
Все очень просто и эффективно.
Синтаксис Call File:
Логика 'Call File' такая же, как и команды originate.
Сначала инициируется 'Channel', если заданный в данном параметре номер отвечает,
вызывается 'Extension' или 'Application' и соединяются с 'Channel'.
Если 'Channel' не отвечает в течении 'WaitTime', а параметр 'MaxRetries' больше нуля,
предпринимается заданное кол-во попыток 'MaxRetries' с интервалом 'RetryTime'.
Параметры канала
- Channel: <channel>: инициируемый канал (например Local/${number}/from-autodial )
- CallerID: «name» <number> Caller ID, требуемый формат: CallerID: «Имя» <1234>
- MaxRetries: <number> Кол-во попыток набора на каждый номер в списке (По умолчанию 0. Если установлено '0', будет совершена одна попытка, если '1' то две)
- RetryTime: <number> Время в секундах между попытками. (Seconds between retries, Don't hammer an unavailable phone. По умолчанию 300 (5 min).)
- WaitTime: <number> Время посылки вызова. (По умолчанию 45.)
- Account: Аккаунт для вызова.
Параметры расширения:
- Context: <context-name> Контекст для приема вызова, когда абонент ответил (extensions.conf)
- Extension: <ext> Extension (расширение например:exten⇒ s,…) в контексте (extensions.conf)
- Priority: <priority> Приоритет в контексте.
- Set: Установить переменную канала для вызова (example: file1=/tmp/to );
- Application: Приложение Asterisk (используется вместо context, extension, priority)
- Data: Данные приложения (например: PlayBack(data))
- AlwaysDelete: Yes/No - Удалять файлы по завершении.
- Archive: Yes/No - Перемещать выполненные файлы в директорию outgoing_done с указанием статуса с которым завершилось задание «Status: value», где возможны значения
- Completed - Успешно.
- Expired - Просрочено.
- Failed - Неудачно.
Expired или Failed отличаются по статусу вызова. Если вызов удался, но на него не ответили в заданное время вызова и кол-во попыток, то Expired. Если вызов не удалось инициировать вообще, то Failed.
Autodial: пример 1
Вызываются номера по списку и проигрывается сообщение из контекста [outboundmsg1].
dialplan
bash script
Примечания к скрипту:
- Channel: SIP/voip_trunk/$number - voip_trunk транк через который совершаются вызовы.
- if [ «$count_f» -eq «30» ]; then - 30 кол-во одновременных вызовов. (фактически это кол-во файлов создаваемых скриптом за один раз, следующие по списку файлы, будут созданы, только по завершению обработки первой группы)
/var/spool/asterisk/list.txt - список обзвона, каждый номер в новой строке.
101 102
Tips&Tricks
Если установить параметры файла atime и mtime (access time и modifity time соответственно) в будущем, файл помещенный в директорию outgoing будет выполнен только по наступлении заданного времени.