img

База Asteriskcdrdb и как с ней работать?

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Как и любая современная АТС, Asterisk имеет свою встроенную систему хранения истории звонков - CDR (Call Detail Record). Она используется для снятия статистики, ведения отчетности, прослушивания вызовов или подсчета биллинговых показателей.

В Asterisk для этого создана база данных asteriskcdrdb, в которой существует таблица cdr. Давайте рассмотрим как пользоваться данной таблицей и ее структуру.

[root@asterisk]# mysql  // подключаемся к MySQL 

После успешного подключения, необходимо выбрать для работы базу данных asteriskcdrdb:

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

Давайте убедимся, что у нас есть таблица cdr. Выполним это, как указано ниже:

mysql> show tables;
+-------------------------+
| Tables_in_asteriskcdrdb |
+-------------------------+
| cdr                     |
| cel                     |
+-------------------------+
2 rows in set (0.00 sec)

На данном этапе мы убедились, что у нас есть база данных asteriskcdrdb, в которой находится таблица cdr. Давайте попробуем посмотреть входящие звонки из города за сегодня (дата написания статьи 18 марта 2016 года), в период с 12:00 до 12:10, т.е за 10 минут:

SELECT  `dst` ,  `src` ,  `duration` ,   `calldate` ,  `recordingfile` 
FROM  `cdr` WHERE `calldate` >= '2016-03-18 12:00:00' AND `calldate` <= '2016-03-18 12:10:00' AND LENGTH(  `src` ) >3;
+-----+-------------+----------+---------------------+----------------------------------------------------------------+
| dst | src         | duration | calldate            | recordingfile                                                  |
+-----+-------------+----------+---------------------+----------------------------------------------------------------+
| 113 | 84991111111 |      140 | 2016-03-18 12:00:36 | external-113-84991111111-20160318-115933-1458291573.157155.wav |
| 104 | 89162222222 |       81 | 2016-03-18 12:01:33 | external-104-89162222222-20160318-120133-1458291693.157169.wav |
+-----+-------------+----------+---------------------+----------------------------------------------------------------+
2 rows in set (0.00 sec)

В вышеуказанном примере, в SQL запросе указано LENGTH( `src` ) >3. Столбец ‘src’ – показывает номер звонящего (source - источник). Это сделано для того, чтобы исключить внутренние звонки, так как у нас используется трехзначная нумерация. Тем самым, мы получаем в результате данные, с которыми затем можем работать. Например, отправить на почту в виде отчета. Ниже рассмотрена структура таблицы cdr в базе данных asteriskcdrdb:

Столбец Пример значения Описание
calldate 2016-03-18 12:00:36 Дата и время звонка
clid "Oleg Ivanov" <84991111111> В данное поле попадает полное CallerID (CLID, CID), которое состоит из имени и номера звонящего. Это доступно только для считывания.
src 84991111111 Номер звонящего в конструкции CallerID (CNUM). Это доступно только для считывания.
dst 113 Номер назначения для звонка. Это доступно только для считывания.
dcontext CustomContext1 Контекст для обработки. Это доступно только для считывания.
channel SIP/0002B2356854-a34bh3ef Канал, через который поступил звонок
dstchannel SIP/0004F6675969-97836bb0 Канал, через который ушел исходящий звонок
lastapp Dial, Busy, Congestion Приложение, которое последним отработало этот вызов перед попаданием в таблицу cdr
lastdata SIP/0004F6675969,30,tT Аргумент, который был передан приложению, которое отработало вызов последним (lastapp)
duration 75 Количество секунд от начала (отметка start) до окончания вызова (отметка end)
billsec 67 Количество секунд от ответа (отметка answer) до окончания вызова (отметка end). Данное значение всегда меньше значения duration, и отражает длительность самого разговора, что важно для подсчета стоимости.
disposition ANSWERED, BUSY, NO ANSWER, FAILED Результат звонка
amaflags OMIT, BILLING, DOCUMENTATION, Unknown Метка Automatic Message Accounting (AMA) – автоматический учет стоимости вызова.
accountcode 23232 Идентификатор аккаунта. Данное значение пустое по умолчанию, и определяется параметрами конкретного пользователя.
uniqueid 1458291693.157169 Уникальный идентификатор звонка
userfield - Пользовательское поле. Здесь можно передавать что угодно, добавляя данные в этот столбец при работе с вызовом внутри контекста обработки.
did 4996491913 DID (Direct Inward Dialing). На основании DID вызова на Asterisk осуществляется его маршрутизация (это значение приходит от провайдера).
recordingfile external-113-84991111111-20160318-115933-1458291573.157155.wav Имя файла, содержащего запись разговора. В данном имени можно проследить путь к файлу в файловой структуре сервера.
cnum 84991111111 Номер звонящего в структуре CallerID.
cnam Oleg Ivanov Имя звонящего в структуре CallerID.

Теперь, когда вы понимаете принцип формирования запросов к базе данных и ее структуру, вы можете без труда формировать собственные отчеты. Например, ежедневный отчет о количестве входящих звонков за текущий день на почту. Это реализуется средствами php скрипта и добавления расписания через cron. Поговорим об этом в следующей статье

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker