# Установка и настройка CEL

### Настройка CEL в Linux

Перед конфигурацией ODBC в Asterisk необходимо установить необходимые пакеты в систему:

`apt-get install unixODBC unixODBC-dev libmyodbc`

В случае если у вас Ubuntu и в репозиториях нет коннектора, необходимо скачать актуальную версию [с сайта](https://dev.mysql.com/downloads/connector/odbc/) и установить ее:

`$ tar xvf ./mysql-connector-odbc*.tar.gz`\
`$ cp ./lib/libmyodbc5a.so /usr/lib/x86_64-linux-gnu/odbc/libmyodbc5a.so`

Конфигурация для MySQL ODBC драйвера выполняется в файле /etc/odbcinst.ini

Пример конфигурации:

`[MySQL]`\
`Description = ODBC for MySQ`\
`Driver = /usr/lib/odbc/libmyodbc.so`\
`Setup = /usr/lib/odbc/libodbcmyS.so`\
`FileUsage = 1`

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

`:~# updatedb`\
`:~# locate libmyodbc.so`\
`:~# locate libodbcmyS.so`

Последние две команды покажут на экране местонахождение библиотек. Пропишем соответствующий путь, например: /usr/lib/i386-linux-gnu/odbc/libmyodbc.so

Следующим шагом будет конфигурация файла /etc/odbc.ini для создания идентификатора, который Asterisk будет использовать для ссылки на эту конфигурацию. Если в будущем решите сменить БД, то следует переконфигурировать это файл.

Вот пример конфигурации:

`[asterisk-connector]`\
`Description = MySQL connection to 'asterisk' database`\
`Driver = MySQL`\
`Database = asterisk`\
`Server = localhost`\
`UserName = user`\
`Password = 123456`\
`Port = 3306`

Теперь сконфигурируем Asterisk для работы с БД через ODBC, для этого служит файл: /etc/asterisk/res\_odbc.conf .

Пример конфигурации данного файла:

`[asterisk]`\
`enabled => yes`\
`dsn => asterisk-connector`\
`username => asterisk`\
`password => 123456`\
`pooling => no`\
`pre-connect => yes`

Опция dsn указывает соединение, которое сконфигурировано в /etc/odbc.ini, а опция pre-connect говорит Asterisk’у поднимать соединение с базой, когда загружается модуль res\_odbc.so .

{% hint style="info" %}
Важное замечание: Asterisk должен быть собран с поддержкой ODBC! Для проверки можно выполнить из CLI команду odbc show.
{% endhint %}

И теперь самое главное – приступаем к конфигурации CEL. Откроем конфигурационный файл /etc/asterisk/cel.conf и внесем в него следующие изменения:

`[general]`\
`enable=yes`\
`apps=all`\
`events=all`\
`dateformat = %F %T`

apps – данная опция указывает, какие приложения следует отслеживать.

events – с помощью этой опции указываем, какие события (из таблицы выше) следует заносить в БД.

Далее необходимо отредактировать файл /etc/asterisk/cel\_custom.conf – в нем раскомментируем секцию \[mappings].

И последний файл, который следует отредактировать – /etc/asterisk/cel\_odbc.conf. Внесем в него следующие изменения:

`[first]`\
`connection=asterisk`\
`table=cel`\
`loguniqueid=yes`

Опция connection задает имя коннектора из файла res\_odbc.conf, а опция table указывает имя таблицы БД для сохранения данных.

Завершающим шагом настройки является создание БД и таблицы.

```
$ mysql –uroot –p
mysql> CREATE DATABASE asterisk;
mysql> use asterisk;
mysql> CREATE TABLE IF NOT EXISTS `cel` (
`id` int(11) auto_increment,
`eventtype` varchar(30),
`eventtime` datetime,
`cid_name` varchar(80) DEFAULT '',
`cid_num` varchar(80) DEFAULT '',
`cid_ani` varchar(80) DEFAULT '',
`cid_rdnis` varchar(80) DEFAULT '',
`cid_dnid` varchar(80) DEFAULT '',
`exten` varchar(80) DEFAULT '',
`context` varchar(80) DEFAULT '',
`channame` varchar(80)  NULL DEFAULT NULL,
`src` varchar(80)  NULL DEFAULT NULL,
`dst` varchar(80)  NULL DEFAULT NULL,
`channel` varchar(80),
`dstchannel` varchar(80)  NULL DEFAULT NULL,
`appname` varchar(80)  NULL DEFAULT NULL,
`appdata` varchar(80)  NULL DEFAULT NULL,
`amaflags` int(11)  NULL DEFAULT NULL,
`accountcode` varchar(20) NULL DEFAULT NULL,
`uniqueid` varchar(32),
`linkedid` varchar(32),
`peer` varchar(80) NULL DEFAULT NULL,
`userdeftype` varchar(255) NULL DEFAULT NULL,
`eventextra` varchar(255) NULL DEFAULT NULL,
`userfield` varchar(255) NULL DEFAULT NULL,
`extra` varchar(512) NOT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `uniqueid_index` (`uniqueid`),
KEY `linkedid_index` (`linkedid`)
);
```

Перезапустим Asterisk.

`# service asterisk restart`

Проверка работы осуществляется с помощью команд из CLI Asterisk:

`> cel show status`\
`> odbc show`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/for-admins/ustanovka-i-nastroika-cel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
