ћы в Telegram - чате. “ы с нами? :)

ћерион Ќетворкс

Channel event logging (событи€ на канале) Ц система, созданна€ дл€ детального логировани€ телефонных событий. —истема CEL позвол€ет пошагово отслеживать сложные сценарии вызовов, последовательно записыва€ их в таблицу данных. —егодн€ расскажем о типах событий CEL и о содержимом таблицы СcelТ

 ак и обычно, подключаемс€ к базе данных asteriskcdrdb:

[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, видим пол€ и типы данных:

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)

  описанию таблицы CEL мы вернемс€ чуть позже, а сейчас давайте разберем возможные событи€ в рамках системы Channel Event Logging :

—обытие ќписание
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:

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)

¬ указанном выше запросе мы извлекли все содержимое таблицы СcelТ, где поле uniqueid = 1459503113.15. ѕолученные данные можно обрабатывать и использовать дл€ глубокой аналитики


ѕолезна ли ¬ам эта стать€?

–аз в неделю мы отправл€ем дайджест с самыми интересными стать€ми.

P.S. ≈сли укажите свою дату рождени€, то мы об€зательно ¬ас поздравим и подарим небольшой подарок :)

Ќажима€ на кнопку "ѕодписатьс€", вы даете согласие на обработку своих персональных данных