Asterisk realtime queue_log
Описание архитектуры Asterisk Realtime Asterisk Realtime – это механизм конфигурации asterisk, который использует внешние хранилища данных. Существует два типа: статический и динамический. Статический — хранит настройки в базе данных. Также обновляет данных при перезагрузке модулей Динамичесикй — создает и обновляет объекты в режиме реального времени. В данной архитектуре могут использоваться разные типы хранилищ: ODBC Mysql […]
Описание архитектуры Asterisk Realtime
Asterisk Realtime – это механизм конфигурации asterisk, который использует внешние хранилища данных. Существует два типа: статический и динамический.
- Статический — хранит настройки в базе данных. Также обновляет данных при перезагрузке модулей
- Динамичесикй — создает и обновляет объекты в режиме реального времени.
В данной архитектуре могут использоваться разные типы хранилищ:
- ODBC
- Mysql
- PostgrageSQL
- SQLite
- LDAP
- cURL
В данной статье будет использоваться статический метод, для сохранения событий очереди.
Конфигурация Realtime Queue_log
Рассмотрим конфигурирование Queue_log Realtime.
Для начала в файл logger_general_custom.conf добавляем параметры
queue_adaptive_realtime=yes
queue_log_to_file=yes
Time | Callid | Queuename | Agent | Event | Data | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:26:07 | 1548743166.48 | 200 | NONE | ENTERQUEUE | |102|1| |
Необходимо создать файл /etc/asterisk/extconfig.conf и добавить несколько параметров
Создадим файл
vim /etc/asterisk/extconfig.conf
Внесем изменения, предварительно нажав клавишу «i»
[settings] queue_log => odbc,asteriskcdrdb
Чтобы выйти из режима редактирования в редакторе vim используется клавиша «Esc» Сохраним конфигурацию и закроем файл комбинацией Shift+ZZ или :wq+Enter
Рассмотрим подробнее данные значения
queue_log — имя таблицы куда будут заноситься данные
odbc — коннектор, через который астериск будет связан БД
asteriskcdrdb — db конфиг в /etc/asterisk/res_odbc_additional.conf
Теперь создадим таблицу queue_log в базе данных asteriskcdrdb
CREATE TABLE IF NOT EXISTS `queue_log` (
`time` varchar(32) DEFAULT NULL,
`callid` char(64) DEFAULT NULL,
`queuename` char(64) DEFAULT NULL,
`agent` char(64) DEFAULT NULL,
`event` char(32) DEFAULT NULL,
`data1` char(64) DEFAULT NULL,
`data2` char(64) DEFAULT NULL,
`data3` char(64) DEFAULT NULL,
`data4` char(64) DEFAULT NULL,
`data5` char(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Рассмотрим каждое поле:
time – время и дата звонка на очередь.
сallid — имеет значения «MANAGER», «NONE» и значение uniqueid
queuename – имя очереди для которой записано событие
agent – имя агент очереди, для которого было данное событие
event – Событие в очереди
data1 – data5 – данные связанные с указанным в поле event
События очереди
В этом разделе рассмотрим события очереди. Формат записа будет следующим
EVENT (data1|data2|data3|data4|data5)
- ADDMEMBER — Подключение оператора к очереди.
Time | Callid | Queuename | Agent | Event | Data | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 08:29:13 | 1548739752.8 | 200 | Local/102@from-queue/n | ADDMEMBER | ||||||
2019-01-29 08:29:13 | MANAGER | 200 | 102 |
- REMOVEMEMBER — Выход агента из очереди.
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 08:33:55 | 1548740034.9 | 200 | Local/102@from-queue/n | REMOVEMEMBER | |||||
2019-01-29 08:33:55 | MANAGER | 200 | 102 |
- RINGNOANSWER (Agent Timeout) — оператор
не ответил на звонок при поступившем вызове.
- Agent Timeout — время ожидания на линии.
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 08:33:55 | 1548740554.10 | 200 | 103 | RINGNOANSWER | Agent Timeout (2000) |
- EXITEMPTY (position|origposition|waittime) — Звонящий покинул очередь, т. к. в очереди не было доступных операторов.
- Position – указывается,
с какой позиции вышел звонящий
- Origposition – указывается позиция, которая была изначальная при вступлении в очередь
- Waittime – сколько звонящий прождал, пока уме не ответили.
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 10:59:18 | 1548748758.66 | 200 | NONE | EXITEMPTY | 1 (Position) | 1 (Origposition) | 0 (Waittime) |
- ATTENDEDTRANSFER (method|uuid|holdtime|calltime|origposition) — вызов был переведен с
оповещением.
- Method – указывается
метод соединения
- BRIDGE
- APP
- LINK
- Method-uuid – уникальный идентификатор метода канала
- Holdtime – время ожидания в очереди
- Calltime – время звонка
- Origposition – начальная позиция в очереди
- Method – указывается
метод соединения
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 10:54:37 | 1548740554.19 | 200 | 103 | ATTENDEDTRANSFER | BRIDGE (method) | 3bc25658-13ed-3a2c-3612-d1a043b332ab (Method-uuid) | 154 (Holdtime) | 32 (Calltime) | 2 (Origposition) |
- BLINDTRANSFER (extension|context|holdtime|calltime|origposition)
— вызов был переведен без
оповещения на другой экстеншн.
- Extension – внутренний номер, на который произошел перевод
- Context – контекст переводящего экстеншена
- Holdtime – время ожидания в очереди
- Calltime – время звонка
- Origposition – начальная позиция в очереди
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 10:56:03 | 1548740554.10 | 200 | 103 | BLINDTRANSFER | 105 | from-internal | 9 | 3 | 1 |
- AGENTDUMP — оператор отклонил входящий вызов
- ABANDON (position|origposition|waittime)
— звонящий положил трубку, т. к. не дождался ответа
- Position — финальная позиция в очереди
- Origposition — первоначальная позиция в очереди
- Waittime — время ожидания на линии
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-30 11:42:11 | 1548740556.10 | 200 | 103 | ABANDON | 1 | 1 | 12 |
- SYSCOMPAT — оператор ответил на звонок, но соединение было разорвано из-за несовместимости каналов.
- CONNECT (holdtime|bridgedchanneluniqueid|ringtime)
—оператор ответил на звонок и разговаривает с абонентом
- holdtime – время ожидания абонента
- bridgedchanneluniqueid — содержит uniqueid канала оператора, который ответил на звонок
- ringtime – время поднятия трубки оператором
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-30 11:42:11 | 1548740556.10 | 200 | 103 | CONNECT | 9 | 1548742691.38 | 3 |
- COMPLETECALLER (holdtime|calltime|origposition)
—вызов был отвечен. Абонент первым завершил звонок.
- Holdtime – время ожидания в очереди
- Calltime – указывает время разговора
- Origposition – первоначальная позиция при попадании в очереди
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:22:27 | 1548742921.41 | 200 | 103 | COMPLETECALLER | 2 | 24 | 1 |
- COMPLETEAGENT
(holdtime|calltime|origposition) — вызов был отвечен. Оператор первым
положил трубку.
- holdtime – время ожидания абонента
- calltime — указывает время разговора
- ringtime – время поднятия трубки агентом
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 10:01:11 | 1548745267.59 | 200 | 103 | COMPLETEAGENT | 2 | 2 | 1 |
- PAUSE — указывается пауза в очереди
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 10:01:11 | NONE | 200 | 103 | PAUSE |
- UNPAUSE — снятие с паузы оператором
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:18:04 | NONE | 200 | 103 | UNPAUSE |
- ENTERQUEUE (url|callerid) —вызов
поступил в очередь.
- Url
- Callerid – указывается имя абонента.
- Enterposition — позиция абонента на момент входа в очередь
exten => s,n,QueueLog(200,${UNIQUEID},${AGENT},ENTERQUEUE,,${CALLERID(name)})
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-30 14:37:49 | 1548848268.0 | 200 | 103 | ENTERQUEUE | 84959898533 | 1 |
- EXITWITHTIMEOUT (position|origposition|waittime)
— вызов покинул очередь по
истечению времени
- Position — финальная позиция в очереди
- Origposition — первоначальная позиция в очереди
- Waittime — время ожидания на линии
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:07:43 | 1548742057.30 | 200 | NONE | EXITWITHTIMEOUT | 1 | 1 | 5 |
- EXITWITHKEY
(key|position|origposition|waittime)- была нажата кнопка для выхода из
очереди
- Key – кнопка, которую нажал звонящий
- Position — финальная позиция в очереди
- Origposition — первоначальная позиция в очереди
- Waittime — время ожидания на линии
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:06:36 | 1548741984.29 | 200 | NONE | EXITWITHKEY | 3 | 1 | 1 | 12 |
- CONFIGRELOAD — применение настроек очереди. (asterisk -rx ‘queue reload’)
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 09:02:47 | NONE | NONE | NONE | CONFIGRELOAD |
- DID (did number) – номер на который пришел вызов
Time | Callid | Queuename | Agent | Event | Data1 | Data2 | Data3 | Data4 | Data5 |
2019-01-29 11:01:14 | 1548748874.0 | 200 | NONE | DID | 74959898533 |
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.