
Настройка MAX-бота для работы в Yandex Cloud Functions
В этой статье я расскажу о том, как легко и быстро настроить MAX-бота для работы в serverless-окружении Yandex Cloud Functions.
Зачем нужна эта статья?
MAX-боты умееют получать события от платформы несколькими способами:
- В режиме ожидания запросов от сервера (long-polling);
- В режиме получения событий через webhook;
В документации к официальной typescript библиотеке для создания MAX-ботов есть примеры запуска ботов в режиме ожидания запросов. В котором бот подключается к серверам MAX и ждёт события обновления. Как только сервер присылает обновление, бот обрабатывает его.
К сожалению такой режим работы не подходит для serverless окружений, а примеров запуска бота через получение событий по вебхуку, на момент написания этой статьи, в документации не нашлось.
В этой статье я постараюсь исправить этот недочёт.
Решение для тех кто торопится
Для тех кто спешит и умеет настраивать бота для работы с webhook, сразу публикую базовое готовое решение:
Разбор решения
Не буду долго и подробно расписывать как я его нашёл, но тем не менее отмечу пару важных моментов:
Я искал что-то похожее на
из grammY, библиотеки для Telegram-ботов.
И действительно, такой метод у класса Bot есть, но он приватный и не доступен для вызова.
Тут наверное можно было бы кастануть Bot к нужному мне типу с не приватным handleUpdate, но я решил чуть-чуть покопать и изучить код библиотеки.
В итоге понял что можно вызвать middleware(), предварительно добавив событие Update в контекст бота.
Подписка функции на получение событий
Для того чтобы подписать облачную функцию на обработку событий нужно:
- Знать публичный url для вызова функции (можно посмотреть в настройках функции в консоли управления Yandex Cloud);
- Отправить API запрос
На этом всё. Спасибо за внимание!



