| 10 | | == Последние изменения в MC04-Dispatcher == |
| 11 | | |
| 12 | | [[ChangeLog(/,3)]] |
| 13 | | |
| 14 | | == Документы == |
| 15 | | - [https://docs.google.com/document/d/1KI97C5T0YkfX-NbEs0t1mrk2En8bysTlvlXhyKNpnZg/edit?usp=sharing ТО Комплекс МС04/Dispatcher-IP] |
| 16 | | - [TracEffectiveWork Эффективная работа с TRAC] |
| 17 | | - [/wiki/MC04Manual Руководство по работе с пультом диспетчера MC04Dispatcher] |
| 18 | | - [https://drive.google.com/open?id=0B1er6HfyQelVVUllQU5TZTZYMFU Гайдлайны интерфейса ПО MC04 Dispatcher v0.6] |
| 19 | | == Формат таблицы cdr в базе данных конференций == |
| 20 | | |
| 21 | | {{{ |
| 22 | | mysql> describe cdr; |
| 23 | | +------------+------------------+------+-----+---------------------+----------------+ |
| 24 | | | Field | Type | Null | Key | Default | Extra | |
| 25 | | +------------+------------------+------+-----+---------------------+----------------+ |
| 26 | | | id | int(10) unsigned | NO | PRI | NULL | auto_increment | |
| 27 | | | has_record | tinyint(1) | YES | | 0 | | |
| 28 | | | starttime | timestamp | NO | | 0000-00-00 00:00:00 | | |
| 29 | | | endtime | timestamp | NO | | CURRENT_TIMESTAMP | | |
| 30 | | | xml | text | NO | | NULL | | |
| 31 | | | conference | varchar(255) | NO | | | | |
| 32 | | +------------+------------------+------+-----+---------------------+----------------+ |
| 33 | | 6 rows in set (0.00 sec) |
| 34 | | |
| 35 | | }}} |
| 36 | | |
| 37 | | |
| 38 | | == Как настроить функцию громкого боя абоненту == |
| 39 | | 1. В базе данных freeswitch (mod_db) создать запись с realm alarms и key username следующего формата: |
| 40 | | |
| 41 | | Для блока MC04-DSL-3U: {{{<address> .1.3.6.1.4.1.32109.9999.4.<slot>.7.0}}} |
| 42 | | |
| 43 | | Для блока MC04-VIP: {{{<address> .1.3.6.1.4.1.32109.1.1.0}}} |
| 44 | | |
| 45 | | где <address> - адрес блока 3U/VIP, <slot> - номер слока, в котором стоит плата PE-04. |
| 46 | | |
| 47 | | Пример конфигурации громкого боя для абонента varko и блока 3U(адрес 192.168.0.228) c платой PE-04 в слоте 12: |
| 48 | | |
| 49 | | {{{db insert/alarms/varko/192.168.0.228 .1.3.6.1.4.1.32109.9999.4.12.7.0}}} |
| 50 | | |
| 51 | | |
| 52 | | Пример конфигурации громкого боя для абонента varko и блока VIP(адрес 192.168.0.228): |
| 53 | | |
| 54 | | {{{db insert/alarms/varko/192.168.0.228 .1.3.6.1.4.1.32109.1.1.0}}} |
| 55 | | |
| 56 | | Удалить (отключить) функцию громкого боя для абонента можно такой командой: |
| 57 | | |
| 58 | | {{{db delete/alarms/<username>}}} |
| 59 | | |
| 60 | | например отключение громкого боя для пользователя varko: |
| 61 | | |
| 62 | | {{{db delete/alarms/varko}}} |
| 63 | | |
| 64 | | |
| 65 | | 2. Необходимо разрешить запись в блок 3U/VIP по протоколу SNMPv2c c community "private". Для этого надо зайти в блок по ssh и в файле /etc/snmp/snmpd.conf раскомментировать строчку |
| 66 | | |
| 67 | | {{{com2sec readwrite default private}}} |
| 68 | | |
| 69 | | Это можно сделать, например, такой командой: |
| 70 | | |
| 71 | | {{{sed -i 's/^#com2sec readwrite/com2sec readwrite/' /etc/snmp/snmpd.conf}}} |
| 72 | | |
| 73 | | или отредактировать файл в текстовом редакторе: |
| 74 | | |
| 75 | | {{{vi /etc/snmp/snmpd.conf}}} |
| 76 | | |
| 77 | | После редактирования конфиг-файла необходимо выполнить рестарт SNMP-агента такой командой: |
| 78 | | |
| 79 | | {{{/etc/init.d/snmpd restart}}} |
| 80 | | |
| 81 | | == Как добавить/отредактировать абонента == |
| 82 | | Список абонентов в виде файлов находится в /etc/freeswitch/conf/directory/default в виде файлов *.xml. |
| 83 | | Конфигурация пользователей описана здесь: [https://wiki.freeswitch.org/wiki/XML_User_Directory_Guide]. |
| 84 | | |
| 85 | | Пользователь включается в группы заданием атрибута '''groups''' в теге '''<user/>''', значением которого является список групп, разделенных символом ';'. |
| 86 | | |
| 87 | | Диспетчеру и технику может быть задан атрибут '''allow''' в теге '''<user/>''', значением которого является список разрешенных действий, разделенных символом ';'. |
| 88 | | В настоящий момент АРМ диспетчера распознает следующие действия: |
| 89 | | '''recordings''' - просмотр CDR конференций и прослушивание записей. |
| 90 | | |
| 91 | | Пример конфигурации абонента: |
| 92 | | |
| 93 | | {{{ |
| 94 | | <include> |
| 95 | | <user id="varko" groups="Совещание;Главные"> |
| 96 | | <params> |
| 97 | | <param name="password" value="alk56djf"/> |
| 98 | | </params> |
| 99 | | <variables> |
| 100 | | <variable name="user_context" value="default"/> |
| 101 | | <variable name="effective_caller_id_name" value="Оператор-10"/> |
| 102 | | </variables> |
| 103 | | </user> |
| 104 | | </include> |
| 105 | | }}} |
| 106 | | |
| 107 | | = Установка MC04-Softswitch = |
| 108 | | |
| 109 | | Устанавливаем ubuntu-server с [http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso mini.iso]. |
| 110 | | Заводим пользователя adс с паролем adс. |
| 111 | | Когда спросит о сервисах, отметить для установки openssh. |
| 112 | | |
| 113 | | Добавляем наш репозиторий: |
| 114 | | |
| 115 | | Для Ubuntu 16.04: |
| 116 | | {{{ |
| 117 | | echo deb https://repo.adc-line.ru/ubuntu xenial main | sudo tee -a /etc/apt/sources.list |
| 118 | | }}} |
| 119 | | Для Ubuntu 14.04: |
| 120 | | {{{ |
| 121 | | echo deb https://repo.adc-line.ru/ubuntu trusty main | sudo tee -a /etc/apt/sources.list |
| 122 | | }}} |
| 123 | | |
| 124 | | Создаём файл adc.key - наш публичный ключ, с содержанием: |
| 125 | | {{{ |
| 126 | | -----BEGIN PGP PUBLIC KEY BLOCK----- |
| 127 | | Version: GnuPG v1 |
| 128 | | |
| 129 | | mQGhBFEPhAMRBACy6rIo7GP9mQxG28ndYk1UqaJ/D8MdfZbpjemJk0MGrXJMJErQ |
| 130 | | eLx6Z91+Sx4SfP4fRSNt9kaP9roFta/Xvma1X8HzPMlp/KXWx3cNGV70gAlzX0IH |
| 131 | | U3eeb4b1FjBFeyXokOLa35pruN++zskBjPn/p6ZRwQ9NQJovE+Oyr+u3TwCg4yhy |
| 132 | | s7pVTHfhMGrkyukIW7ICVH8D/ipuFzhz3f8R70O3z8xKmJoslmjtryqHRIB14XB9 |
| 133 | | rcxLV/IwjjIlIrQWRCabegroEy4eAGNEZa6ZhYCkKg0IpJ+Dp7f9y5OknO6J8x4e |
| 134 | | aEeQhoYhGPpj/vSS0pmbJHv8BAqLGvBpHC1aUFI9H2VVRJ1sUene/TTCX95+z6EU |
| 135 | | vfiYA/j/5695A/VUClr+roQJPtKnHFJ0v8fvpwApIn7kVWRTLwe7/3guQ6KXEX92 |
| 136 | | XVQPaK3fdpBQ2Sx2gwUgMKydPtJTLk9thQvYo1k4oTBEDa2H55Qa6k3tgt3bKMrr |
| 137 | | rSv5ZFlS/QqZr9KdLQRcYZ+pjlIP2HcCUK87GxjA1DP6E6sItBNBREMgTHRkIChz |
| 138 | | aWduIG9ubHkpiGAEExECACAFAlEPhAMCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX |
| 139 | | gAAKCRDLxmDhd4pzw8S9AJ9l83VUYK2mlBYvDG1ME8KMEEmDhgCgtCw6ao0+IgvM |
| 140 | | EmbjD+bBc3mvzF8= |
| 141 | | =YLY2 |
| 142 | | -----END PGP PUBLIC KEY BLOCK----- |
| 143 | | }}} |
| 144 | | |
| 145 | | Добавляем наш публичный ключ (файл adc.key) |
| 146 | | {{{ |
| 147 | | sudo apt-key add adc.key |
| 148 | | }}} |
| 149 | | |
| 150 | | Обновляемся: |
| 151 | | |
| 152 | | {{{ |
| 153 | | sudo apt-get update |
| 154 | | sudo apt-get upgrade |
| 155 | | }}} |
| 156 | | |
| 157 | | Устанавливаем freeswitch и русские звуки к нему: |
| 158 | | |
| 159 | | {{{ |
| 160 | | sudo apt-get install freeswitch-all freeswitch-sounds-ru-ru-elena |
| 161 | | }}} |
| 162 | | |
| 163 | | Конфигурируем freeswitch по вкусу. |
| 164 | | |
| 165 | | === Установка базы данных === |
| 166 | | |
| 167 | | Если не планируется держать базы данных на том же хосте, что и freeswitch, этот раздел можно пропустить. |
| 168 | | |
| 169 | | Устанавливаем mysql-server: |
| 170 | | |
| 171 | | {{{ |
| 172 | | sudo apt-get install mysql-server |
| 173 | | }}} |
| 174 | | |
| 175 | | === Установка TFTP сервера === |
| 176 | | |
| 177 | | Если для конфигурации умных телефонов нужен сервер TFTP, то устанавливаем его так: |
| 178 | | |
| 179 | | {{{sudo apt-get install tftp tftpd xinetd}}} |
| 180 | | |
| 181 | | === Установка NTP сервера === |
| 182 | | Телефонам нужно получать время, если в сети нет NTP-сервера, устанавливаем: |
| 183 | | {{{sudo apt-get install ntp}}} |
| 184 | | |
| 185 | | === Установка snmp === |
| 186 | | |
| 187 | | Если требуется функция громкого боя, устанавливаем snmp: |
| 188 | | |
| 189 | | {{{sudo apt-get install snmp}}} |
| 190 | | |
| 191 | | == Конфигурирование MC04-Softswitch == |
| 192 | | == Конфигурация Freeswitch == |
| 193 | | Скопировать "демонстрационную" конфигурацию в /etc/freeswitch |
| 194 | | |
| 195 | | === Создание и настройка базы данных === |
| 196 | | |
| 197 | | Подключаемся к mysql и создаем базу данных (в данном примере '''dispatcher'''), создаем таблицу options, устанавливаем права доступа к ней для freeswitch, добавляем пароль event-сокета freeswitch: |
| 198 | | |
| 199 | | {{{ |
| 200 | | mysql -u root -p |
| 201 | | /* создаем базу данных */ |
| 202 | | CREATE DATABASE dispatcher; |
| 203 | | /* даем права доступа для freeswitch */ |
| 204 | | GRANT ALL PRIVILEGES ON dispatcher.* TO freeswitch@localhost IDENTIFIED BY 'mysql-password'; |
| 205 | | FLUSH PRIVILEGES; |
| 206 | | USE dispatcher |
| 207 | | /* создаем таблицу опций */ |
| 208 | | CREATE TABLE `options` ( |
| 209 | | id int(10) unsigned NOT NULL AUTO_INCREMENT, |
| 210 | | name varchar(64) NOT NULL, |
| 211 | | value varchar(255) NOT NULL DEFAULT '', |
| 212 | | PRIMARY KEY (id), |
| 213 | | UNIQUE KEY name (name) |
| 214 | | ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
| 215 | | /* Вписываем в таблицу пароль для freeswitch event socket */ |
| 216 | | INSERT INTO options (name, value) VALUES('event-socket-pwd','socketpass'); |
| 217 | | }}} |
| 218 | | mysql-password хранится в конфигурационном файле {{{/etc/freeswitch/autoload_configs/conference_cdr_mysql.conf.xml}}} (параметр "mysql-password") |
| 219 | | |
| 220 | | socketpass хранится в конфигурационном файле {{{/etc/freeswitch/autoload_configs/event_socket.conf.xml}}}(параметр "password") |
| 221 | | |
| 222 | | Cоздаём пользователей 1, 2, 3, 4 с паролем 1 для доступа извне с привилегией SELECT (для подключения MC04-Dispatcher) |
| 223 | | {{{ |
| 224 | | GRANT SELECT ON dispatcher.* TO '1'@'%' IDENTIFIED BY '1'; |
| 225 | | GRANT SELECT ON dispatcher.* TO '2'@'%' IDENTIFIED BY '1'; |
| 226 | | GRANT SELECT ON dispatcher.* TO '3'@'%' IDENTIFIED BY '1'; |
| 227 | | GRANT SELECT ON dispatcher.* TO '4'@'%' IDENTIFIED BY '1'; |
| 228 | | }}} |
| 229 | | |
| 230 | | Добавить пароль и шелл для пользователы freeswitch, пароль должен совпадать с socketpass (нужно для подключения MC04-Dispatcher по ssh). |
| 231 | | {{{ |
| 232 | | sudo passwd freeswitch |
| 233 | | }}} |
| 234 | | {{{ |
| 235 | | sudo usermod -s /bin/sh freeswitch |
| 236 | | }}} |
| 237 | | |
| 238 | | |
| 239 | | ... |
| 240 | | |
| 241 | | Разрешаем доступ к серверу снаружи : |
| 242 | | |
| 243 | | В файле ~~{{{/etc/mysql/my.cnf}}}~~ {{{/etc/mysql/mysql.conf.d/mysqld.cnf}}} |
| 244 | | |
| 245 | | замените строку {{{bind-address = 127.0.0.1}}} |
| 246 | | |
| 247 | | на {{{bind-address = *}}} |
| 248 | | |
| 249 | | Перезагрузите сервер MySQL: {{{sudo service mysql restart}}} |
| 250 | | |
| 251 | | |
| 252 | | === Настройка tftp сервера для авто-конфигурирования телефонов (например CISCO) === |
| 253 | | |
| 254 | | необходимо создать файл /etc/xinetd.d/tftp |
| 255 | | {{{sudo touch /etc/xinetd.d/tftp}}} |
| 256 | | и добавить следующее содержимое |
| 257 | | {{{ |
| 258 | | service tftp |
| 259 | | { |
| 260 | | protocol = udp |
| 261 | | port = 69 |
| 262 | | socket_type = dgram |
| 263 | | wait = yes |
| 264 | | user = nobody |
| 265 | | server = /usr/sbin/in.tftpd |
| 266 | | server_args = /tftpboot |
| 267 | | disable = no |
| 268 | | } |
| 269 | | }}} |
| 270 | | Создадим директорию /tftpboot. Это будет рабочая директория для TFTP сервера. |
| 271 | | {{{sudo mkdir /tftpboot}}} |
| 272 | | |
| 273 | | Изменим владельца этой директории на adc: |
| 274 | | {{{sudo chown adc:adc /tftpboot}}} |
| 275 | | |
| 276 | | Рестарт демона xinetd. |
| 277 | | {{{sudo /etc/init.d/xinetd restart}}} |
| 278 | | |
| 279 | | В директорию /tftpboot помещаем конфигурационные файлы телефонов |
| 280 | | Готово. |
| 281 | | |
| 282 | | === Настройка ntp сервера === |
| 283 | | в файле {{{/etc/ntp.conf}}}: |
| 284 | | ~~ Разрешить доступ из нужной подсети: добавить строку{{{restrict 172.16.11.0 mask 255.255.255.0 nomodify notrap}}} и доступ изнутри {{{restrict 127.127.1.0}}} ~~ |
| 285 | | Если наш сервер не подключен к интернету(или другим ntp серверам), то он перейдёт в стратум=16 и другие устройства не захотят получать время от него. Что-бы этого не произошло: |
| 286 | | находим строчки добавленых серверов, и закоментим их #, |
| 287 | | а вместо них добавим внутренний источник времени {{{server 127.127.1.0}}} |
| 288 | | |
| 289 | | сохраняем файл и перезапускаем ntp{{{sudo service ntp restart}}} |
| 290 | | |
| 291 | | === Окончательная конфигурация MC04-Softswitch === |
| 292 | | |
| 293 | | - Изменить конфигурацию сервера согласно потребностям |
| 294 | | |
| 295 | | - Изменить пароль администратора Ubuntu (пользователь adc) |
| 296 | | - Изменить пароль root MySql |
| 297 | | - Изменить пароли пользователей 1,2,3,4 в MySql и их же внести в конфигурационные файлы соответствующих пользователей {{{/etc/freeswitch/directory/default/}}} |
| 298 | | - Изменить пароль MySql пользователя freeswitch, затем этот пароль указать в файле {{{/etc/freeswitch/autoload_configs/conference_cdr_mysql.conf.xml}}} |
| 299 | | - Изменить пароль freeswitch event socket в файле {{{/etc/freeswitch/autoload_configs/event_socket.conf.xml}}} и в таблице опций в БД Mysql |
| 300 | | |
| 301 | | ... |
| 302 | | ... |
| 303 | | |
| 304 | | |
| 305 | | |
| 306 | | |
| 307 | | = Настройка рабочего места диспетчера = |
| 308 | | Устанавливаем ubuntu-server с [http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso mini.iso]. |
| 309 | | Заводим пользователя dispatcher с паролем dispatcher. |
| 310 | | Когда спросит о сервисах, отметить для установки openssh. |
| 311 | | |
| 312 | | Добавляем наш репозиторий: |
| 313 | | |
| 314 | | {{{ |
| 315 | | echo deb https://repo.adc-line.ru/ubuntu xenial main | sudo tee -a /etc/apt/sources.list |
| 316 | | }}} |
| 317 | | |
| 318 | | Добавляем наш публичный ключ: |
| 319 | | |
| 320 | | {{{ |
| 321 | | wget -O - https://repo.adc-line.ru/keys/adc.key | sudo apt-key add - |
| 322 | | }}} |
| 323 | | |
| 324 | | Обновляемся: |
| 325 | | |
| 326 | | {{{ |
| 327 | | sudo apt-get update |
| 328 | | sudo apt-get upgrade |
| 329 | | }}} |
| 330 | | |
| 331 | | |
| 332 | | Устанавливаем X: |
| 333 | | |
| 334 | | {{{ |
| 335 | | sudo apt-get install xorg |
| 336 | | }}} |
| 337 | | |
| 338 | | |
| 339 | | Устанавливаем пульт: |
| 340 | | |
| 341 | | {{{ |
| 342 | | sudo apt-get install mc04dispatcher |
| 343 | | }}} |
| 344 | | |
| 345 | | |
| 346 | | Разрешаем любому пользователю запускать X: |
| 347 | | |
| 348 | | {{{ |
| 349 | | sudo dpkg-reconfigure x11-common |
| 350 | | }}} |
| 351 | | |
| 352 | | и выбираем "Anybody". |
| 353 | | |
| 354 | | Добавляем пользователя в группу audio: |
| 355 | | |
| 356 | | {{{ |
| 357 | | sudo usermod -aG audio dispatcher |
| 358 | | }}} |
| 359 | | |
| 360 | | |
| 361 | | Настраиваем дефолтное устройство вывода звука в alsa (перенаправляем звук на dmixer для организации многопоточного звука) |
| 362 | | [/attachment/wiki/WikiStart/asound.conf /etc/asound.conf] |