Чтобы люди не могли по ошибке отправить сообщение не туда. Максимально гибко, используя скриптовый движок MyChat.

Разные компании используют конференции в MyChat по-разному. Кто-то делает одну конференцию «main», куда включает всех сотрудников автоматически, просто чтобы иметь возможность для быстрого оповещения. Многие — делают конференции по отделам/подразделениям/департаментам, логически разделяя людей.

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

Кто-то любит открытые для входа и поиска конференции, кто-то — использует автосоздаваемые на сервере или скрытые конференции, куда можно попасть только по приглашению. Многим администраторам нравится защищать конференции паролем.

Кроме того, люди сами могут создавать конференции по своему усмотрению и приглашать туда коллег.

Гибкость даёт свободу в решениях: сочетай подходы и выбирай, что тебе подходит больше. И заодно больше возможностей накосячить 🙂

Ой, отправил не туда

Знакомая фраза в любом месенджере? Общая проблема — невнимательность людей. Часто человек загружен работой, и просто не обращает внимания, куда отправляет сообщение. Осознание приходит уже потом, когда сообщение отправлено, и другие люди получили уведомление про это.

Да, в чате есть плейсхолдеры, которые прямо в строке ввода показывают, где и кому пишет человек сообщение:

MyChat Client плейсхолдер для ввода текста, который показывает, куда будет отправлено сообщение

У всех пользователей 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.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *