Получается довольно сложная схема, причём в разных компаниях она может быть ещё более сложной.
Хотелось бы настроить сервер мессенджера MyChat так, чтобы это всё работало автоматически.
Начиная с версии 5.22 добавлены необходимые функции скриптового движка и это легко сделать, создав скрипт на событие OnPrivateRequest. Я его назвал "PrivateRestrictionsByDepartments":
Текст скрипта:
function OnPrivateRequest(iCID, iUIN, iUINTo, iRole, iRoleReciever, iTask: integer): boolean;
var
sDeptFrom, sDeptTo, sUserName: string;
bFlag: boolean;
begin
bFlag := true;
// получаем названия групп в списках контактов пользователей
sDeptFrom := mGetUserDepartmentName(iUIN);
sDeptTo := mGetUserDepartmentName(iUINTo);
// если и получатель сообщения и отправитель находятся в
// общем списке контактов
if (length(sDeptFrom) > 0) and (length(sDeptTo) > 0) then begin
if sDeptFrom = 'Бухгалтерия' then begin
// бухгалтерия может писать всем, кроме отдела продаж
if sDeptTo = 'Отдел продаж' then bFlag := false;
end else
if sDeptFrom = 'Отдел продаж' then begin
// отдел продаж может писать всем, кроме бухгалтерии
if sDeptTo = 'Бухгалтерия' then bFlag := false;
end;
//------------------------------------------------------------------
if not bFlag then begin
sUserName := mGetUserAttribute(iUINTo, 'DisplayName');
mSendCustomMsgToClientConsoleByCID(iCID, 'Вам запрещено общаться с ' + sUserName,
'Error', true, true, 74);
end;
end;
result := bFlag;
end;
begin
end.
Задавайте любые вопросы, предлагайте усовершенствования.
Чат со мной