Дмитрий Рашевский
20.02.2019
430

Asterisk realtime queue_log

Описание архитектуры Asterisk Realtime Asterisk Realtime – это механизм конфигурации asterisk, который использует внешние хранилища данных. Существует два типа: статический и динамический. Статический — хранит настройки в базе данных. Также обновляет данных при перезагрузке модулей Динамичесикй — создает и обновляет объекты в режиме реального времени. В данной архитектуре могут использоваться разные типы хранилищ: ODBC Mysql […]

Описание архитектуры Asterisk Realtime

Asterisk Realtime – это механизм конфигурации asterisk, который использует внешние хранилища данных. Существует два типа: статический и динамический.

  • Статический — хранит настройки в базе данных. Также обновляет данных при перезагрузке модулей
  • Динамичесикй — создает и обновляет объекты в режиме реального времени.
Эти режимы могут использоваться, как по отдельности, так и совместно.

В данной архитектуре могут использоваться разные типы хранилищ:

  • ODBC
  • Mysql
  • PostgrageSQL
  • SQLite
  • LDAP
  • cURL

В данной статье будет использоваться статический метод, для сохранения событий очереди.

Все настройки проводятся в системе FreePBX 13.0.192.19, Asterisk 13.21.0 Centos 6.9

Конфигурация Realtime Queue_log

Рассмотрим конфигурирование Queue_log Realtime.

Для начала в файл logger_general_custom.conf добавляем параметры

queue_adaptive_realtime=yes 
queue_log_to_file=yes
Если параметр queue_adaptive_realtime выставлен в значение yes, то данные могут записываться в колонку data с pipe (знак «|») в качестве разделителя. Если установлено значение no, то всегда значения будут распределяться по столбцам data1 — data5.
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

Чтобы выйти из режима редактирования в редакторе 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

Иногда встречается запись «MANAGER»

queuename – имя очереди для которой записано событие

agent – имя агент очереди, для которого было данное событие

event – Событие в очереди

data1 – data5 – данные связанные с указанным в поле event

События очереди

В этом разделе рассмотрим события очереди. Формат записа будет следующим

EVENT (data1|data2|data3|data4|data5)
  • ADDMEMBER — Подключение оператора к очереди.
В Freepbx стандартный сервисный код *45<номер очереди>
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 — время ожидания на линии.
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)  – Звонящий покинул очередь, т. к. в очереди не было доступных операторов.
Будет отображаться если опция leavewhenempty указана в конфигурации очереди.
  • 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 – начальная позиция в очереди
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 — позиция абонента на момент входа в очередь
Параметр url может быть пустым. Зависит от того, указывается ли он в диалплане или нет
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        
 
avatar
  Подписаться  
Уведомление о

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

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

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

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

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices