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

Доступы к чатам и сообщениям

Бот взаимодействует с пространством как участник с ролью «Сотрудник»: видит открытые каналы, а в остальные чаты и треды попадает, когда его туда добавляют.

ГдеКак бот туда попадаетЧто видит бот
Открытые каналыВидит без добавленияСообщения и треды — через API
Беседы и каналыБота добавляют участникомСообщения чата и все его треды
ТредБота зовут по нику в треде или добавляют участником тредаТред и его родительское сообщение
Личные сообщенияСотрудник пишет боту или бот пишет первымПереписку с сотрудником

События бот получает только из чатов и тредов, где состоит. Из открытого канала они тоже приходят, только если бота туда добавили. Какие события откуда приходят — в разделе Настройка и типы событий.

Беседы и каналы

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

Добавить бота в чат можно двумя способами:

  • Через интерфейс — в окне Добавление участников (в канале — Добавление подписчиков) на вкладке Боты.
  • Через API — методом POSTДобавление участников с id бота в member_ids.

Кому можно добавлять бота, решает настройка Кто может добавлять бота в чаты. Если вам нельзя, бота нет в окне добавления, а метод отвечает 403 с кодом bot_add_denied и не добавляет никого из запроса. Так же целиком отклоняется запрос с ботом, у которого включено Ограничить одним чатом и который уже состоит в беседе или канале.

Треды

Бота можно добавить в тред, не добавляя в родительский чат. Это сквозной тред: бот видит тред и его родительское сообщение, но не историю чата.

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

Личные сообщения

Написать боту в личные сообщения сотрудник может в трёх случаях:

  • Бот публичный — сотрудник находит его в поиске или на вкладке Обзор в витрине и нажимает Сообщение.
  • Есть общий чат — сотрудник и бот состоят в одной беседе или канале, и этот чат не в архиве.
  • Бот написал первым — методом POSTНовое сообщение с entity_type: "user". После этого сотрудник может отвечать, даже если бот не публичный.

Публикация в витрине сама по себе написать боту не позволяет: у опубликованного, но непубличного бота кнопки Сообщение нет, если с ним нет общего чата.

Бота нельзя добавить в существующие личные сообщения между двумя участниками пространства.

Как начинается разговор в личных сообщениях и почему первым пишет сотрудник — в разделе Общение с ботом.

Поиск бота

Поиск бота работает в трёх местах интерфейса Пачки, и логика выдачи в каждом своя.

Упоминание @ при написании сообщения

Одинаково для всех ролей, включая гостей и мульти-гостей:

  • Публичные боты — везде в пространстве, даже если у сотрудника нет с ними общих чатов.
  • Непубличные боты-участники текущего чата — дополнительно, когда @ набирается внутри этого чата.

Непубличные боты, не состоящие в текущем чате, в подсказках упоминаний не появляются.

Глобальный поиск пространства

Поиск из общей строки поиска и при создании личных сообщений ведёт себя по-разному в зависимости от роли:

  • Сотрудники и администраторы — видят и сотрудников, и публичных ботов в пространстве.
  • Гости и мульти-гости — видят только тех, с кем у них уже есть личные сообщения, а по запросу от трёх символов — ещё и участников общих чатов.

Непубличных ботов глобальный поиск не показывает никому, даже если бот уже писал сотруднику: такому боту отвечают в уже открытой переписке.

Список добавления участников в чат

Зависит от настройки Кто может добавлять бота в чаты каждого бота и роли того, кто добавляет:

  • Создатель бота — всегда видит ботов, которых он создал.
  • Администраторы — видят публичных ботов и ботов с настройками «Все участники (кроме гостей)» и «Создатель и Администраторы».
  • Сотрудники — видят публичных ботов и ботов с настройкой «Все участники (кроме гостей)».
  • Гости и мульти-гости — в выдаче пусто.

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