Бот-аккаунты
Бот-аккаунт — это отдельная учётная запись для интеграции. Он работает с REST API по токену доступа и не привязан к конкретному сотруднику: если автор интеграции уйдёт из команды, интеграция продолжит работать.
Чем боты отличаются от обычных пользователей:
- не могут войти в Loop через интерфейс — только работать через API;
- не могут создавать других ботов;
- не учитываются в количестве пользователей лицензии;
- всегда отмечены меткой БОТ — в сообщениях, списках пользователей и в заголовке личной переписки.
В остальном бот ведёт себя как обычная учётная запись: его добавляют в команды и каналы, он публикует сообщения и ставит реакции.
Включение
По умолчанию создавать ботов через интерфейс и REST API нельзя (плагины могут всегда). Системный администратор включает эту возможность в Системная консоль > Интеграции > Учетные записи ботов > Включить создание учетной записи бота.
Создавать ботов и управлять ими по умолчанию могут только системные администраторы.
Создание бота
В интерфейсе
- Откройте Главное меню > Интеграции > Учетные записи ботов и нажмите Добавить учетную запись бота.
- Укажите Имя пользователя: 3–22 символа, начинается со строчной буквы, может содержать строчные буквы, цифры, точки, дефисы и подчёркивания, не заканчивается точкой.
- (Необязательно) Загрузите Значок бота, задайте Отображаемое имя и Описание.
- Выберите Роль: Участник (по умолчанию) или Администратор системы. Бот с ролью администратора получает все права системного администратора — назначайте её только при необходимости.
- (Необязательно) Включите дополнительные разрешения:
- сообщения:всем — писать во все каналы, включая личные сообщения;
- сообщения:каналы — писать во все публичные каналы.
- Нажмите Создать аккаунт бота и скопируйте токен доступа. После закрытия экрана посмотреть токен снова нельзя, но можно выпустить новый — кнопкой Создать новый токен в списке ботов.
- Добавьте бота в нужные команды и каналы так же, как обычного пользователя.
Через REST API
Создайте бота методом POST /api/v4/bots, затем выпустите ему токен методом POST /api/v4/users/{user_id}/tokens. Нужно разрешение на создание ботов.
Через mmctl
Существующего пользователя можно превратить в бота:
mmctl user convert ivan@example.ru --bot
Вместо email можно указать имя пользователя или ID. У пользователей, входивших по email и паролю, данные для входа удаляются. У пользователей из AD/LDAP и SAML они сохраняются, чтобы не нарушить синхронизацию.
Из плагина
Плагины создают ботов вспомогательной функцией EnsureBot. Владельцем такого бота считается плагин.
Работа через API
Передавайте токен бота в заголовке Authorization:
curl -i -H 'Authorization: Bearer <токен-бота>' https://your-loop-server.ru/api/v4/users/me
Опубликовать сообщение от имени бота:
curl -i -X POST -H 'Content-Type: application/json' \
-H 'Authorization: Bearer <токен-бота>' \
-d '{"channel_id": "<id-канала>", "message": "Сообщение от бота"}' \
https://your-loop-server.ru/api/v4/posts
Бот должен быть участником канала (или иметь разрешение сообщения:каналы / сообщения:всем).
Частые вопросы
Нужно ли переводить существующие интеграции на ботов?
Интеграции через REST API и плагины — желательно: создайте бота или преобразуйте существующую учётную запись и используйте его токен. Вебхуки и slash-команды всегда создаются от имени пользователя, перевести их на бота нельзя.
Что будет, если плагин хочет создать бота с именем существующего пользователя?
Допустим, плагин GitHub использует бота github, а на сервере уже есть обычный пользователь github. Тогда плагин будет публиковать сообщения от этого пользователя без метки БОТ, а в журнал сервера попадёт ошибка. Чтобы исправить, либо преобразуйте пользователя в бота (mmctl user convert github --bot), либо переименуйте пользователя и перезапустите плагин — он создаст бота заново.
Истекает ли токен бота?
Нет. Чтобы регулярно менять токен, автоматизируйте ротацию через REST API:
- Создайте новый токен.
- Обновите токен во всех сервисах.
- Отзовите старый токен.
Подробнее — в разделе Персональные токены доступа.
Может ли бот выдать себя за другого человека?
Бот может иметь любое отображаемое имя и изображение, но метка БОТ показывается везде, где он появляется: в сообщениях, списках пользователей и заголовке личной переписки.
Что происходит с ботами, если их владелец деактивирован?
По умолчанию боты деактивированного пользователя отключаются. Пользователи с правом управления ботами могут включить их снова в Главное меню > Интеграции > Учетные записи ботов. После этого рекомендуется выпустить новые токены.
Чтобы боты оставались включёнными, выключите Системная консоль > Интеграции > Учетные записи ботов > Отключить учетные записи ботов когда их владелец деактивирован (ServiceSettings.DisableBotsWhenOwnerIsDeactivated).
Может ли бот редактировать сообщения через API?
Свои сообщения — да. Если редактирование не работает, проверьте, не запрещено ли оно для роли участника в схеме разрешений. Бот с ролью Администратор системы может редактировать любые сообщения.
Нужен ли боту email при синхронизации с AD/LDAP или SAML?
Нет. Боты, созданные в Loop, не требуют адреса электронной почты и не зависят от синхронизации.