Как исключить сотрудника из чата в коробочной версии Битрикс24

Без регистрации, отправки смс-сообщений и прав модератора.

В продолжение темы полезных скриптов и инструментов. Недавно мы рассмотрели пример кастомного решения, с помощью которого можно сменить владельца чата в коробочной версии Битрикс24. Сегодня мы реализуем скрипт, который позволит исключать пользователей из чата без получения прав модератора.

Механизм достаточно узконаправленный, но иногда в нем возникает необходимость. Например, модератор чата в данный момент недоступен, при этом есть острая необходимость исключить из чата одного или нескольких сотрудников. В этом нам поможет метод CIMChat::DeleteUser(). С исходным кодом можно ознакомиться здесь.

Функция принимает 5 значений. Первые 3 — нам уже знакомы:

$chatId — уникальный идентификатор чата
$userId — идентификатор нового владельца чата
$checkPermission — проверка прав. передаем false чтобы выполнять операцию мог не только модератор чата
$skipMessage и $skipRecent — отвечают за отключение отправки системного уведомления об исключении пользователя. Передаем true, напишем собственное уведомление

Рабочий механизм исключение пользователя из чата

Создадим HTML-форму:

<form method="post" action="?exclude_user=YES">
<div class="form-control">
  <div class="form-group">
    <label>ID чата</label>
    <input type="text" class="form-control" id="chatId" name="chatId">
  </div>
    <div class="form-group">
    <label>ID исключаемого пользователя</label>
    <input type="text" class="form-control" id="userId" name="userId">
  </div>
  </div>
  <button type="submit" id="send" name="send" class="btn btn-primary">Исключить пользователя</button>
</form>

Идентификатор чата, как нам уже известно из предыдущей статьи, можно узнать с помощью служебной команды /getChatId.
Код обработчика:

if (CModule::IncludeModule('im'))
{
$chatId = $_POST['chatId'];
$userId = $_POST['userId'];

//получаем данные о пользователе
$rsUser = CUser::GetByID($userId);
$arUser = $rsUser->Fetch();

$CElement = new CIMChat;
$change = $CElement->DeleteUser($chatId, $userId, false, true, true);

if ($change == 1){
   /*отправляем уведомление*/
    $ar = Array(
    "TO_CHAT_ID" => $chatId, // ID чата
    "FROM_USER_ID" => 0,
    "SYSTEM" => Y,
    "MESSAGE"  => "Администратор исключил ".$arUser['NAME']." ".$arUser['LAST_NAME']." из чата.",
   );
   CIMChat::AddMessage($ar);
echo 'Пользователь успешно исключен из чата!';
}else{
echo'В процессе выполнения скрипта возникла ошибка. ';
}
}

Опубликовано: 15 февраля 2020 года, в рубрике «Битрикс».

Оставить комментарий

5000
  Подписаться  
Уведомление о
Поблагодарить автора статьи
Зачем это нужно