Внесение записей в адресную книгу MySQL
Настройка параметров подключения к БД
Реконфигурация пакета 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.
База 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)
где:
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)
Пример внесения записи в базу адресной книги
Например, стоит задача сформировать уникальный справочник каких-либо номеров для перевода вызова по этому справочнику.
Сначала через 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, тут можно указать любое значение
Затем подключиться к 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)
Выбрать для использования базу 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
Смотрим, какие есть таблицы:
mysql> show tables;
+-----------------------------+
| Tables_in_ecss_address_book |
+-----------------------------+
| changes |
| contact |
| email |
| external |
| label |
| phone |
| source |
| version |
+-----------------------------+
8 rows in set (0.00 sec)
Смотрим какие есть 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)
Добавим новый 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)
Теперь нужно добавить в таблицу 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)
Можно определить 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)
Теперь нужно добавить в таблицу phone по одному номеру для каждого нового контакта:
- contact_id(1518, 1519, 1520, 1521) берутся из таблицы Внесение записей в адресную книгу MySQL, которые добавили ранее;
- label_id(31) — из таблицы Внесение записей в адресную книгу MySQL.
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)
Посмотреть список новых контактов можно на вкладке "Справочник":
В диалоговом окне "Переадресовать вызов" будет доступна вкладка "Очереди", где можно выбрать один из контактов и будет сделан перевод вызова по номеру.