Любые идеи по развитию MyChat. Запросы на новые функции, предложения по улучшению уже работающих сервисов. Если вы знаете, что нужно добавить в MyChat — welcome!
Аватара пользователя
March Tom-Cat
Довольно интересный разговор недавно у меня произошел с пользователем, причем это уже не в первый раз (см. скрин)...
Собственно предложение заключается в следующем:
1. Добавить со стороны сервера настройку на главный канал "Выдавать предупреждение о посте сообщения". Если эта настройка включена, то у пользователя должно появляться диалоговое окошко "Вы уверены, что хотите отправить сообщение в общий канал предприятия?".
2. Добавить подобную же настройку со стороны клиента, с тем же эффектом что и на сервере.
3. Добавить настройку со стороны клиента, при включении которой, нельзя отправить сообщение в главный канал.

А то народ уже пугаться начал... и заранее просит бан на год... [smilie=lol.gif]
Да и пропадет ситуация, когда пишешь сообщение пользователю, и перед самой отправкой сообщения получаешь сообщение в главном канале. Ну и твое сообщение уходит в главный канал, а не пользователю... [smilie=shok.gif]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
В MyChat нет понятия "Главный канал". В нём может быть сколько угодно конференций.

Вам они вообще нужны?
Аватара пользователя
March Tom-Cat
Да, каюсь, он в настройках называется как "Общий канал".
Нужен. Рассылками пользователи пользуются не охотно, а вот в "Общем канале" пишут с удовольствием, иногда даже слишком много... [smilie=biggrin.gif]
Аватара пользователя
Алексей Пикуров
То есть нужно запретить всем туда писать, насколько я понял. Вариант с переспрашиванием "а вы точно хотите" - это не вариант, как вы понимаете, проблему надо решать иначе.
Аватара пользователя
March Tom-Cat
Лучше сделать настройку. Будет более универсально. Т.е. поставил пользователь себе запрет - и избавился от случайной отправки сообщений в общий канал, захотел отправить - снял запрет, отправил, и опять поставил. Просто и эффективно. [smilie=beach.gif]
Аватара пользователя
Алексей Пикуров
Переспрашивание ничего не даст, будут бездумно жать "Ок". А вот ограничение на отправку сообщений по какому-то признаку - это более правильный вариант.

Чем-то похоже на права групп пользователей, но с другой "механикой". Чтобы в конференции можно было указать, кому можно отправлять тут сообщения, а кому только читать.
Аватара пользователя
March Tom-Cat
Согласен, и с идеологией безопасности согласовывается. [smilie=good.gif]
Аватара пользователя
Алексей Пикуров
Будем делать в будущих версиях.
Аватара пользователя
March Tom-Cat
Подниму тему.
Задача актуальная до сих пор.
Как вариант можно добавить настройку в группу прав "Разрешить писать в общий канал".
Либо пойти от противного и сделать настройку к "Общему каналу" где указывается кому РАЗРЕШАЕТСЯ писать в общий канал.
Аватара пользователя
Алексей Пикуров
Думаю, вашу задачу проще всего будет решить серверным скриптом. Сейчас сделаю пример и расскажу, что делать. Нужно будет обновиться на последнюю версию (5.23), свежую сборку.
Аватара пользователя
Алексей Пикуров
1. Обновите сервер, https://nsoft-s.com/files/mcserv.zip Версия та же (5.23), но сборка свежая. Клиентов обновлять не нужно (если они у вас 5.23, естественно).

2. Сделайте скрипт на событие OnConfMessage. Смысл его работы хорошо описан в справке, в комментарии к примеру. Пример:

Код: Выделить всё
function OnConfMessage(iCID, iUIN, iUID, iMsgType: integer; sConfName, sMsg: string): boolean;
var
  bFlag: boolean;
begin
  bFlag := true;
 
    if sConfName = 'main' then begin
      if iUIN <> 3 then bFlag := false;
    end;

  result := bFlag;
end;

begin

end.

В админке сервера это выглядит так:

onconfmessage.png

Поменяйте его под ваши нужды и пользуйтесь на здоровье :)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алексей Пикуров
Разобрались со скриптом? Есть по нему вопросы?
kolyzey
Есть ! В скриптах не силен - можно коментарии по каждому пункту ? :)
Аватара пользователя
Алексей Пикуров
Если название конференции = "main" и идентификатор пользователя не равен 3, то сообщение в конференцию не пропустить. Как-то так.
kolyzey
Главный канал main называется?
Сделал скрипт - то сообщения всё равно отправляются в главный канал.
Аватара пользователя
Алексей Пикуров
kolyzey писал(а):Главный канал main называется?
Сделал скрипт - то сообщения всё равно отправляются в главный канал.

Сделайте отдельную тему, выложите исходник своего скрипта и опишите, что конкретно именно вы хотите получить, там и разберёмся. Окей?
Аватара пользователя
Slider
Алексей Пикуров писал(а):1. Обновите сервер, https://nsoft-s.com/files/mcserv.zip Версия та же (5.23), но сборка свежая. Клиентов обновлять не нужно (если они у вас 5.23, естественно).

2. Сделайте скрипт на событие OnConfMessage. Смысл его работы хорошо описан в справке, в комментарии к примеру. Пример:


В админке сервера это выглядит так:

onconfmessage.png

Поменяйте его под ваши нужды и пользуйтесь на здоровье :)


То есть данное решение предполагает разрешение писать в канал определенному UIN-у?
Лично мне думается это логичнее реализовать на подобие функции "Игнор".
Только наоборот. И в роли блокируемых были бы названия каналов, и запрет на отправку сообщения.
Аватара пользователя
Алексей Пикуров
Решение делалось на запрос клиента, оно решает конкретную задачу. Не требуя какой-либо доработки MyChat Client или сервера.
Лично мне думается это логичнее реализовать на подобие функции "Игнор".
Только наоборот. И в роли блокируемых были бы названия каналов, и запрет на отправку сообщения.

Нет проблем, если вам это нужно, можем доработать сервер и клиент для вас.
Аватара пользователя
March Tom-Cat
Алексей Пикуров писал(а):1. Обновите сервер, https://nsoft-s.com/files/mcserv.zip Версия та же (5.23), но сборка свежая. Клиентов обновлять не нужно (если они у вас 5.23, естественно).
[Мыши погрызли]
Поменяйте его под ваши нужды и пользуйтесь на здоровье :)

Спасибо, как временное решение пойдет.
Но именно как временное. У меня 400 лицензий, если придется хотя бы половину туда вбить... [smilie=biggrin.gif]
Сами понимаете - будет жуть. Да и ошибиться с УИНом очень легко.
Аватара пользователя
Алексей Пикуров
Проверка UIN — это самое простое, для примера. Зачем туда вбивать 400 UIN-ов?? :)
Формализуйте, кому можно говорить, кому нет.

Есть же ещё группы пользователей, группы прав. Куча вариантов. Опишите подробно логику, кому отправлять сообщения в конференцию можно, а кому — нельзя.
kolyzey
Мне бы хотелось - что б только админ (член группы администраторы) мог добавлять сообщения
Аватара пользователя
Алексей Пикуров
Без проблем, воспользуйтесь функцией mGetUserRoleName. UIN у вас есть в событии.
Аватара пользователя
March Tom-Cat
Алексей Пикуров писал(а):Опишите подробно логику, кому отправлять сообщения в конференцию можно, а кому — нельзя.

В том-то и дело, что не к чему привязывать больше. На текущий момент 21 пользователь в списке из 400.
Сделал на основе "case".

P.S. Такая конструкция прокатит?:
case iUIN of
345:
278:
178: bFlag := true;
else bFlag := false;
end;
Аватара пользователя
Алексей Пикуров
Что мешает создать группу пользователей и засунуть туда всех нужных, а в скрипте проверять принадлежность к группе, а не строить многоуровневый case?

По скриптам давайте в соответствующий раздел.