В этой статье разберём, как связать n8n с Яндекс Мессенджером: создать бота, принять запрос через Webhook и отправить пользователю ответ — текстом или файлом.
ITCost с первого дня работы, с 2018 года, выбрал стек технологий Яндекса для построения корпоративной инфраструктуры. Это помогло нам избежать сложного переезда с технологий Microsoft в 2022 году.
Почтовый домен мы делегировали Яндекс Почте и сразу получили SSO (Single Sign-On), который используем вместо Microsoft Active Directory. Если вы до сих пор работаете с Microsoft Active Directory, Microsoft Exchange или аналогичными сервисами, можно настроить интеграцию с сервисами Яндекса, а затем подключить сотрудникам ботов и другие корпоративные инструменты. Для части продуктов Яндекс развивает локальные (on-premise) решения — за обновлениями стоит следить отдельно.
В панели администрирования Яндекса откройте раздел «Мессенджер» → «Боты» и создайте нового бота. После создания сохраните API-ключ: он понадобится для авторизации запросов к Bot API.
Раздел «Мессенджер» → «Боты» в панели администрирования Яндекса.
В панели n8n нажмите «+», найдите ноду Webhook и создайте её. Для примера используется метод POST. В продакшене лучше заранее продумать защиту входящего Webhook: секретный путь, проверку подписи или отдельную авторизацию на уровне инфраструктуры.
Настройки Webhook в n8n.
Для отправки ответа в Яндекс Мессенджер создайте три ноды: «If file», «Send File» и «Send Text». В ноде «If file» добавьте условие в режиме Expression:
{{ !!$binary.file }} Если во входных данных есть бинарное поле file, сценарий пойдёт по ветке отправки файла. Если файла нет, ответ будет отправлен как текстовое сообщение.
Ветка «If file»: проверка наличия бинарного файла.
В ноде «Send File» укажите метод POST и адрес API:
https://botapi.messenger.yandex.net/bot/v1/messages/sendFile/ В .env-файле создайте переменную с API-ключом бота. В заголовке Authorization укажите выражение:
{{ 'OAuth ' + ($env.YANDEX_BOT_TOKEN_LOGPARSER || '') }} В Body выберите Form-Data и передайте два поля:
Поля с выражениями должны быть переведены в режим Expression.
Настройки ноды «Send File»: заголовок Authorization и Form-Data.
В ноде «Send Text» укажите метод POST и адрес API:
https://botapi.messenger.yandex.net/bot/v1/messages/sendText/ В заголовке Authorization используйте то же выражение с API-ключом:
{{ 'OAuth ' + ($env.YANDEX_BOT_TOKEN_LOGPARSER || '') }} В Body выберите JSON и передайте поля:
Настройки ноды «Send Text»: отправка JSON с полями login и text.
После настройки сценария бот сможет отвечать на запросы в Яндекс Мессенджере: отправлять текстовые сообщения или файлы, если во входных данных есть бинарное поле file.