Для разработчиков

Теги

Тег в Пачке — это именованная группа сотрудников: «Дизайн», «Питер», «Дежурные». Отметьте тегом нужных сотрудников — и дальше зовите сразу всех: тег упоминают в сообщении и привязывают к чату.

Тег живёт в пространстве и не привязан к конкретному чату, поэтому один и тот же тег работает сразу везде, где он нужен. Когда состав команды меняется, достаточно поправить тег — чаты подтянутся сами.

Теги в чате

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

Тег привязывают к беседе или каналу — к чатам, у которых есть состав участников. Чат при этом должен быть активным: в архивном чате теги не меняются.

За привязку отвечают методы POSTДобавление тегов и DELETEИсключение тега. Оба относятся к составу участников и требуют скоуп chat_members:write. Текущие теги чата приходят в поле group_tag_ids объекта чата, и его же можно передать сразу при вызове POSTНовый чат.

Что нужноКак
Создать чат сразу с тегамиPOSTНовый чат, поле group_tag_ids
Добавить теги в существующий чатPOSTДобавление тегов
Убрать тег из чатаDELETEИсключение тега
Узнать теги чатаGETИнформация о чате, поле group_tag_ids
Добавление тега применяется в самом запросе, а исключение выполняется фоново. Сразу после успешного DELETE участники какое-то время ещё приходят в методе GETСписок участников чата.

Упоминание тега

Тег упоминается в тексте сообщения как @Дизайн — так же, как сотрудник. Уведомление получит каждый сотрудник тега, который состоит в этом чате.

В треде упоминание работает шире: сотрудники тега добавляются в сам тред, даже если в родительском чате их нет. Так тег собирает нужных сотрудников в обсуждение одной строкой. Отключается это параметром skip_invite_mentions метода POSTНовое сообщение — подробнее в руководстве по тредам.

Упоминания разбираются в момент отправки, поэтому тег, добавленный в текст позже методом PUTРедактирование сообщения, уведомление не рассылает.

Теги у сотрудника

Набор тегов сотрудника — это поле list_tags в методах POSTНовый сотрудник и PUTРедактирование сотрудника. В поле передаются названия тегов, а не идентификаторы, и присланный массив заменяет прежний набор целиком. Остальные поля сотрудника при этом можно не присылать.

  • Названия создают теги. Если тега с таким названием в пространстве ещё нет, он создаётся вместе с назначением. Отдельно заводить его методом POSTНовый тег не нужно.
  • Теги назначаются сотрудникам пространства. Для гостевых ролей поле не применяется.
Чтобы добавить сотруднику ещё один тег, прочитайте текущие теги методом GETИнформация о сотруднике и отправьте их вместе с новым. Если прислать только новый, прежние теги снимутся, а сотрудник выйдет из их чатов.

Назначение и снятие тега пишутся в журнал аудита событиями user_added_to_tag и user_removed_from_tag.

Как убрать из чата участника, которого добавил тег

Сотрудник, попавший в чат по тегу, остаётся в чате, пока действует тег. Поэтому убирают его через тег, а не через список участников:

  • снять с сотрудника тег через list_tags — тогда он выйдет из всех чатов этого тега;
  • убрать тег из чата методом DELETEИсключение тега — тогда выйдут все, кто попал в чат по этому тегу.

Если сотрудника добавили в чат два тега, после снятия одного он остаётся: второй продолжает действовать.

Методы для отдельных участников такого сотрудника из чата не выводят: DELETEВыход из чата отвечает 403, а DELETEИсключение пользователя отвечает 204 и оставляет состав прежним. Если вы меняете состав чатов из кода, проверяйте результат методом GETСписок участников чата.

Удаление тега и исключение тега из чата

Названия у операций похожие, а результат разный.

ОперацияЧто происходит с участниками чатов
DELETEИсключение тегаВыходят из чата все, кого в нём держал только этот тег
DELETEУдаление тегаОстаются во всех чатах, но уже сами по себе, без тега

Создатель чата остаётся в своём чате в обоих случаях.

Названия

Название задаётся при создании и меняется методом PUTРедактирование тега.

  • Не длиннее 255 символов.
  • Уникально в пространстве без учёта регистра: «Дизайн» и «дизайн» — один и тот же тег.
  • Без символа @ и не равно here или all — эти слова заняты системными упоминаниями.

Пробелы по краям обрезаются, а одно и то же название, присланное дважды, считается за один тег.

Поиск тега по названию

По идентификатору тег отдаёт метод GETИнформация о теге. Когда известно только название, теги ищутся параметром names метода GETСписок тегов: он принимает до 100 названий за один запрос.

Идентификаторы двух тегов одним запросом
GET /api/shared/v1/group_tags?names[]=Дизайн&names[]=Питер
Поле users_count объекта тега считает действующих сотрудников, а GETСписок сотрудников тега отдаёт всех, включая деактивированных. Поэтому число в users_count может быть меньше, чем длина списка.

Права

ДействиеКому доступно
Читать теги и их составВладелец, Администратор, Сотрудник, бот
Создавать, переименовывать и удалять тегиВладелец, Администратор
Менять теги сотрудникаВладелец, Администратор
Привязывать теги к чату и снимать ихУчастник беседы или канала

Какие скоупы доступны каждой роли — в руководстве Права и роли.

Теги в журнале аудита

Действия с тегами попадают в журнал аудита шестью событиями.

СобытиеКогда
tag_createdСоздан тег
tag_deletedУдалён тег
user_added_to_tagСотруднику назначен тег
user_removed_from_tagС сотрудника снят тег
tag_added_to_chatТег привязан к чату
tag_removed_from_chatТег отвязан от чата

Актором в событиях user_added_to_tag и user_removed_from_tag выступает сам сотрудник, а инициатор изменения приходит в details.initiator_id.