Чтобы люди не могли по ошибке отправить сообщение не туда. Максимально гибко, используя скриптовый движок MyChat.
Разные компании используют конференции в MyChat по-разному. Кто-то делает одну конференцию «main», куда включает всех сотрудников автоматически, просто чтобы иметь возможность для быстрого оповещения. Многие — делают конференции по отделам/подразделениям/департаментам, логически разделяя людей.
Другой подход — создавать конференции по проектам, куда включаются люди из разных подразделений, но работают в одной команде на время выполнения задачи.
Кто-то любит открытые для входа и поиска конференции, кто-то — использует автосоздаваемые на сервере или скрытые конференции, куда можно попасть только по приглашению. Многим администраторам нравится защищать конференции паролем.
Кроме того, люди сами могут создавать конференции по своему усмотрению и приглашать туда коллег.
Гибкость даёт свободу в решениях: сочетай подходы и выбирай, что тебе подходит больше. И заодно больше возможностей накосячить 🙂
Ой, отправил не туда
Знакомая фраза в любом месенджере? Общая проблема — невнимательность людей. Часто человек загружен работой, и просто не обращает внимания, куда отправляет сообщение. Осознание приходит уже потом, когда сообщение отправлено, и другие люди получили уведомление про это.
Да, в чате есть плейсхолдеры, которые прямо в строке ввода показывают, где и кому пишет человек сообщение:
У всех пользователей MyChat есть право для быстрого удаления своего сообщения, время регулируется на сервере. Можно быстро удалить своё случайно отправленное сообщение, кликнув по нему правой кнопкой мышки в чате:
Но хочется максимальной гибкости, чтобы ошибку нельзя было допустить и всё «работало само».
Как автоматически запретить отправлять случайные сообщения в общие конференции?
Это легко реализовать скриптом на сервере, который срабатывает на событие отправки нового сообщения в конференции OnConfMessage. Сервер «перехватывает» сообщение, смотрит, можно ли его отправлять, и, если всё ок, пропускает его. В противном случае сообщение «подавляется» и в клиентское приложение отправляется уведомление про то, что человек попытался отправить сообщение не туда.
В справке описан скрипт, в примере перечислены конференции, для которых работает ограничение, а также список групп пользователей, которых эти ограничения не касаются. Это могут быть администраторы, руководители проектов или сотрудники службы безопасности компании.
const
NOTIFY_FLAG = true; // true/false: notify a user that he can't write messages in a conference
RESTRICTED_CONFS = '|main|';
ALLOWED_ROLES = '|Administrators|Operators|NSS|';
function OnConfMessage(iCID, iUIN, iUID, iMsgType: integer; sConfName, sMsg: string): boolean;
var
sRoleName: string;
bFlag: boolean;
begin
bFlag := true;
if pos('|' + sConfName + '|', RESTRICTED_CONFS) <> 0 then begin
sRoleName := mGetUserRoleName(iUIN);
if pos('|' + sRoleName + '|', ALLOWED_ROLES) = 0 then begin
bFlag := false;
if NOTIFY_FLAG then
mSendCustomMsgToClientConsoleByCID(iCID,
'Sorry, but you can not send messages to the conference #' + sConfName,
'Status', true, true, 4);
end;
end;
result := bFlag;
end;
begin
end.
Пример простой, его можно дополнить, добавив рабочее время, дни недели, дату дедлайна, загружать список конференций из текстового файла, чтобы не править текст скрипта. Вообще добавить любую другую нужную вам логику. Основной подход останется прежним.