Opened 8 years ago

Closed 7 years ago

Last modified 6 years ago

#241 closed задача (fixed)

Настройки: Конференции->Подключение в диспетчерскую

Reported by: san Owned by: alx
Priority: blocker Milestone: 2 очередь
Component: ПО MC04-Dispatcher. Пульт диспетчера/техника Keywords: work logic
Cc:

Description (last modified by san)

Добавить настройку и реализовать варианты поведения программы.
На вкладку "Конференции" добавить пункт
Подключение в диспетчерскую: <выпадающий список>
варианты:

вручную <вариант по умолчанию>
Пользователь сам подключается к диспетчерской когда хочет.

автоматически
Если пользователь "свободен"(не занят в другой конференции), программа автоматически подключает пользователя в Диспетчерскую когда в диспетчерской появляется новый абонент(но не техник/диспетчер).
+ дополнение - #401

постоянное
Программа подключает пользователя в диспетчерскую как только он "свободен" (не занят в другой конференции)

принудительное

  • Программа подключает пользователя в диспетчерскую как только он "свободен".
  • если пользователь занят в другой конференции, а в диспетчерскую подключается новый абонент(любой), програма переключает пользователя в диспетчерскую не спрашивая разрешения

Attachments (2)

console.log (34.9 KB ) - added by san 8 years ago.
debug.log (236.4 KB ) - added by san 8 years ago.

Download all attachments as: .zip

Change History (52)

comment:1 by san, 8 years ago

Description: modified (diff)

comment:2 by san, 8 years ago

Description: modified (diff)

comment:3 by dimag, 8 years ago

Keywords: work logic added
Resolution: fixed
Status: newclosed

comment:4 by san, 8 years ago

Resolution: fixed
Status: closedreopened
  • не правильно работают режимы постоянное и принудительное (объяснил устно)
  • в режиме принудительное логично переносить селект в диспетчерскую при переносе пользователя
Last edited 8 years ago by san (previous) (diff)

comment:5 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

comment:6 by dimag, 8 years ago

Открою снова, протестирую когда будет нормально происходить разрвы конференции без внезапного пропадания соединения.

comment:7 by dimag, 8 years ago

Resolution: fixed
Status: closedreopened

comment:8 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

после закрытия дефекта 257 проверил работу программы.
Всё заработал нормально, поэтому я закрываю этот дефект.

comment:9 by san, 8 years ago

Resolution: fixed
Status: closedreopened

Баги в режимах "принудительное" и "постоянное"

  1. При попытке переключить пользователя из Диспетчерской в новую конференцию результат: пользователь присутствует и там и там.
  1. При проблемах сетевого соединения пользователь может оказаться не учавствующим не в одной конференции, что противоречит описанию этих режимов

comment:10 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r311.
Может возникнуть ситуация когда пользователь удалился из диспетчерской, но сообщение о его добавление в новую конференцию не пришло, тогда возникает ситуация когда нет пользователя ни в одной конференции и я снова добавляю его в диспетчерскую.
Порядок прихода сообщений от разных конференций неопределённый.

in reply to:  10 comment:11 by alx, 8 years ago

Replying to dimag:

Может возникнуть ситуация когда пользователь удалился из диспетчерской, но сообщение о его добавление в новую конференцию не пришло,

В каких случаях и по какой причине может возникнуть такая ситуация?

in reply to:  9 comment:12 by alx, 8 years ago

Replying to san:

  1. При проблемах сетевого соединения пользователь может оказаться не учавствующим не в одной конференции, что противоречит описанию этих режимов

Саша, а как ты представляешь себе участие пользователя в конференции при отсутствии у него связи? В описанной ситуации по-моему ничего сделать невозможно, пока связь не появится снова...

comment:13 by san, 8 years ago

Имелась в виду ситуациия когда у пользователя были проблемы с подключением, а затем когда подлючение возобновилось, пользователь так остался не подключеным к конференции

in reply to:  13 comment:14 by alx, 8 years ago

Replying to san:

а затем когда подлючение возобновилось, пользователь так остался не подключеным к конференции

Тогда да, это баг. Это исправлено в r311?

comment:15 by san, 8 years ago

Resolution: fixed
Status: closedreopened

в r328 конкретно этот баг воспроизвести не удалось.
Но всё-равно после различных действий( например многократных добавлений-отключений) пользователь оказывался не подключеным ни к одной конференции.
(речь о режимах постоянное и принудительное)

comment:16 by san, 8 years ago

и ещё

  • в режиме автоматически пользователь автоматически подключается к Диспетчерской когда туда входит абонент с ролью техник/диспетчер, это неправильно(см. тикет)

in reply to:  15 comment:17 by alx, 8 years ago

Replying to san:

Но всё-равно после различных действий( например многократных добавлений-отключений)

Наверное имеет смысл лог работы программы приложить, если нет надежного сценария для воспроизведения бага...

comment:18 by san, 8 years ago

Дима, нужен лог? какой из?
попробую воспроизвести с записью лога

comment:19 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

r331
Замечание -
•в режиме автоматически пользователь автоматически подключается к Диспетчерской когда туда входит абонент с ролью техник/диспетчер, это неправильно(см. тикет)
В версии 328, 331 я использую другой алгоритм работы, чем r311, так что ошибочная ситуация с пропаданием не должна повторяться.

comment:20 by san, 8 years ago

Priority: criticalblocker
Resolution: fixed
Status: closedreopened

в r341 регрессия
пользователь перестал подключяться к основной конференции в режиме Автоматически

in reply to:  19 comment:21 by san, 8 years ago

Replying to dimag:

В версии 328, 331 я использую другой алгоритм работы, чем r311, так что ошибочная ситуация с пропаданием не должна повторяться.

В r341 снова воспроизвёл баг в режиме принудительное:
Эксперимент:

  • Два Техника в сети один в режиме постоянное(СуперТ<3>), другой в принудительное(Техник4<4>)
  • при многократных отключениях пользователь Техник4 остался никуда не подключеным

Воспроизводится довольно легко.
В основном логе видно что после 2016-08-19 15:57:48.800 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская. пользователь Техник4 не пожелал более подключаться к основной конф.
Прилагаю все логи:
debug.log
console.log

Основной лог:

2016-08-19 15:56:31.297 [INFO ] >>>Программа запущенна
2016-08-19 15:56:31.298 [INFO ] >>>Конфигурация загружена
2016-08-19 15:56:31.311 [INFO ] >>>Начат процесс подключения к FreeSwitch серверу
2016-08-19 15:56:35.248 [INFO ] >>>Подсистема SIP успешно инициализированна
2016-08-19 15:56:36.288 [INFO ] >>>Соединение по SSH успешно установленно
2016-08-19 15:56:36.980 [INFO ] >>>Подключение к FreeSwitch серверу через систему ESL прошло успешно
2016-08-19 15:56:39.888 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:32.049 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:32.466 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:57:33.133 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:33.862 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:34.882 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:36.160 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:57:37.956 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:57:38.605 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:39.136 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:39.863 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:40.891 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:41.394 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:42.175 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:43.691 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:57:45.435 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:57:45.858 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:46.610 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:47.304 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:48.294 [INFO ] >>>>>> Абонент Техник 4 добавлен в конференцию Диспетчерская.
2016-08-19 15:57:48.800 [INFO ] >>>>>> Завершение вызова абонента Техник 4 в конференцию Диспетчерская.
2016-08-19 15:57:49.546 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:57:50.308 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:57:51.267 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:57:51.986 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:57:53.749 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:58:13.791 [INFO ] >>>>>> Завершение вызова абонента Супер Т в конференцию Диспетчерская.
2016-08-19 15:58:15.054 [INFO ] >>>>>> Абонент Супер Т добавлен в конференцию Диспетчерская.
2016-08-19 15:58:57.034 [INFO ] >>>Выход из программы, было подключение к Freeswitch серверу
Last edited 8 years ago by san (previous) (diff)

by san, 8 years ago

Attachment: console.log added

by san, 8 years ago

Attachment: debug.log added

comment:22 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

в r352 не проявилось, после 15 попыток.

comment:23 by san, 8 years ago

r352 ещё нет в репозитории

in reply to:  22 comment:24 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

Replying to dimag:

в r352 не проявилось, после 15 попыток.

Дима, правильно ли я понял, что changeset:352 исправляет заявленную проблему?

Replying to san:

r352 ещё нет в репозитории

Саша, если тикет закрыт как fixed, а указанного в комментарии changeset'а нет, сразу переоткрывай тикет.

На данный момент r352 в репозитории есть, но, там, похоже, изменены только какие-то стили и ширина чего-то. Очевидно, этот коммит не мог исправить проблему, заявленную в данном тикете. Комментарий к changeset:352, как обычно, "ни о чем" - сути сделанный изменений не отражает. Тикет переоткрываю.

comment:25 by san, 8 years ago

Т.е. судя по всему Дима надеется, что оно само прошло?
:-D

comment:26 by san, 8 years ago

воспроизвёл в r354
Просто тупо постоянно нажимал крестик в Диспетчерской у Техника, примерно на 10-й раз Техник не захотел подключаться "принудительно".

comment:27 by san, 8 years ago

Дим, пожалуйста выкладывай в репозиторий и в "Ip диспетчерскую" одновременно новые версии
а то у меня уже есть r354, а в репозитории нет

comment:28 by dimag, 8 years ago

Resolution: fixed
Status: reopenedclosed

Оно было исправленно где-то раньше, я не могу точно сказать номер ревизии

in reply to:  26 comment:29 by san, 8 years ago

Дима???

Replying to san:

воспроизвёл в r354
Просто тупо постоянно нажимал крестик в Диспетчерской у Техника, примерно на 10-й раз Техник не захотел подключаться "принудительно".

comment:30 by san, 8 years ago

Resolution: fixed
Status: closedreopened

in reply to:  28 comment:31 by san, 8 years ago

Replying to dimag:

я не могу точно сказать номер ревизии

Для этого cуществуют коментарии к changeset'ам

in reply to:  28 comment:32 by alx, 8 years ago

Replying to dimag:

Оно было исправленно где-то раньше, я не могу точно сказать номер ревизии

Чтобы Вы (и не только Вы, а любой другой) могли его сказать, пишите в комментариях к коммитам суть сделанных изменений.

Вау, Саша меня опередил. :)

Last edited 8 years ago by alx (previous) (diff)

comment:33 by san, 8 years ago

Resolution: fixed
Status: reopenedclosed

По поводу бага создал отдельно #338
этот тикет закрываю

comment:34 by san, 8 years ago

Description: modified (diff)

comment:35 by alx, 7 years ago

Resolution: fixed
Status: closedreopened

Тикет переоткрыт, так как старый код, реализовывавший требуемую логику подключения, был удален из программы.

comment:36 by alx, 7 years ago

Owner: changed from dimag to alx
Status: reopenedassigned

comment:37 by alx, 7 years ago

В r737 реализован режим подключения "Автоматически".

comment:38 by alx, 7 years ago

In 740/dispatcher:

Реализован метод подключения к основной конференции "Постоянно": обрабатывается сигнал
dispatcherLeftConference() от модели списка конференций, и если диспетчер свободен,
он подключается к основной конференции. See #241.

comment:39 by alx, 7 years ago

Саша, поясни, пожалуйста, режим "Принудительно". В его описании говорится:

...програма переключает пользователя в диспетчерскую...

Верно ли я понял, что под "переключает" понимается трансфер из текущей конференции в основную? То есть в результате диспетчер перестает быть в текущей конференции (где он был до прихода пользователя в основную) и перемещается в основную?

Last edited 7 years ago by san (previous) (diff)

comment:40 by alx, 7 years ago

И еще вопрос. Допустим, установлен режим подключения "Принудительно", диспетчер находится сразу в нескольких конференциях, но не в основной. В это время в основную конференцию кто-то вошел. Из какой из конференций, где участвует диспетчер, он должен быть перемещен в основную? Из любой абы-какой, или она должна выбираться по какой-то логике?

comment:41 by san, 7 years ago

Верно ли я понял, что под "переключает" понимается трансфер из текущей конференции в основную? То есть в результате диспетчер перестает быть в текущей конференции (где он был до прихода пользователя в основную) и перемещается в основную?

Да.

В нашей неявной постановке задачи считается что Диспетчер может находиться только в одной конференции в определённый момент времени. Т.е. если Диспетчер присутствовал в конф.А, то при добавлении Диспетчера в конф Б. он должен покинуть конф. А. в любом случае.

(вместо написания коммента, поправил твой, извини Алексей, вернул как было)

in reply to:  41 comment:42 by alx, 7 years ago

Replying to san:

если Диспетчер присутствовал в конф.А, то при добавлении Диспетчера в конф Б. он должен покинуть конф. А. в любом случае.

Понятно. Де-факто сейчас такого ограничения нет. Надо подумать, как его ввести...

(вместо написания коммента, поправил твой, извини Алексей, вернул как было)

Ничего страшного, вернул ведь... :)

comment:43 by alx, 7 years ago

Тут был комментарий "мимо кассы" из другого проекта. Убрал чтобы никого не путал.

Last edited 7 years ago by alx (previous) (diff)

comment:44 by san, 7 years ago

мимо :)

comment:45 by alx, 7 years ago

Resolution: fixed
Status: assignedclosed

In 743/dispatcher:

Реализован режим подключения к основной конференции "Принудительное". Closes #241.

in reply to:  description comment:46 by alx, 7 years ago

Replying to san:

принудительное

  • если пользователь занят в другой конференции, а в диспетчерскую подключается новый абонент(любой), програма переключает пользователя в диспетчерскую не спрашивая разрешения

Какая-то диверсия получается... :)

Допустим, диспетчер говорит с кем-то в неосновной конференции. В это время кто-то входит в основную конференцию. Диспетчер переключается туда. При этом, если переключение застало его говорящим, он даже не заметит, что говорит уже другим людям в другую конференцию... :)

comment:47 by alx, 7 years ago

In 744/dispatcher:

Исправлена ошибка: не выполнялось подключение диспетчера к конференции при старте программы,
если установлен режим подключения "Постоянное" или "Принудительное", и диспетчер свободен.
See #241.

comment:48 by san, 7 years ago

Какая-то диверсия получается... :)

Вроде того)
При подключении в конференцию обычно какой-то звук проигрывался, так-что заметит скорее всего.

comment:49 by san, 7 years ago

Description: modified (diff)

comment:50 by san, 6 years ago

Milestone: Текущее2 очередь

Milestone renamed

Note: See TracTickets for help on using tickets.