Вс сен 15, 2019 5:32 pm Вс сен 15, 2019 5:32 pm
1. Формируем общий список контактов, убираем доступ к нему у всех групп прав, кроме администраторов и директора. В общем списке контактов есть все зарегистрированные пользователи. Удобно для руководства компании и админов.
2. Создаём группы пользователей на сервере, раздел "Пользователи", "Группы пользователей", по названиям компаний. Раскидываем туда пользователей.
3. Делаем на сервере автосоздаваемые конференции, по компаниям. Включаем туда уже созданные группы пользователей. Конференции скрытые, чтобы люди не могли свободно переходить и даже видеть эти конференции.
4. Выполняем скрипт для автоматического формирования личных контактов для удобной навигации людей в этих компаниях, чтобы можно было позвонить или написать человеку, которого нет онлайн. Скрипт выполняем по необходимости, вручную, либо навешиваем для выполнения раз в сутки, например.
Текст скрипта:
// ---------------------------------------
// Script created by Alexey Pikurov ([email protected])
// 15.09.2019 17:15:30
// ---------------------------------------
// Список групп, разделённых символом "|".
// Это названия компаний, работающих на нашем сервере,
// для которых надо сформировать личные списки контактов
const
GROUPS = 'IceCream Inc.' + '|' +
'FixIt Software';
var
sGroups, sCurrentGroup, sUINS, sBackup, s: string;
iUINOwner, iUIN: integer;
begin
sGroups := GROUPS;
while length(sGroups) > 0 do begin
sCurrentGroup := Fetch(sGroups, '|');
sUINS := mGetUsersListInGroupsByNames(sCurrentGroup); // получаем список пользователей группы
sBackup := sUINS; // делаем резервную копию для цикла ниже
while length(sUINS) > 0 do begin // перебираем пользователей группы
iUINOwner := StrToInt(Fetch(sUINS, ','));
mPersonalContactsClear(iUINOwner); // удаляем личный список контактов человека
s := sBackup;
while length(s) > 0 do begin // формируем ему новый личный список контактов
iUIN := StrToInt(Fetch(s, ','));
// если UIN человека не равен нашему собственному - добавляем его в список,
// название группы - название компании, в которой работает человек
if iUIN <> iUINOwner then mPersonalContactsAddUser(iUINOwner, iUIN, sCurrentGroup);
end;
// если пользователь онлайн - обновляем его личный список контактов
if mIsUINOnline(iUINOwner) then mPersonalContactsRefresh(iUINOwner);
end;
end;
end.
Как это выглядит на клиенте после выполнения скрипта:
Скрипт будет работать в новой версии MyChat, после 7.7.
Чат со мной