Ошибка 401 Unauthorized при первом запросе к Yandex Messenger API почти всегда означает, что токен бота получен не в том разделе административной консоли или передан без префикса OAuth в заголовке авторизации. Прежде чем разбирать код, проверьте, что бот создан именно в интерфейсе Яндекс 360 для бизнеса, а токен скопирован целиком, без пробелов и переносов строк.
API Мессенджера предназначен для организаций, использующих Яндекс 360: через него боты отправляют уведомления, отвечают сотрудникам в чатах и встраиваются во внутренние процессы компании. Это не публичный API для личных аккаунтов — доступ привязан к корпоративной организации, и без прав администратора подключить интеграцию не получится. Ниже разберём архитектуру, порядок подключения и типичные проблемы, с которыми сталкиваются разработчики.
Что представляет собой API Яндекс Мессенджера
Yandex Messenger API — это REST-интерфейс, через который внешние приложения взаимодействуют с чатами корпоративного мессенджера. Основные сущности — боты, чаты, сообщения и пользователи организации. Бот выступает отдельным «участником» чата: его можно добавить в групповую беседу или написать ему в личные сообщения.
Обмен данными идёт по HTTPS в формате JSON. Запросы аутентифицируются токеном, который передаётся в HTTP-заголовке. Поскольку состав методов и их параметры периодически меняются, точные адреса эндпоинтов и поля запросов следует сверять с актуальной официальной документацией Яндекса — устаревшие примеры из статей двухлетней давности могут не работать.
- 🤖 Боты — программные аккаунты, которые отправляют и принимают сообщения от имени интеграции.
- 💬 Чаты — личные и групповые беседы, в которых бот состоит как участник.
- 🔑 OAuth-токен — ключ доступа, выдаваемый при регистрации бота.
- 📡 Вебхуки — механизм получения событий о новых сообщениях на ваш сервер.
Требования и подготовка к подключению
Для работы с API потребуется организация в Яндекс 360 для бизнеса с активированным Мессенджером и учётная запись с правами администратора. Без административного доступа раздел управления ботами будет недоступен, и это одна из самых частых причин, почему разработчик «не видит» нужных настроек.
Со стороны вашей инфраструктуры понадобится сервер с публичным HTTPS-адресом, если планируется принимать события через вебхуки. Для простых сценариев — например, только отправки уведомлений из CRM — достаточно любого скрипта, способного выполнять HTTP-запросы: Python, Node.js, PHP или даже curl из планировщика задач.
⚠️ Внимание: токен бота даёт полный доступ к его действиям в чатах организации. Не публикуйте токен в репозиториях, не передавайте его в клиентский код и храните в переменных окружения или менеджере секретов.
Создание бота и получение токена
Регистрация бота выполняется в административной панели Яндекс 360. Точное расположение раздела может отличаться в зависимости от текущей версии интерфейса, поэтому ориентируйтесь на официальную справку: обычно управление ботами находится в настройках Мессенджера или в разделе интеграций организации.
После создания боту задаётся имя и аватар, а система выдаёт токен доступа. Скопируйте его сразу и сохраните в надёжном месте — в ряде интерфейсов токен показывается ограниченно или требует перевыпуска при утере. Проверить работоспособность токена можно простым запросом к API из терминала:
curl -H "Authorization: OAuth ВАШ_ТОКЕН" https://api.messenger.yandex.net/...
Конкретный путь запроса возьмите из документации — базовый адрес и версии API могут обновляться. Если в ответ приходит ошибка авторизации, значит, токен невалиден, отозван или заголовок сформирован неверно.
☑️ Подготовка к интеграции
Отправка сообщений и работа с чатами
Базовый сценарий — отправка сообщения в чат. Для этого нужно знать идентификатор чата или логин пользователя, которому адресовано сообщение. Идентификаторы чатов бот получает либо через события вебхука, либо после того, как его добавили в беседу. Вам нужно учитывать: бот не может писать первым любому сотруднику — как правило, требуется, чтобы пользователь начал диалог или бота добавили в чат.
Текст сообщений передаётся в теле POST-запроса в формате JSON. Помимо plain text API поддерживает форматированные блоки, однако набор поддерживаемых типов контента зависит от текущей версии платформы. Перед проектированием сложных карточек и кнопок сверьтесь с документацией, чтобы не заложиться на функции, которых пока нет.
Вебхуки: получение событий в реальном времени
Чтобы бот реагировал на входящие сообщения, настраивается вебхук — URL вашего сервера, на который платформа отправляет HTTP-запросы при новых событиях. Сервер должен отвечать быстро и корректным статусом, иначе доставка событий может считаться неуспешной и повторяться или прекращаться.
Типичные причины, почему вебхук «молчит»: недоступность сервера извне, самоподписанный TLS-сертификат, блокировка файрволом или неверный код ответа обработчика. Диагностику удобно начинать с логирования всех входящих запросов на стороне сервера и проверки доступности URL внешним сервисом проверки портов.
⚠️ Внимание: обработчик вебхука должен быть идемпотентным. Повторная доставка одного события — штатная ситуация, и без защиты от дублей бот может отправлять пользователю одинаковые ответы несколько раз.
Как отладить вебхук локально
Используйте туннелирующие сервисы (например, ngrok), чтобы временно выставить локальный сервер наружу по HTTPS. Укажите полученный URL в настройках вебхука, отправьте боту тестовое сообщение и наблюдайте входящие запросы в консоли. После отладки перенесите обработчик на постоянный сервер и обновите адрес вебхука.
Типичные ошибки и их диагностика
Большинство проблем при интеграции сводится к нескольким повторяющимся сценариям. Таблица ниже поможет быстро сориентироваться по симптомам.
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Ошибка авторизации (401) | Неверный или отозванный токен | Заголовок Authorization, перевыпуск токена |
| Ошибка доступа (403) | Бот не состоит в чате | Добавить бота в беседу, проверить права |
| Сообщение не доставляется | Неверный идентификатор чата или пользователя | Актуальный ID из события вебхука |
| Вебхук не получает события | Сервер недоступен или отвечает ошибкой | Логи сервера, TLS-сертификат, код ответа |
| Дубли ответов бота | Повторная доставка события | Дедупликация по идентификатору события |
Если запрос возвращает ошибку формата (коды 4xx), внимательно сравните тело запроса со схемой из документации: лишние поля, неверные типы данных и неэкранированные символы в JSON — частые виновники. Всегда логируйте полное тело ответа API: текст ошибки в нём обычно указывает на конкретное поле, которое не прошло валидацию.
Ограничения и безопасность
Платформа может применять ограничения на частоту запросов, поэтому в коде стоит предусмотреть обработку ответов о превышении лимитов и повторные попытки с задержкой. Точные значения лимитов указываются в документации и могут различаться для разных методов — не закладывайте в архитектуру неограниченную частоту отправки.
С точки зрения безопасности необходимо ограничить круг лиц, имеющих доступ к токену, периодически проверять активность бота и отзывать токен при смене ответственного разработчика. Если бот обрабатывает персональные данные сотрудников, согласуйте сценарии с требованиями внутренней политики организации.
Что делать при компрометации токена
Немедленно перевыпустите токен в административной панели — старый при этом перестанет работать. Обновите значение во всех сервисах, где он использовался, и проверьте логи на предмет подозрительных запросов за период возможной утечки.
FAQ: частые вопросы
Можно ли использовать API Мессенджера без Яндекс 360 для бизнеса?
Нет, API ориентирован на корпоративных пользователей и требует организации в Яндекс 360 с правами администратора. Для личных аккаунтов такой интеграции не предусмотрено.
Может ли бот первым написать любому сотруднику?
Как правило, нет: обычно требуется, чтобы пользователь начал диалог с ботом или бота добавили в групповой чат. Точные правила зависят от текущих настроек платформы.
На каком языке программировать интеграцию?
На любом, который умеет выполнять HTTPS-запросы и работать с JSON: Python, Node.js, PHP, Go и другие. Официальные SDK, если они доступны, уточняйте в документации.
Почему бот отвечает на одно сообщение несколько раз?
Вероятная причина — повторная доставка события вебхуком. Реализуйте дедупликацию: сохраняйте идентификаторы обработанных событий и игнорируйте повторы.
Где найти актуальные адреса методов API?
Только в официальной документации Яндекса для разработчиков. Сторонние статьи и примеры могут содержать устаревшие эндпоинты и параметры.