Настройка параметров подключения к БД

Реконфигурация пакета ecss-cc-ui

Настройки подключения

sudo dpkg-reconfigure ecss-cc-ui

Вопросы, относящиеся к подключению к базе, на которые нужно будет ответить:

Вопрос
Шаблон вопроса:ecss-cc-ui/mysql-host
Тип данных:string
Значение по умолчанию:localhost
Текст вопроса(en)IP address(hostname) of address book mysql:
Текст вопроса(ru)IP-адрес(хост) на котором развернут mysql адресной книги:
ОписаниеНеобходимо ввести IP-адрес mysql-сервера, где расположена БД адресной книги.
Вопрос
Шаблон вопроса:ecss-cc-ui/mysql-port
Тип данных:string
Значение по умолчанию:3306
Текст вопроса(en)Port of address book mysql:
Текст вопроса(ru)Порт на котором развернут mysql адресной книги:
ОписаниеНеобходимо ввести порт сервера mysql, где расположена БД адресной книги.
Вопрос
Шаблон вопроса:ecss-cc-ui/mysql-user
Тип данных:string
Значение по умолчанию:address_book
Текст вопроса(en)Address book mysql username:
Текст вопроса(ru)Имя пользователя для доступа к mysql адресной книги:
ОписаниеНеобходимо ввести имя пользователя для доступа к БД адресной книги.
Вопрос
Шаблон вопроса:ecss-cc-ui/mysql-password
Тип данных:password
Значение по умолчанию:address_book
Текст вопроса(en)Address book mysql password:
Текст вопроса(ru)Пароль для доступа к mysql адресной книги:
ОписаниеНеобходимо ввести пароль для доступа к БД адресной книги.

Настройка через конфигурационный файла config.yaml

Для настройки справочника требуется отредактировать файл config.yaml, находящийся в директории /etc/ecss/ecss-cc-ui-api.

Требуется настроить следующие поля в области sql:

  • host — доменное имя или ip-адрес ECSS-10
  • port — порт подключения к mysql
  • database — название базы данных, в которой хранятся данные для справочника
  • user — логин для входа в mysql
  • password — пароль для входа в mysql

После внесения изменения в файл требуется перезагрузить сервис ecss-cc-ui:

sudo systemctl restart ecss-cc-ui-api.service

Структура БД адресной книги

Подключение к базе:

$ mysql -uaddress_book -p -D ecss_address_book;
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 551730
Server version: 5.7.38-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
SQL

База address_book содержит следующие таблицы:

mysql> show tables;
+-----------------------------+
| Tables_in_ecss_address_book |
+-----------------------------+
| changes                     |
| contact                     |
| email                       |
| external                    |
| label                       |
| phone                       |
| source                      |
| version                     |
+-----------------------------+
8 rows in set (0.00 sec)
SQL

где:

  • changes — дата/время последних изменений в таблицах(служебная);

  • contact — контактные данные(отображаемое имя, ФИО, место работы и пр);

  • email — электронная почта контакта;

  • external — таблица для связи с внешней БД (опционально);

  • label — таблица меток для группировки(например "work", "home", "mobile" и др.);

  • phone — номера телефонов;

  • source — источники данных(например, "ds", "file", "local" и др);

  • version — служебная таблица.

Список полей любой из таблиц можно посмотреть командой describe <имя таблицы>, например:

mysql> describe contact;
+--------------+---------------+------+-----+---------+----------------+
| Field        | Type          | Null | Key | Default | Extra          |
+--------------+---------------+------+-----+---------+----------------+
| id           | int(11)       | NO   | PRI | NULL    | auto_increment |
| uuid         | varchar(16)   | NO   | MUL |         |                |
| source_id    | int(11)       | NO   | MUL | NULL    |                |
| contact_name | varchar(255)  | YES  |     | NULL    |                |
| first_name   | varchar(255)  | YES  |     | NULL    |                |
| middle_name  | varchar(255)  | YES  |     | NULL    |                |
| last_name    | varchar(255)  | YES  |     | NULL    |                |
| company      | varchar(255)  | YES  |     | NULL    |                |
| position     | varchar(255)  | YES  |     | NULL    |                |
| description  | varchar(255)  | YES  |     | NULL    |                |
| photo        | varchar(2083) | YES  |     | NULL    |                |
+--------------+---------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)

SQL

Пример внесения записи в базу адресной книги

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

Сначала через cocon нужно задать имя справочника для трансфера в server_data:

$ domain/dom1/cc/properties/set server_data ecss-cc-ui transfer_phone_book region
# ecss-cc-ui - Application name для КЦ
# transfer_phone_book - Property, для справочника это ключевое слово
# region - Value, тут можно указать любое значение
CODE

Затем подключиться к mysql (mysql -u root -p)

Смотрим какие есть базы:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ecss_address_book  |
| ecss_audit         |
| ecss_call_trace    |
| ecss_calls_db      |
| ecss_dialer_db     |
| ecss_meeting_db    |
| ecss_numbers_db    |
| ecss_statistics    |
| ecss_subscribers   |
| ecss_system        |
| history_db         |
| mysql              |
| performance_schema |
| sys                |
| web_conf           |
+--------------------+
16 rows in set (0.05 sec)
SQL

Выбрать для использования базу ecss_address_book:

mysql> use ecss_address_book;
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
SQL

Смотрим, какие есть таблицы:

mysql> show tables;
+-----------------------------+
| Tables_in_ecss_address_book |
+-----------------------------+
| changes                     |
| contact                     |
| email                       |
| external                    |
| label                       |
| phone                       |
| source                      |
| version                     |
+-----------------------------+
8 rows in set (0.00 sec)
SQL

Смотрим какие есть source, нужно будет добавить свой новый уникальный источник:

mysql> select * from source;
+-----+-------------------------+------+---------------------+---------+
| id  | name                    | type | description         | domain  |
+-----+-------------------------+------+---------------------+---------+
|   1 | ds                      | ds   | ECSS-10 local users | dom1    |
|  21 | teleconference          | file | NULL                | dom1    |
| 154 | ds                      | ds   | ECSS-10 local users | pbx_dom |
+-----+-------------------------+------+---------------------+---------+
6 rows in set (0.00 sec)
SQL

Добавим новый source с именем region, типа file, для домена dom1:

mysql> insert into source (name, type, description, domain) values ('region', 'file', 'Phone book for transfer', 'dom1');
Query OK, 1 row affected (0.00 sec)

mysql> select * from source;
+-----+-------------------------+------+-------------------------+---------+
| id  | name                    | type | description             | domain  |
+-----+-------------------------+------+-------------------------+---------+
|   1 | ds                      | ds   | ECSS-10 local users     | dom1    |
|  21 | teleconference          | file | NULL                    | dom1    |
| 154 | ds                      | ds   | ECSS-10 local users     | pbx_dom |
| 221 | region                  | file | Phone book for transfer | dom1    |
+-----+-------------------------+------+-------------------------+---------+
7 rows in set (0.00 sec)
SQL

Теперь нужно добавить в таблицу contact несколько записей, используя sourceId = 221 (id будет отличаться от 221, нужно посмотреть какое значение было присвоено в предыдущем пункте):

mysql> insert into contact (source_id, contact_name) values ('221', 'Иванов Иван Иванович');
Query OK, 1 row affected (0.00 sec)

mysql> insert into contact (source_id, first_name, middle_name, last_name) values ('221', 'Пётр', 'Петрович', 'Петров');
Query OK, 1 row affected (0.00 sec)

mysql> insert into contact (source_id, description) values ('221', 'Василий Васильевич Васильев');
Query OK, 1 row affected (0.00 sec)

mysql> select * from contact where source_id='221';
+------+------+-----------+----------------------+------------+-------------+-----------+---------+----------+-----------------------------+-------+
| id   | uuid | source_id | contact_name         | first_name | middle_name | last_name | company | position | description                 | photo |
+------+------+-----------+----------------------+------------+-------------+-----------+---------+----------+-----------------------------+-------+
| 1518 | u5EE |       221 | Иванов Иван Иванович | NULL       | NULL        | NULL      | NULL    | NULL     | NULL                        | NULL  |
| 1519 | u5EF |       221 | NULL                 | Пётр       | Петрович    | Петров    | NULL    | NULL     | NULL                        | NULL  |
| 1520 | u5F0 |       221 | NULL                 | NULL       | NULL        | NULL      | NULL    | NULL     | Василий Васильевич Васильев | NULL  |
| 1521 | u5F1 |       221 | Илья Ильич Илюшин    | NULL       | NULL        | NULL      | NULL    | NULL     | NULL                        | NULL  |
+------+------+-----------+----------------------+------------+-------------+-----------+---------+----------+-----------------------------+-------+
3 rows in set (0.00 sec)
SQL

Можно определить contact_name, поле имеет наивысший приоритет и будет отображено только оно если определено.

Можно определить first_name, middle_name, last_name, эта тройка имеет меньший приоритет, и будет отображено, если хотя бы одно из трех полей определено.

Можно определить description, поле имеет наименьший приоритет, и будет отображено, если другие поля не определены.

Добавьте новую запись в таблицу label, так как для phone label_id обязательное поле:

mysql> insert into label (name, description) values ('queue', 'Внешние номера очередей в регионе');
Query OK, 1 row affected (0.00 sec)

mysql> select * from label;
+----+-------------------------------+----------------------------------------------------------------+
| id | name                          | description                                                    |
+----+-------------------------------+----------------------------------------------------------------+
| 20 | work                          | Voluptate voluptatem qui in.                                   |
| 21 | home                          | Et sed sed debitis veniam vel.                                 |
| .. | ...                           | ......                                                         |
| 31 | queue                         | Внешние номера очередей в регионе                              |
+----+-------------------------------+----------------------------------------------------------------+
12 rows in set (0.00 sec)

SQL

Теперь нужно добавить в таблицу phone по одному номеру для каждого нового контакта:

mysql> insert into phone (contact_id, digits, label_id) values ('1518', '2001', '31');
Query OK, 1 row affected (0.00 sec)

mysql> insert into phone (contact_id, digits, label_id) values ('1519', '2002', '31');
Query OK, 1 row affected (0.00 sec)

mysql> insert into phone (contact_id, digits, label_id) values ('1520', '2003', '31');
Query OK, 1 row affected (0.00 sec)

mysql> insert into phone (contact_id, digits, label_id) values ('1521', '2004', '31');
Query OK, 1 row affected (0.00 sec)
SQL

Посмотреть список новых контактов можно на вкладке "Справочник":


В диалоговом окне "Переадресовать вызов" будет доступна вкладка "Очереди", где можно выбрать один из контактов и будет сделан перевод вызова по номеру.