= __Система диспетчерской связи MC04-Dispatcher / MC04-SoftSwitch__ =
== Последние изменения в MC04-Dispatcher ==
[[ChangeLog(/,3)]]
== Документы ==
- [TracEffectiveWork Эффективная работа с TRAC]
- [https://docs.google.com/document/d/1DtZgovCtdlHjMIa-XcBdbwJua-nDRfAi4KDvUfa9Wq4/edit?usp=sharing ТО MC04-Dispatcher]
- [https://drive.google.com/open?id=0B1er6HfyQelVVUllQU5TZTZYMFU Гайдлайны интерфейса ПО MC04 Dispatcher v0.6]
- ~~[https://drive.google.com/open?id=0B1er6HfyQelVcEZXalZ4OTlBZEk Гайдлайны интерфейса ПО MC04 Dispatcher v0.5]~~
- ~~[https://drive.google.com/open?id=0B1er6HfyQelVUENwejRxaHVBUTg Гайдлайны интерфейса ПО MC04 Dispatcher v0.4]~~
- ~~[https://drive.google.com/open?id=0B1er6HfyQelVNUtKSDMyQWF3VnM Гайдлайны интерфейса ПО MC04 Dispatcher v0.3]~~
== Формат таблицы cdr в базе данных конференций ==
{{{
mysql> describe cdr;
+------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------------------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| has_record | tinyint(1) | YES | | 0 | |
| starttime | timestamp | NO | | 0000-00-00 00:00:00 | |
| endtime | timestamp | NO | | CURRENT_TIMESTAMP | |
| xml | text | NO | | NULL | |
| conference | varchar(255) | NO | | | |
+------------+------------------+------+-----+---------------------+----------------+
6 rows in set (0.00 sec)
}}}
== Как настроить функцию громкого боя абоненту ==
1. В базе данных freeswitch (mod_db) создать запись с realm alarms и key username следующего формата:
Для блока MC04-DSL-3U: {{{
.1.3.6.1.4.1.32109.9999.4..7.0}}}
Для блока MC04-VIP: {{{ .1.3.6.1.4.1.32109.1.1.0}}}
где - адрес блока 3U/VIP, - номер слока, в котором стоит плата PE-04.
Пример конфигурации громкого боя для абонента varko и блока 3U(адрес 192.168.0.228) c платой PE-04 в слоте 12:
{{{db insert/alarms/varko/192.168.0.228 .1.3.6.1.4.1.32109.9999.4.12.7.0}}}
Пример конфигурации громкого боя для абонента varko и блока VIP(адрес 192.168.0.228):
{{{db insert/alarms/varko/192.168.0.228 .1.3.6.1.4.1.32109.1.1.0}}}
Удалить (отключить) функцию громкого боя для абонента можно такой командой:
{{{db delete/alarms/}}}
например отключение громкого боя для пользователя varko:
{{{db delete/alarms/varko}}}
2. Необходимо разрешить запись в блок 3U/VIP по протоколу SNMPv2c c community "private". Для этого надо зайти в блок по ssh и в файле /etc/snmp/snmpd.conf раскомментировать строчку
{{{com2sec readwrite default private}}}
Это можно сделать, например, такой командой:
{{{sed -i 's/^#com2sec readwrite/com2sec readwrite/' /etc/snmp/snmpd.conf}}}
или отредактировать файл в текстовом редакторе:
{{{vi /etc/snmp/snmpd.conf}}}
После редактирования конфиг-файла необходимо выполнить рестарт SNMP-агента такой командой:
{{{/etc/init.d/snmpd restart}}}
== Как добавить/отредактировать абонента ==
Список абонентов в виде файлов находится в /etc/freeswitch/conf/directory/default в виде файлов *.xml.
Конфигурация пользователей описана здесь: [https://wiki.freeswitch.org/wiki/XML_User_Directory_Guide].
Пользователь включается в группы заданием атрибута '''groups''' в теге '''''', значением которого является список групп, разделенных символом ';'.
Диспетчеру и технику может быть задан атрибут '''allow''' в теге '''''', значением которого является список разрешенных действий, разделенных символом ';'.
В настоящий момент АРМ диспетчера распознает следующие действия:
'''recordings''' - просмотр CDR конференций и прослушивание записей.
Пример конфигурации абонента:
{{{
}}}
= Установка MC04-Softswitch =
Устанавливаем ubuntu-server с [http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso mini.iso].
Заводим пользователя adс с паролем adс.
Когда спросит о сервисах, отметить для установки openssh.
Добавляем наш репозиторий:
Для Ubuntu 16.04:
{{{
echo deb https://repo.adc-line.ru/ubuntu xenial main | sudo tee -a /etc/apt/sources.list
}}}
Для Ubuntu 14.04:
{{{
echo deb https://repo.adc-line.ru/ubuntu trusty main | sudo tee -a /etc/apt/sources.list
}}}
Создаём файл adc.key - наш публичный ключ, с содержанием:
{{{
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQGhBFEPhAMRBACy6rIo7GP9mQxG28ndYk1UqaJ/D8MdfZbpjemJk0MGrXJMJErQ
eLx6Z91+Sx4SfP4fRSNt9kaP9roFta/Xvma1X8HzPMlp/KXWx3cNGV70gAlzX0IH
U3eeb4b1FjBFeyXokOLa35pruN++zskBjPn/p6ZRwQ9NQJovE+Oyr+u3TwCg4yhy
s7pVTHfhMGrkyukIW7ICVH8D/ipuFzhz3f8R70O3z8xKmJoslmjtryqHRIB14XB9
rcxLV/IwjjIlIrQWRCabegroEy4eAGNEZa6ZhYCkKg0IpJ+Dp7f9y5OknO6J8x4e
aEeQhoYhGPpj/vSS0pmbJHv8BAqLGvBpHC1aUFI9H2VVRJ1sUene/TTCX95+z6EU
vfiYA/j/5695A/VUClr+roQJPtKnHFJ0v8fvpwApIn7kVWRTLwe7/3guQ6KXEX92
XVQPaK3fdpBQ2Sx2gwUgMKydPtJTLk9thQvYo1k4oTBEDa2H55Qa6k3tgt3bKMrr
rSv5ZFlS/QqZr9KdLQRcYZ+pjlIP2HcCUK87GxjA1DP6E6sItBNBREMgTHRkIChz
aWduIG9ubHkpiGAEExECACAFAlEPhAMCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDLxmDhd4pzw8S9AJ9l83VUYK2mlBYvDG1ME8KMEEmDhgCgtCw6ao0+IgvM
EmbjD+bBc3mvzF8=
=YLY2
-----END PGP PUBLIC KEY BLOCK-----
}}}
Добавляем наш публичный ключ (файл adc.key)
{{{
sudo apt-key add adc.key
}}}
Обновляемся:
{{{
sudo apt-get update
sudo apt-get upgrade
}}}
Устанавливаем freeswitch и русские звуки к нему:
{{{
sudo apt-get install freeswitch-all freeswitch-sounds-ru-ru-elena
}}}
Конфигурируем freeswitch по вкусу.
=== Установка базы данных ===
Если не планируется держать базы данных на том же хосте, что и freeswitch, этот раздел можно пропустить.
Устанавливаем mysql-server:
{{{
sudo apt-get install mysql-server
}}}
=== Установка TFTP сервера ===
Если для конфигурации умных телефонов нужен сервер TFTP, то устанавливаем его так:
{{{sudo apt-get install tftp tftpd xinetd}}}
=== Установка NTP сервера ===
Телефонам нужно получать время, если в сети нет NTP-сервера, устанавливаем:
{{{sudo apt-get install ntp}}}
=== Установка snmp ===
Если требуется функция громкого боя, устанавливаем snmp:
{{{sudo apt-get install snmp}}}
== Конфигурирование MC04-Softswitch ==
== Конфигурация Freeswitch ==
Скопировать "демонстрационную" конфигурацию в /etc/freeswitch
=== Создание и настройка базы данных ===
Подключаемся к mysql и создаем базу данных (в данном примере '''dispatcher'''), создаем таблицу options, устанавливаем права доступа к ней для freeswitch, добавляем пароль event-сокета freeswitch:
{{{
mysql -u root -p
/* создаем базу данных */
CREATE DATABASE dispatcher;
/* даем права доступа для freeswitch */
GRANT ALL PRIVILEGES ON dispatcher.* TO freeswitch@localhost IDENTIFIED BY 'mysql-password';
FLUSH PRIVILEGES;
USE dispatcher
/* создаем таблицу опций */
CREATE TABLE `options` (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(64) NOT NULL,
value varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (id),
UNIQUE KEY name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/* Вписываем в таблицу пароль для freeswitch event socket */
INSERT INTO options (name, value) VALUES('event-socket-pwd','socketpass');
}}}
mysql-password хранится в конфигурационном файле {{{/etc/freeswitch/autoload_configs/conference_cdr_mysql.conf.xml}}} (параметр "mysql-password")
socketpass хранится в конфигурационном файле {{{/etc/freeswitch/autoload_configs/event_socket.conf.xml}}}(параметр "password")
Cоздаём пользователей 1, 2, 3, 4 с паролем 1 для доступа извне с привилегией SELECT (для подключения MC04-Dispatcher)
{{{
GRANT SELECT ON dispatcher.* TO '1'@'%' IDENTIFIED BY '1';
GRANT SELECT ON dispatcher.* TO '2'@'%' IDENTIFIED BY '1';
GRANT SELECT ON dispatcher.* TO '3'@'%' IDENTIFIED BY '1';
GRANT SELECT ON dispatcher.* TO '4'@'%' IDENTIFIED BY '1';
}}}
Добавить пароль и шелл для пользователы freeswitch, пароль должен совпадать с socketpass (нужно для подключения MC04-Dispatcher по ssh).
{{{
sudo passwd freeswitch
}}}
{{{
sudo usermod -s /bin/sh freeswitch
}}}
...
Разрешаем доступ к серверу снаружи :
В файле ~~{{{/etc/mysql/my.cnf}}}~~ {{{/etc/mysql/mysql.conf.d/mysqld.cnf}}}
замените строку {{{bind-address = 127.0.0.1}}}
на {{{bind-address = *}}}
Перезагрузите сервер MySQL: {{{sudo service mysql restart}}}
=== Настройка tftp сервера для авто-конфигурирования телефонов (например CISCO) ===
необходимо создать файл /etc/xinetd.d/tftp
{{{sudo touch /etc/xinetd.d/tftp}}}
и добавить следующее содержимое
{{{
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
}}}
Создадим директорию /tftpboot. Это будет рабочая директория для TFTP сервера.
{{{sudo mkdir /tftpboot}}}
Изменим владельца этой директории на adc:
{{{sudo chown adc:adc /tftpboot}}}
Рестарт демона xinetd.
{{{sudo /etc/init.d/xinetd restart}}}
В директорию /tftpboot помещаем конфигурационные файлы телефонов
Готово.
=== Настройка ntp сервера ===
в файле {{{/etc/ntp.conf}}}:
~~ Разрешить доступ из нужной подсети: добавить строку{{{restrict 172.16.11.0 mask 255.255.255.0 nomodify notrap}}} и доступ изнутри {{{restrict 127.127.1.0}}} ~~
Если наш сервер не подключен к интернету(или другим ntp серверам), то он перейдёт в стратум=16 и другие устройства не захотят получать время от него. Что-бы этого не произошло:
находим строчки добавленых серверов, и закоментим их #,
а вместо них добавим внутренний источник времени {{{server 127.127.1.0}}}
сохраняем файл и перезапускаем ntp{{{sudo service ntp restart}}}
=== Окончательная конфигурация MC04-Softswitch ===
- Изменить конфигурацию сервера согласно потребностям
- Изменить пароль администратора Ubuntu (пользователь adc)
- Изменить пароль root MySql
- Изменить пароли пользователей 1,2,3,4 в MySql и их же внести в конфигурационные файлы соответствующих пользователей {{{/etc/freeswitch/directory/default/}}}
- Изменить пароль MySql пользователя freeswitch, затем этот пароль указать в файле {{{/etc/freeswitch/autoload_configs/conference_cdr_mysql.conf.xml}}}
- Изменить пароль freeswitch event socket в файле {{{/etc/freeswitch/autoload_configs/event_socket.conf.xml}}} и в таблице опций в БД Mysql
...
...
= Настройка рабочего места диспетчера =
Устанавливаем ubuntu-server с [http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso mini.iso].
Заводим пользователя dispatcher с паролем dispatcher.
Когда спросит о сервисах, отметить для установки openssh.
Обновляемся:
{{{
sudo apt-get update
sudo apt-get upgrade
}}}
Устанавливаем X:
{{{
sudo apt-get install xorg
}}}
Устанавливаем java:
{{{
sudo apt-get install openjdk-7-jre-headless
}}}
Разрешаем любому пользователю запускать X:
{{{
sudo dpkg-reconfigure x11-common
}}}
и выбираем "Anybody".
Добавляем пользователя в группу audio:
{{{
sudo usermod -aG audio dispatcher
}}}
Устанавливаем SIP_client:
{{{
sudo mkdir -p /usr/local/share/SIP_client
sudo scp -r alx@192.168.0.75:work/dispatcher/dispatcher/SIP_client /usr/local/share/
}}}
Устанавливаем скрипт запуска:
[/attachment/wiki/WikiStart/SIP_client.conf /etc/init/SIP_client.conf]
Настраиваем дефолтное устройство вывода звука в alsa (перенаправляем звук на dmixer для организации многопоточного звука)
[/attachment/wiki/WikiStart/asound.conf /etc/asound.conf]