Channel event logging (события на канале) – система, созданная для детального логирования телефонных событий. Система CEL позволяет пошагово отслеживать сложные сценарии вызовов, последовательно записывая их в таблицу данных. Сегодня расскажем о типах событий CEL и о содержимом таблицы ‘cel’
Как и обычно, подключаемся к базе данных asteriskcdrdb
В таблице выше мы перечислили основные события в рамках системы CEL. Теперь перейдем к описанию таблицы ‘cel’ в рамках базы asteriskcdrdb:
Теперь, давайте рассмотрим как выглядит запись в таблице ‘cel’. Для этого выполним нижеследующий запрос к базе данных asteriskcdrdb:
Как и обычно, подключаемся к базе данных asteriskcdrdb
Смотрим содержимое таблица cel, видим поля и типы данных:[root@asterisk]# mysql // подключаемся к MySQL
mysql> use asteriskcdrdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
К описанию таблицы CEL мы вернемся чуть позже, а сейчас давайте разберем возможные события в рамках системы Channel Event Logging :mysql> show columns from cel;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| eventtype | varchar(30) | NO | | NULL | |
| eventtime | datetime | NO | | NULL | |
| cid_name | varchar(80) | NO | | NULL | |
| cid_num | varchar(80) | NO | | NULL | |
| cid_ani | varchar(80) | NO | | NULL | |
| cid_rdnis | varchar(80) | NO | | NULL | |
| cid_dnid | varchar(80) | NO | | NULL | |
| exten | varchar(80) | NO | | NULL | |
| context | varchar(80) | NO | MUL | NULL | |
| channame | varchar(80) | NO | | NULL | |
| appname | varchar(80) | NO | | NULL | |
| appdata | varchar(80) | NO | | NULL | |
| amaflags | int(11) | NO | | NULL | |
| accountcode | varchar(20) | NO | | NULL | |
| uniqueid | varchar(32) | NO | MUL | NULL | |
| linkedid | varchar(32) | NO | MUL | NULL | |
| peer | varchar(80) | NO | | NULL | |
| userdeftype | varchar(255) | NO | | NULL | |
| extra | varchar(512) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
20 rows in set (0.00 sec)
Событие | Описание |
---|---|
CHAN_START | Канал связи был создан |
CHAN_END | Канал связи был разорван |
LINKEDID_END | Канал связи с указанным ID был разорван |
ANSWER | На созданном канале связи ответили на звонок. При звонке в город, данное событие генерируется когда удаленный (вызываемый абонент) поднимет трубку |
HANGUP | Была повешена трубка. Как правило, это событие сразу же сопровождается событием CHAN_END. Разница в том, что HANGUP происходит когда трубка положена, а CHAN_END, когда Asterisk освободил все ресурсы, занимаемые этим каналом |
APP_START | Определенное приложение было запущено для этого канала. Например, это может быть Dial, Busy или Congestion |
APP_END | Указанное приложение в событие APP_START завершило свое выполнение |
PARK_START | Была произведена «Парковка» вызова. Функция парковки, представляет собой определенный номер, в который помещается вызов, работу с которым, могут продолжить другие сотрудники. |
PARK_END | Вызов был снят с «Парковки» |
BRIDGE_START | Между двумя каналами образовалось соединение (мост). Данное событие сопровождает такие приложения, как Dial() или Queue() |
BRIDGE_END | Мост между каналами был разрушен |
BRIDGE_UPDATE | В соединении между каналами произошло обновление. Это события появляется тогда, например, если изменится имя или прочая канальная информация |
BLINDTRANSFER | Был выполнен «слепой» (без предварительной консультации) трансфер |
ATTENDEDTRANSFER | На канале был выполнен трансфер с предварительной консультацией |
USER_DEFINED | Кастомное событие, которое определяется в приложении CELGenUserEvent() |
В таблице выше мы перечислили основные события в рамках системы CEL. Теперь перейдем к описанию таблицы ‘cel’ в рамках базы asteriskcdrdb:
Столбец | Пример значения | Описание |
---|---|---|
eventtype | CHAN_START | Имя произошедшего события (все события описаны в таблице выше) |
eventtime | 2016-04-01 14:53:54 | Время, в которое произошло указанное выше событие |
cidname | Oleg Ivanov | Имя, передаваемое в рамках CallerID (CID), закрепленное за данным каналом |
cidnum | 84991111111 | Номер, передаваемый в рамках CallerID (CID), закрепленный за данным каналом в рамках соответствующего события |
cidani | 84991111111 | Automatic Number Identification (ANI), или другими словами – автоматическое определение номера на данном канале в рамках соответствующего события |
cidrdnis | 84991111234 | Номер перенаправления на данном канале в рамках соответствующего события |
ciddnid | 84993456458 | Набранный номер на канале в рамках соответствующего события |
exten | 7057 | Добавочный номер, который был набран, в рамках плана нумерации |
context | Local | Контекст для добавочного номера, который был набран |
channame | SIP/0007B3060EB4-00000010 | Имя установленного канала |
appname | Dial | Название приложения, которое было выполнено |
appdata | SIP/0007B3060EB4 | Параметры, которые были переданы в приложении согласно плана нумерации |
amaflags | DOCUMENTATION | Метка Automatic Message Accounting (AMA) – автоматический учет стоимости вызова. |
accountcode | 6473 | Идентификатор аккаунта. Данное значение пустое по умолчанию, и определяется параметрами конкретного пользователя. |
uniqueid | 6547653456.18332 | Уникальный идентификатор для канала |
userfield | Chto ugodno | Пользовательское поле |
linkedid | 6547653456.18332 | Данный идентификатор, позволяет связать воедино звонок по частям. Например, если одна часть звонка была входящей из города, следом был трансфер, потом еще один – у все этих вызовов будет разный uniqueid, но одинаковый linkedid |
peer | SIP/0007B306054F-00000020 | Название канала, к которому, который соединен (bridge) с каналом с идентификатором channame |
Теперь, давайте рассмотрим как выглядит запись в таблице ‘cel’. Для этого выполним нижеследующий запрос к базе данных asteriskcdrdb:
В указанном выше запросе мы извлекли все содержимое таблицы ‘cel’, где поле uniqueid = 1459503113.15. Полученные данные можно обрабатывать и использовать для глубокой аналитикиmysql> SELECT * FROM `cel` WHERE `uniqueid` = '1459503113.15';
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
| id | eventtype | eventtime | cid_name | cid_num | cid_ani | cid_rdnis | cid_dnid | exten | context | channame | appname | appdata | amaflags | accountcode | uniqueid | linkedid | peer | userdeftype | extra |
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
| 2339 | CHAN_START | 2016-04-01 12:31:53 | | | | | | 89641111111 | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2346 | APP_START | 2016-04-01 12:31:53 | 79252222222 | 79252222222 | 79252222222 | | | recordcheck | sub-record-check | Local/89641111111@from-internal-00000004;2 | MixMonitor | 2016/04/01/out-89641111111-79252222222-20160401-123153-1459503113.15.wav,ai(LOCA | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2347 | APP_END | 2016-04-01 12:31:53 | 79252222222 | 79252222222 | 79252222222 | | | recordcheck | sub-record-check | Local/89641111111@from-internal-00000004;2 | MixMonitor | 2016/04/01/out-89641111111-79252222222-20160401-123153-1459503113.15.wav,ai(LOCA | 3 | | 1459503113.15 | 1459503090.11 | | | |
| 2364 | HANGUP | 2016-04-01 12:32:10 | | 79252222222 | 79252222222 | | | h | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | {"dialstatus":"CANCEL","hangupcause":16,"hangupsource":"dialplan/builtin"} |
| 2365 | CHAN_END | 2016-04-01 12:32:10 | | 79252222222 | 79252222222 | | | h | from-internal | Local/89641111111@from-internal-00000004;2 | | | 3 | | 1459503113.15 | 1459503090.11 | | | |
+------+------------+---------------------+-------------+-------------+-------------+-----------+----------+-------------+------------------+--------------------------------------------+------------+----------------------------------------------------------------------------------+----------+-------------+---------------+---------------+------+-------------+----------------------------------------------------------------------------+
5 rows in set (0.00 sec)