Общение с ботом
Бот работает там же, где работает команда: в личных сообщениях, беседах, каналах и тредах. Сотрудник пишет боту в личные сообщения, зовёт его по нику в обсуждении или пишет команду в чате, а бот отвечает там, где его позвали. Здесь — как бот узнаёт о сообщениях, понимает, что обращаются к нему, куда отвечает и что для этого настроить.
Агента позвали в чате, он отвечает тредом и зовёт туда коллегу
Где бот общается
- Личные сообщения — сотрудник пишет боту, или бот пишет первым.
- Беседы и каналы — бота добавляют участником, и он получает сообщения чата и всех его тредов.
- Треды — бота зовут по нику прямо в обсуждении, и он получает сообщения этого треда.
Так работают и AI-агенты: агента зовут по нику в чате или треде, а отвечает он тредом.
Кто может добавить бота или написать ему и что бот видит в каждом случае — в разделе Доступы к чатам и сообщениям.
Как бот узнаёт о сообщениях
О новых сообщениях бот узнаёт по исходящему вебхуку с событием Новые сообщения (message_new). Какие сообщения приходят, решает режим:
- Любые сообщения — все сообщения из чатов и тредов, где состоит бот. Нужен боту, который отвечает в личных сообщениях или на упоминание по нику.
- Начинающиеся с команд — только сообщения, первое слово которых есть в списке команд, например
/task. Подходит боту, которого вызывают командой.
Отдельного режима «только упоминания» нет: бот получает все сообщения и сам решает, обращаются ли к нему. Новый бот слушает только команды, а их список пуст, поэтому режим нужно выбрать. Подробнее о режимах — в разделе Настройка и типы событий.
Когда отвечать
В личных сообщениях к боту обращаются всегда. В беседах, каналах и тредах сотрудники пишут друг другу, и бот, который отвечает на каждое сообщение, мешает. Обычно бот отвечает:
- в личных сообщениях — на каждое сообщение, у них
entity_typeравен"user"; - на упоминание — в тексте сообщения (
content) есть@никбота; - на команду — сообщение начинается с команды бота;
- на продолжение разговора — например, в треде, где кроме бота только один сотрудник, можно отвечать и без упоминания. Состав треда показывает метод GETИнформация о чате с
chat_idиз события.
Свои сообщения бот пропускает: включите Игнорировать свои сообщения или сравнивайте user_id из события с идентификатором бота.
Свой id и ник бот узнаёт методом GETИнформация о профиле со своим токеном, а id есть и на вкладке API в карточке бота. Текст в content — markdown, который Пачка собирает из сообщения: в нём бывают цитаты и списки. Подробнее — в разделе Разметка в исходящих вебхуках.
Куда отвечать
Отвечайте там, откуда пришло сообщение. Это видно по entity_type и entity_id в событии:
| Откуда сообщение | entity_type | entity_id | Как ответить |
|---|---|---|---|
| Личные сообщения | user | Идентификатор сотрудника | С теми же entity_type и entity_id |
| Беседа или канал | discussion | Идентификатор чата | Тредом к сообщению: методом POSTНовый тред с id сообщения, затем ответ с entity_type: "thread" и id треда. Можно и прямо в чат — с теми же entity_type и entity_id |
| Тред | thread | Идентификатор треда | С теми же entity_type и entity_id. parent_message_id с id сообщения добавит к ответу цитату |
Поле thread показывает, к какому сообщению и в каком чате открыт тред. Агенту для ответа обычно нужны история треда и это родительское сообщение — как их прочитать, в разделе Взаимодействие с агентом.
В беседе или канале ответ тредом не теряется в ленте и не мешает остальным. Если у сообщения тред уже есть, метод POSTНовый тред вернёт его.
Пока бот готовит ответ, поставьте на сообщение реакцию методом POSTДобавление реакции и снимите её методом DELETEУдаление реакции после ответа: сотрудник сразу видит, что бот работает. Для агентов есть реакция agent-thinking с таймером — подробнее в разделе Взаимодействие с агентом.
К ответу можно приложить кнопки, а по нажатию открыть форму. Нажатия и отправленные формы приходят событием, если у бота включено Нажатие кнопок.
Что учесть в ответе
- Разметка. Ответ пишут в Markdown, список конструкций — в разделе Форматирование текста. Длинный отчёт удобнее прислать файлом
.md— подробнее в разделе Оформление ответов. - Упоминания. Сотрудника упоминают в тексте как
@nicknameили<@user_id>: по идентификатору Пачка сама подставит ник. Упомянутый в треде сотрудник становится участником треда. Чтобы только сослаться на коллегу, передайтеskip_invite_mentions: true— подробнее в разделе Участники треда. - Лимиты. Отправка сообщений ограничена по частоте и по числу сообщений в один чат за сутки — подробнее в разделе Лимиты.
Личные сообщения
Кто может написать боту в личные сообщения, зависит от того, публичный ли бот и есть ли у сотрудника с ним общий чат. Подробнее — в разделе Доступы к чатам и сообщениям.
Личный чат создаётся молча. Когда сотрудник открывает переписку с ботом, события об этом нет — ни о новом чате, ни о новом участнике. Бот узнаёт о сотруднике только из его первого сообщения, поэтому в личных сообщениях первый ход за сотрудником, если бот не написал сам.
Чтобы начать разговор самому, например поприветствовать нового сотрудника, бот отправляет сообщение методом POSTНовое сообщение с entity_type: "user" и идентификатором сотрудника в entity_id.
В личных сообщениях бот просит и доступ, когда ему нужны права самого сотрудника: присылает кнопку авторизации. Это отдельный путь со своими настройками — подробнее в разделах Авторизация от имени сотрудника и Чек-лист запуска.
Что настроить
Исходящий вебхук с адресом
На вкладке Исходящий вебхук нажмите Включить и укажите URL своего сервера. Адрес должен быть доступен из интернета: для разработки подойдёт туннель, а без входящих запросов — поллинг истории событий. Подробнее — в разделе Настройка и типы событий.
Событие о новых сообщениях и режим
Включите Новые сообщения и выберите режим: Любые сообщения — боту, которого зовут по нику или которому пишут в личные сообщения, Начинающиеся с команд со списком команд — боту с командами.
Если в ответах будут Data-кнопки или формы, включите и событие Нажатие кнопок: без него нажатия и отправленные формы до бота не дойдут. Те же настройки через API — в разделе Через API.
Проверка подписи и свои сообщения
Проверяйте подпись каждого запроса по Signing secret, чтобы отличать запросы Пачки от чужих. Включите Игнорировать свои сообщения, чтобы бот не реагировал на собственные ответы. Подробнее — в разделе Безопасность и обработчик.
Токен с нужными правами
Отвечать — messages:create, отвечать тредом — threads:create, ставить реакцию — reactions:write. Читать историю и состав чата — messages:read и chats:read, узнать свой id и ник — profile:read. Подробнее — в разделе Токены бота.
Вкладка «Исходящий вебхук» с настройками из шагов выше