﻿ticket	summary	component	milestone	type	owner	status	created	modified	_description	_reporter
588	Падение до подключения	ПО MC04-Dispatcher. Пульт диспетчера/техника	1 очередь	баг	alx	new	2018-05-24T12:46:41+05:00	2020-01-21T17:05:32+05:00	"Перенесено из ticket:587#comment:9
При нажатии кнопки Вход, программа падает каждый раз, независимо от корректности данных авторизации.

[[Image(#587:image.png)]]
Логи с r1054
main.log
{{{
2018.05.23 09:07:41.977 [INFO   ] Программа запущенна, MC04-Dispatcher-v1.0-r1054
2018.05.23 09:07:41.977 [INFO   ] Конфигурация загружена
2018.05.23 09:07:41.977 [INFO   ] Начат процесс подключения к FreeSwitch серверу
}}}
debug.log

{{{
2018.05.23 09:07:41.419 [WARNING] Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
   QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
   QT_SCREEN_SCALE_FACTORS to set per-screen factors.
   QT_SCALE_FACTOR to set the application global scale factor.
2018.05.23 09:07:41.434 [DEBUG  ] Loading config from C:/Users/LevkovichDN/AppData/Local/MC04Dispatcher.xml
2018.05.23 09:07:51.109 [DEBUG  ] sip_endpoint.c  .Creating endpoint instance...
2018.05.23 09:07:51.110 [DEBUG  ]          pjlib  .select() I/O Queue created (045215D8)
2018.05.23 09:07:51.110 [DEBUG  ] sip_endpoint.c  .Module ""mod-msg-print"" registered
2018.05.23 09:07:51.110 [DEBUG  ] sip_transport.  .Transport manager created.
2018.05.23 09:07:51.111 [DEBUG  ]   pjsua_core.c  .PJSUA state changed: NULL --> CREATED
2018.05.23 09:07:52.393 [INFO   ]   pjsua_core.c  .pjsua version 2.6 for  initialized
2018.05.23 09:07:52.394 [DEBUG  ] local IPv4 address is 10.226.203.214
2018.05.23 09:07:52.400 [ERROR  ] error getting local IPv6 address
}}}


"	san
583	Нет реакции на отклонение вызова	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	баг	alx	new	2018-04-05T16:26:53+05:00	2018-05-28T09:53:18+05:00	"В пульте диспетчера (r1029) вызвал в конференцию свой телефон. Телефон зазвенел , в списке участников конференции появилась ""плашка"", индицирующая вызов.

Далее я на телефоне отклонил вызов, но пульт продолжал показывать участника в состоянии ""Вызывается"". Это состояние перешло в ошибку позже (видимо, по таймауту).

Мне казалось, что если абонент отклонил вызов, пульт должен получить какое-то сообщение (типа неуспешного завершения задачи), по которому перевести участника в состояние ошибки. Надо разобраться, почему этого не происходит."	alx
182	Продумать технологию работы программы в мульти-доменной инсталляции	Диспетчерская связь	2 очередь	задача	alx	assigned	2016-06-17T09:39:43+05:00	2017-12-07T10:05:49+05:00	"Я создал #179, а потом сообразил, что это только вершина айсберга. У нас в принципе не продумана возможность работы системы в мельти-доменном окружении.

Список вопросов и проблем, решение по которым требуется принять:

- Как отличать ""свои"" конференции среди всех конференций на сервере и отображать их в списке конференций?
- Как отделять в базе данных ""наши"" записи переговоров от ""не наших""?
- Команда начала ""Громкого боя"" и уведомление о его включении: сейчас программа, вызывая пользователя в контексте alarm, не указывает его домен. Соответственно, при генерации события указывается домен из конфига FS, а не полученный при вызове.

Надо продумать, как наша система может (и должна) сосуществовать с другими (не связанными с диспетчерской связью) функциями коммутатора.

Ниже будем суммировать предложения по решению перечисленных выше проблем.

== Предложения по решению перечисленных выше проблем ==
- Отображать конференцию если в ней есть хотя бы один участник с нашим доменом.
- При вызовах дайлплана в контексте alarm указывать домен, например {{{loopbacl/123@domain.com/alarm}}}. В дайлплане найти способ получения этого домена (по идее, он должен быть в какой-то переменной канала)."	alx
281	Поддержка видео	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	задача	san	new	2016-08-04T15:08:47+05:00	2017-12-07T10:05:49+05:00	"Сделать поддержку видео в нашем SIP UA.

Продумать интерфейс - как и где оно будет отображаться."	alx
593	Предложения по модернизации системы диспетчерской связи	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	san	assigned	2025-07-28T16:43:53+05:00	2025-08-04T06:20:42+05:00	"== Предложения по модернизации программы Dispatcher  

У меня есть предложения по внесению изменений в программу Dispatcher и систему диспетчерской связи в целом:  

1. **Переход с Qt5 на Qt6**  
   - Dispatcher написан с использованием Qt5, актуальной версией является Qt6.  
   - Между Qt5 и Qt6 есть изменения в API, поэтому необходимо адаптировать программу для работы с Qt6.  
   - Тестирование перехода на Qt6 уже проводилось в Linux (патч прилагается).  

2. **Изменение архитектуры диспетчерской связи**  
   Текущая схема работы (рис. 1). 

{{{#!PlantUml
@startuml
node ""Рабочее место оператора"" {
  User - [Dispatcher]
}

package ""Сервер/плата МС-03"" {
  package ""Freeswitch server"" {
    [Freeswitch] -right- ESL
    [Freeswitch] -left- modmysql
  }
  database ""MySql"" {
  frame ""Конфигурация"" {
    [Config]
  }
  frame ""сессии CDR"" {
    [CDR]
  }
} 
[Dispatcher] --> SSH
}

[Dispatcher] --> ESL
[Dispatcher] --> [CDR]
[Dispatcher] --> [Config]
modmysql --> [CDR]
@enduml
}}}

Предлагаю новую схему (рис. 2)

{{{#!PlantUml
@startuml
node ""Рабочее место оператора"" {
  [Dispatcher] -right- User
  [Браузер]    -left- User
}

package ""Сервер/плата МС-03"" {
  package ""ПО управления"" {
  frame ""Прокси"" {
    [Proxy] -up- ESL_proxy
    [Proxy] -down- ESL_FS
  }
  frame ""Web interface"" {
    [Web] -up- API
    [Web] -down- mysql
    [Web] -left- XML
  }
  }
  package ""Freeswitch server"" {
    [Freeswitch] -down- mod_conf...
    [Freeswitch] -down- ESL
    [Freeswitch] -right- mod_xml_curl
  }
  database ""MySql"" {
  frame ""Конфигурация"" {
    [Config]
  }
  frame ""сессии CDR"" {
    [CDR]
  }
} 

}

note top of [Dispatcher]
  Параметры подключения к ESL_proxy
  хранить в файле конфигурации Dispatcher
end note


[Dispatcher] <--> ESL_proxy
[mysql] --> [CDR]
mod_conf... --> [CDR]
ESL_FS <--> ESL
[Браузер] <--> API
mod_xml_curl --> XML
@enduml
}}}

 включающая следующие изменения:  
   - **Подключение к ESL FreeSWITCH через Proxy**  
     - Это позволит Dispatcher работать с несколькими серверами FreeSWITCH одновременно.  
     - Также появится возможность подключения к другим VoIP-серверам (например, Asterisk).  
   - **Устранение зависимостей**  
     - Убрать зависимость от MySQL: пароль для подключения к Proxy ESL должен храниться в конфигурационном файле Dispatcher.  
     - Убрать зависимость от SSH: настройка должна выполняться через веб-интерфейс.  
   - **Перенос функционала в веб-интерфейс**  
     - Прослушивание записанных конференций.  
     - Управлением абонентами.
     - Управлением планом набора.

**Что должно получится:**  
- Dispatcher останется только в качестве пользовательского интерфейса для управления конференциями.  
- Proxy обеспечит гибкость подключения в том числе и к нескольким серверам.  
- Веб-интерфейс сократит необходимость ручного консольного конфигурирования FreeSWITCH.  

**Для реализации предлагаю:**  
- Создать в репозитории новую ветку `qt6` для продолжения разработки.  
- Если нет возражений, я готов взять разработку на себя. В таком случае, предоставьте пользователю `mixyil1.1` права на запись в ветку `qt6`.  
"	mixyil1.1
125	п.15. Осуществлять вызовы одного пользователя другим(прямые вызовы) с помощью конференций	MC04-SoftSwitch	Задания от МВтел	задача	san	assigned	2015-03-16T12:18:15+05:00	2017-12-15T17:31:02+05:00	"Насколько я понимаю это вопрос конфигурации FS. Нужно создать следующую конфигурацию.
- При наборе пользователем 123 номера 456 должна быть создана конференция с именем типа {{{Вася(123) -> Петя(456)}}} (Вася и Петя - отображаемые имена, 123 и 456 - id пользователей)
- В эту конференцию должны быть добавлены оба пользователя
- пока вызываемый пользователь не вошёл в конференцию, в конференцию должен проигрываться сигнал КПВ.
- когда вызываемый добавится к конференции проигрывание КПВ должно прекратиться
- если вызываемый сбросил вызов, или была другая причина для сброса вызова(ошибка например), в конференцию должен быть проигран сигнал занято
"	san
586	Установка Bind адреса	ПО MC04-Dispatcher. Пульт диспетчера/техника	Задания от МВтел	улучшение	alx	new	2018-04-18T13:23:37+05:00	2018-05-25T16:24:38+05:00	"Установка Bind адреса.
В ревизии dispetcher 1050 отсутствует возможность установки Bind адреса из настроек программы, в случае использования на ПК нескольких сетевых интерфейсов. На ПК техника имеется большая вероятность такой ситуации (т.к. он может мониторить несколько типов оборудования, находящихся в разных сетях). 
Настройка может выполнится путем редактирования файла dispatcher .xml .  
строка: <BindAddress Auto=""false"" Address=""""/>
 Но при изменении настроек из программы - нажатие кнопки ""Сохранить настройки"" xml сбрасывает значение по умолчанию в true."	Ivanmvtel
303	Свои настройки для разных пользователей	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	задача	san	new	2016-08-19T12:39:49+05:00	2017-12-07T10:05:49+05:00	"Replying to [ticket:289#comment:7 alx]:
>  1. сохранять настройку ""домашней"" конференции свою для каждого пользователя;
>  1. сохранять эту настройку не в локальном конфиге, а в базе данных на сервере.

[[BR]]

Для каждого пользователя могут быть свои:
- настройки основной конференции
- настройки внешнего вида программы
- что ещё?

И может быть имеет смысл вообще все настройки программы хранить на сервере? А на локальном ПК хранить только данные для авторизации и прокси, т.е. по сути, только то что указывается в окне авторизации (порт прокси можно добавить туда при необходимости)
"	san
365	GUI для настройки параметров диспетчерской	MC04-SoftSwitch	2 очередь	задача	alx	new	2016-08-31T10:15:54+05:00	2017-12-07T10:05:49+05:00	"Заказчик хочет некоторые параметры сервера диспетчерской настраивать через графический интерфейс.
Вот набросок того что должно быть в этом интерфейсе:
- Настройки пользователей/абонентов: логин, пароль, группы ...
- Настройки ГБ
- Интерфейс выгрузки ""всех настроек"" из !SoftSwitch в файл и загрузки из файла в !SoftSwitch(с последующим применением)
- ? редактирование настроек телефонов cisco и др. (хранящихся в /tftpboot)
- ? Интерфейс поиска/прослушивания и выгрузки звукозаписей
- Лимит объёма накопителя для хранения звукозаписей
- Адрес шлюза(ов) ТСОП, Префикс(ы) вызова шлюзов.
- ""диалплан?"" (в каком-то виде): Настройки типа вызова конференции набором 0 (основной), и вызова техника особым номером, вызов 3-4 значных номеров...
- Таймаут в ""голосовом меню""
- ...

Конфигурации фрисвитча должна использовать настроенные пользователем значания параметров.

Это тикет для обсуждения, решение прямо сейчас не требуется, но этот вопрос поднимается уже давно и актуален для заказчика.

Какой GUI для настроек? Вебморда сервера или некое ПO?


"	san
372	Описать требования к зависимостям пульта	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	задача	alx	assigned	2016-08-31T17:22:58+05:00	2017-12-07T15:20:00+05:00	"Сейчас пульт диспетчера зависит от ряда библиотек (PJSIP, mysql и т.п.), причем для его работы требуется, что бы они (по крайней мере, некоторые из них) были собраны (сконфигурированы) с вполне конкретными опциями (см. например #367).

Хотелось бы иметь где-то на wiki-страничке (для начала можно сделать раздел на WikiStart) некий список требований программы к ее зависимостям."	alx
568	Система автоматического оповещения	Диспетчерская связь	2 очередь	задача	san	new	2017-07-06T09:29:54+05:00	2017-12-07T10:05:49+05:00	"Подумать над реализацией и полезностью.
Пример реализации системы в Слонимском УМГ:
https://drive.google.com/open?id=0B1er6HfyQelVWFZtcS13alpvWlU"	san
569	"Интеграция с диспетчерской ""Сетал"""	Диспетчерская связь	2 очередь	задача	san	new	2017-07-07T09:33:40+05:00	2017-12-07T15:25:47+05:00	Команды должны быть похожи на работу с ППС-Р3.	san
572	Изменение цвета фона программы	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	задача	alx	new	2017-12-07T10:50:02+05:00	2017-12-26T12:45:18+05:00	"Сейчас фон панелей, таблиц, полей ввода и т.д. в программе белый.
Для некоторых пользователей, длительное время работающих с программой, фон слишком яркий.
Нужно реализовать выбор фонового цвета в программе из набора цветов, в соответствии с Гайдлайнами v.0.6 (cтр. 53)
"	san
311	Добавить индексы к таблицам cdr и recordings	MC04-SoftSwitch	2 очередь	улучшение	alx	new	2016-08-19T17:12:19+05:00	2017-12-07T10:05:49+05:00	"Когда ""устаканится"" работа программы с базой данных, добавить индексы столбцам, по которым выполняется поиск."	alx
373	При старте программы проверять, должным ли образом собраны ее зависимости	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	alx	assigned	2016-08-31T17:26:56+05:00	2017-12-07T15:27:29+05:00	"Сейчас программа, насколько мне известно, не делает никаких проверок на то, поддерживают ли ее зависимости необходимые программе функции или нет. Например, не делается проверка, собран ли PJSIP с поддержкой ресэмплинга, которая, как выяснилось, программе требуется (см. #367).

Предлагается при старте программы, по возможности (а, например, для упомянутого PJSIP это возможно) проверять наличие поддержки требуемых функций и в случае обнаружения отсутствия чего-либо необходимого, как минимум выдавать предупреждение."	alx
384	Добавить функцию перенесения участника в новую конференцию	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	alx	assigned	2016-09-02T12:04:39+05:00	2017-12-07T15:29:11+05:00	"Предлагаю сделать функцию перенесения участника(ов) конференции в другую (новую) конференцию. Предполагаемый сценарий:

1. Выбираем одного или нескольких участников конференции.
1. Кликаем правой кнопкой мыши. Появляется контекстное меню.
1. В контекстном меню выбираем ""Перенести в конференцию..."". Появляется диалог с предложением ввести имя конференции (по умолчанию можно подставить имя, сформированное по алгоритму из ticket:336#comment:6).
1. Вводим желаемое имя (или ничео не вводим - соглашаемся с предложенным) и нажимаем Enter. - пульт выполняет трансфер выбранных участников в новую конференцию ({{{conference <confname> transfer <newname> <member>}}})."	alx
563	Несоответствие адреса в Contact типу транспорта	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	баг	alx	new	2017-05-11T11:58:16+05:00	2017-12-07T10:05:49+05:00	"При регистрации нашего юзер-агента на сервере, если имя сервера имеет запись AAAA, выбирается транспорт IPv6, и собственно регистрация проходит успешно, однако при формировании сообщения REGISTER PJSIP выбирает адрес IPv4, а не IPv6, в результате чего !FreeSwitch впоследствии не может выполнить вызов нашего пользователя.

Как показал анализ кода, выбор семейства адреса производится функцией `pjsua_acc_get_uac_addr()`, которая определяет семейство адреса по target uri (а именно, наличию двоеточия в имени хоста). Очевидно, это неверный критерий - если в имени хоста нет двоеточия, это не означает, что транспортным протоколом будет непременно IPv4."	alx
230	"Режим ""прослушивания конференции"""	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	задача	san	assigned	2016-07-20T11:59:43+05:00	2017-12-07T15:53:19+05:00	"С заказчиком обсуждался дополнительный функционал программы:
""Прослушивание конференции"". Во время того как Техник занят в конференции у него должна быть возможность прослушивать разговор в другой конференции, и возможность вывода этого аудиопотока на дополнительное звуковое устройство.

Пока прошу учесть в разработке возможность появления этого функционала в программе."	san
151	Управление громкостью кнопками USB спикерфона	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	alx	assigned	2015-12-10T15:16:32+05:00	2017-12-07T15:55:38+05:00	"Сейчас громкость динамика управляется нашей программой.
В то же время USB спикерфоны (в том числе !ClearOne CHAT, которыми мы комплектуем пульты диспетчеров) имеют собственные кнопки управления громкостью. Эти кнопки сейчас не работают под linux, на что поступали жалобы с эксплуатации.

Надо:

1. Посмотреть, определяется ли спикерфон как устройство ввода:[[br]] {{{for n in /sys/class/input/*/device/name ; do echo -n $n "" ""; cat $n; done}}};
1. Проверить, приходят ли сканкоды клавиш при нажатии кнопок управления громкостью: {{{/lib/udev/keymap -i /input/event4}}};
1. Проверить, конвертируются ли эти коды X-сервером в соответствующие события с помощью {{{xev}}}. По идее, это должны быть '''XF86AudioRaiseVolume''' и '''XF86AudioLoweVolume'''.

Если X11 видит события кнопок, надо задействовать их для управления микшером: либо с помощью какой-то существующей сторонней программы (и тогда добавить wiki-страничку с описанием процесса настройки), либо с помощью нашей программы MC04-Dispatcher. Лично мне второе кажется более логичным."	alx
232	ПО для контроля ширины полосы и качества Ethernet на сервер	MC04-SoftSwitch	2 очередь	улучшение	san	new	2016-07-20T15:49:16+05:00	2017-12-07T10:05:49+05:00	"Витя предлагает при отгрузке готового сервера устанавливать на него ПО для контроля ширины полосы и качества канала Ethernet
Для того чтобы можно было в случае проблем с каналом у пользователя, мы легко могли доказать ""что не верблюд"".
Витя предлагает программу jprf"	san
566	Добавить настройку расположения лог-файлов	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	alx	new	2017-05-25T15:03:53+05:00	2017-12-07T10:05:49+05:00	"Сейчас лог-файлы используют относительный пуль, что плохо.
Надо сделать расположение лог-файлов конфигурируемым."	alx
570	Добавить ручную сортировку списка пользователей	ПО MC04-Dispatcher. Пульт диспетчера/техника	2 очередь	улучшение	alx	new	2017-12-07T10:28:14+05:00	2017-12-13T16:12:30+05:00	"(ПП - пользователь программы Пульт Диспетчера/техника)

В списке/дереве пользователей сейчас есть сортировка по алфавиту.
Требуется добавить ещё один вариант- Ручная сортировка.
Переключив сортировку на ручную ПП имеет возможность сам расставить пользователей в нужном порядке(перетаскивая их мышью). Программа должна запомнить расположение пользователей в дереве и при переключении на другой тип сортировки и обратно или при перезапуске программы отображать их в том виде в котором их расставили.

p.s. Думаю то ещё нужна какая-то кнопка, при выбранной ручной сортировке, переключающая режим взаимодействия ПП со списком: редактирование(перестановка мест пользователей)/обычная работа), для того чтобы ПП случайно не перемещал пользователей.
"	san
