Размер шрифта
Цвет фона и шрифта
Изображения
Озвучивание текста
Обычная версия сайта
3red.net
Создание решений
для вашего бизнеса
+7 861 207 07 12
+7 861 207 07 12
E-mail
info@3red.net
Адрес
г. Краснодар, ул. Константиновская 5, оф. 67
Режим работы
Пн. – Пт.: с 9:00 до 18:00
О компании
  • О компании
  • Сертификаты
  • Партнеры
  • Реквизиты
Проекты
  • Автоматизация
  • Битрикс24
  • Боты
  • Дизайн и вёрстка
  • Интернет-магазин
  • Корпоративный сайт
  • Модуль
  • Приложения
  • Сайт-каталог
Услуги
  • Разработка сайтов
  • Разработка интернет-магазинов на Битрикс
  • Поддержка и обслуживание сайтов
  • Интеграции и автоматизация
    • Интеграция с 1С
    • Интеграция с CRM
    • Интеграция с маркетплейсами
    • Интеграция с платежными системами
    • Интеграция с сервисами доставки
  • Продвижение в интернете
    • Аналитика и отчетность
    • Контекстная реклама
    • Поисковая оптимизация (SEO)
    • Техническая оптимизация
  • Приложения
Продукты
  • Лицензии Битрикс24
  • Лицензии Битрикс Управление Сайтом
  • Продление лицензии Битрикс Управление Сайтом
  • Продление лицензии Битрикс24
Статьи
Контакты
  • Главная
  • Вопрос-ответ
  • Контакты
  • ...
    +7 861 207 07 12
    +7 861 207 07 12
    E-mail
    info@3red.net
    Адрес
    г. Краснодар, ул. Константиновская 5, оф. 67
    Режим работы
    Пн. – Пт.: с 9:00 до 18:00
    3red.net
    Создание решений
    для вашего бизнеса
    О компании
    • О компании
    • Сертификаты
    • Партнеры
    • Реквизиты
    Проекты
    • Автоматизация
    • Битрикс24
    • Боты
    • Дизайн и вёрстка
    • Интернет-магазин
    • Корпоративный сайт
    • Модуль
    • Приложения
    • Сайт-каталог
    Услуги
    • Разработка сайтов
    • Разработка интернет-магазинов на Битрикс
    • Поддержка и обслуживание сайтов
    • Интеграции и автоматизация
      • Интеграция с 1С
      • Интеграция с CRM
      • Интеграция с маркетплейсами
      • Интеграция с платежными системами
      • Интеграция с сервисами доставки
    • Продвижение в интернете
      • Аналитика и отчетность
      • Контекстная реклама
      • Поисковая оптимизация (SEO)
      • Техническая оптимизация
    • Приложения
    Продукты
    • Лицензии Битрикс24
    • Лицензии Битрикс Управление Сайтом
    • Продление лицензии Битрикс Управление Сайтом
    • Продление лицензии Битрикс24
    Статьи
    Контакты
      3red.net
      О компании
      • О компании
      • Сертификаты
      • Партнеры
      • Реквизиты
      Проекты
      • Автоматизация
      • Битрикс24
      • Боты
      • Дизайн и вёрстка
      • Интернет-магазин
      • Корпоративный сайт
      • Модуль
      • Приложения
      • Сайт-каталог
      Услуги
      • Разработка сайтов
      • Разработка интернет-магазинов на Битрикс
      • Поддержка и обслуживание сайтов
      • Интеграции и автоматизация
        • Интеграция с 1С
        • Интеграция с CRM
        • Интеграция с маркетплейсами
        • Интеграция с платежными системами
        • Интеграция с сервисами доставки
      • Продвижение в интернете
        • Аналитика и отчетность
        • Контекстная реклама
        • Поисковая оптимизация (SEO)
        • Техническая оптимизация
      • Приложения
      Продукты
      • Лицензии Битрикс24
      • Лицензии Битрикс Управление Сайтом
      • Продление лицензии Битрикс Управление Сайтом
      • Продление лицензии Битрикс24
      Статьи
      Контакты
        +7 861 207 07 12
        E-mail
        info@3red.net
        Адрес
        г. Краснодар, ул. Константиновская 5, оф. 67
        Режим работы
        Пн. – Пт.: с 9:00 до 18:00
        3red.net
        Телефоны
        +7 861 207 07 12
        E-mail
        info@3red.net
        Адрес
        г. Краснодар, ул. Константиновская 5, оф. 67
        Режим работы
        Пн. – Пт.: с 9:00 до 18:00
        3red.net
        • О компании
          • О компании
          • О компании
          • Сертификаты
          • Партнеры
          • Реквизиты
        • Проекты
          • Проекты
          • Автоматизация
          • Битрикс24
          • Боты
          • Дизайн и вёрстка
          • Интернет-магазин
          • Корпоративный сайт
          • Модуль
          • Приложения
          • Сайт-каталог
        • Услуги
          • Услуги
          • Разработка сайтов
          • Разработка интернет-магазинов на Битрикс
          • Поддержка и обслуживание сайтов
          • Интеграции и автоматизация
            • Интеграции и автоматизация
            • Интеграция с 1С
            • Интеграция с CRM
            • Интеграция с маркетплейсами
            • Интеграция с платежными системами
            • Интеграция с сервисами доставки
          • Продвижение в интернете
            • Продвижение в интернете
            • Аналитика и отчетность
            • Контекстная реклама
            • Поисковая оптимизация (SEO)
            • Техническая оптимизация
          • Приложения
        • Продукты
          • Продукты
          • Лицензии Битрикс24
          • Лицензии Битрикс Управление Сайтом
          • Продление лицензии Битрикс Управление Сайтом
          • Продление лицензии Битрикс24
        • Статьи
        • Контакты
        • +7 861 207 07 12
          • Телефоны
          • +7 861 207 07 12
        • г. Краснодар, ул. Константиновская 5, оф. 67
        • info@3red.net
        • Пн. – Пт.: с 9:00 до 18:00
        Главная
        —
        Статьи
        —
        Кейсы
        Бизнес-советы
        Повышение продаж
        Управление проектами
        SEO
        Разработка сайтов
        Интернет-магазины
        Гайды и инструкции
        Чек-листы
        Шаблоны
        Технологии
        Новости
        —Как мы оживляли бота для MAX: разбор полётов с webhook, GetUpdates и странным Go‑SDK

        Как мы оживляли бота для MAX: разбор полётов с webhook, GetUpdates и странным Go‑SDK

        Кейсы
        20 апреля 2026

        Недавно делали боевого бота для MAX‑мессенджера на Go и поймали весьма нетривиальную проблему: бот «запущен», токен валидный, GetUpdates крутится, а в интерфейсе MAX сообщения висят непрочитанными, лог пустой, в чат ничего не прилетает. Знакомо? Разберём, что пошло не так и как это починить.

        Основные симптомы проблемы:

        • Go‑бот стартует, GET /me (через api.Bots.GetBot) отрабатывает, данные о боте приходят.
        • В логах видно, что контекст жив, цикл for upd := range api.GetUpdates(ctx) крутится.
        • В MAX пишем боту — сообщения помечаются как новые и «непрочитанные».
        • Но бот не реагирует: ни одно обновление не попадает в обработчик.

        В данном случае при попытке покопать в сторону кода не дало результата, т.е. Go тут не виноват. Да и SDK тоже.

        Способы получения сообщений в MAX: webhook и long polling

        MAX, как и Telegram, даёт два режима доставки событий:

        1. Webhook: сам шлёт HTTP‑запросы на ваш URL.
        2. Long polling (GET /updates): ваш бот сам периодически ходит за обновлениями.

        Ключевой момент: для одного и того же бота это взаимоисключающие режимы. Если бот подписан на webhook — события улетают туда, а GET /updates остаётся пустым.

        В нашем случае на проекте был старый no‑code/сервисный бот, который когда‑то получал апдейты через внешний URL. Подписки на webhook никто не снял — в итоге новый Go‑бот честно крутил GetUpdates, но получать там было просто нечего.

        Проверяем бота на подписанные события webhook

        У MAX есть REST‑метод GET /subscriptions, который возвращает все активные подписки бота на вебхуки.

        Пример запроса:

        curl -X GET "https://platform-api.max.ru/subscriptions"b -H "Authorization: {access_token}"

        Получаем примерно такое:

        {
          "subscriptions": [
            {
              "url": "https://fgbnu-fnc-vniimk.cxhub.ru/callback-service/maxCallback/8bc9...",
              "update_types": ["message_callback","message_created","bot_started"]
            },
            {
              "url": "https://fgbnu-fnc-vniimk.cxhub.ru/callback-service/maxCallback/52f0...",
              "update_types": ["message_callback","message_created","bot_started"]
            },
            {
              "url": "https://b92903.watbot.ru/webhooks/max/2069:W5nod4bY...";
            }
          ]
        }

        Три боевых webhook‑подписки. Пока они живы, GetUpdates в Go‑боте можно крутить сколько угодно — апдейты там так и не появятся.

        Как правильно отписаться от всех webhook’ов

        Пара важных деталей:
        • Параметр url должен совпадать точно с тем, что вернул GET /subscriptions (включая путь и идентификаторы).
        • Заголовок Authorization — это просто access_token без Bearer.
        • В bash перенос строки делаем одним обратным слэшем \ в конце, а не \\, иначе curl разваливается и токен до сервера не доходит.

        В нашем случае понадобилось 3 поочерёдных запроса, и финальный запрос на проверку, что не осталось подписок (примеры выше).

        {"subscriptions":[]} - значит подписок больше нет и бот работает в режиме long polling.

        Почему сообщения были «непрочитанными» в интерфейсе MAX

        Это логично, если вспомнить, как работает доставка:

        • MAX ставит новое событие в очередь и помечает его как «новое/непрочитанное».
        • Если у бота есть webhook — события шлются на указанный URL.
        • Если бот читает через GET /updates — события снимаются с очереди при успешном ответе.

        Пока бот:

        • подписан на webhook и вебхук недоступен/обработчик не отвечает;
        • или мы пытаемся читать GetUpdates параллельно с webhook;

        Сообщения так и висят непрочитанными. В нашем случае Go‑бот вообще не участвовал в доставке: все события уходили на старые URL, где либо никто не принимал запросы, либо отвечал другой сервис.

        После того как мы проделали следующие манипуляции:

        1. Удалили все подписки через DELETE /subscriptions.
        2. Перезапустили Go‑бота с GetUpdates.
        3. Написали ему сообщение.

        Апдейты пошли, лог ожил, а в интерфейсе MAX сообщения перестали висеть «новыми» — потому что их наконец‑то кто‑то читает.


        Что вынесли из этой истории

        • Перед тем как дебажить свой код, всегда проверяйте инфраструктуру: токены, подписки, webhook vs long polling.
        • В MAX нельзя одновременно эффективно использовать webhook и GetUpdates для одного бота — нужно выбрать режим и отключить второй.
        • Go‑SDK — не «волшебная коробка». Стоит один раз открыть структуры schemes.* в IDE, и сразу становится понятно, почему Callback.Payload — это строка, а не объект.

        Если вы тоже мигрируете бота с webhook’а на long polling в MAX и видите «тихий» GetUpdates при живом токене — начните с GET /subscriptions. Скорее всего, все ответы уже приходят, просто не к вам.

        Проекты
        ВНИИМК: Рефакторинг и обновление
        ВНИИМК: Рефакторинг и обновление
        Авторы
        Технический директор, тимлид
        Александр Павлов
        Написать сообщение
        Телефон
        +7 (861) 207-07-12
        E-mail
        a.pavlov@3red.net
        Контролирует деятельность организации и обеспечивает взаимодействие подразделений.
        Go Golang MAX Chatbot BotAPI Webhooks LongPolling backend Интеграции RESTAPI
        Назад к списку
        • SEO 2
        • Гайды и инструкции 2
        • Кейсы 4
        • Новости 2
        • Повышение продаж 2
        • Разработка сайтов 2
        • Технологии 2
        • Управление проектами 1
        • Чек-листы 1
        API backend Bitrix24 bitrixvm BotAPI Chatbot CI/CD cpnginx CRM CryptoPro DevOps DevSecOps email FAQ Generative Engine Optimization GEO GitFlic GitHub GitVerse Go Golang GtiLab Highload hr IT-проекты KPI Lets Encrypt LongPolling MAX MongoDB mysql Nginx NoSQL php Platform V psr RESTAPI RSA Search Engine Optimization self-hosted SEO smtp SSL SSL Сертификаты SysAdmin TLS TLS Настройка web-разработка Webhooks WebSecurity автоматизация Аналитика архитектура проекта Аудит сайта База данных бизнес и разработка бизнес-процессы битрикс Битрикс24 битрикс24 взаимодействие с командой разработки ГОСТ ИИ в разработке Интеграции интеграция с внешними сервисами Информационная Безопасность Инфраструктура искусственный интеллект качество кода квалификация лидов коммуникация с подрядчиком Криптография круглосуточное обслуживание маркетинг менеджер проекта Мобильная версия Монго надежность проекта нестандартные ситуации Новости обмен данными обновление обработка запросов обратная связь Отечественное ПО Отзывы оценка трудозатрат персонализация постановка задач почта Продвижение сайта в поисковых системах проектирование работа с разработчиками разработка рекрутинг Российская Криптография Сбер сбор данных Скорость сайта Сопровождение сайта Техническая поддержка сайта удовлетворённость клиентов управление проектами управление разработкой Формы обратной связи чат‑бот человеческое участие
        +7 861 207 07 12
        +7 861 207 07 12
        E-mail
        info@3red.net
        Адрес
        г. Краснодар, ул. Константиновская 5, оф. 67
        Режим работы
        Пн. – Пт.: с 9:00 до 18:00
        info@3red.net
        г. Краснодар, ул. Константиновская 5, оф. 67
        С 2018 года и по сей день © 3red.net
        Разработка решений для вашего бизнеса

        Регистрационный номер РКН 23-25-096874

        Информация на сайте носит ознакомительный характер и не является публичной офертой, определяемой положениями статьи 437 Гражданского кодекса РФ
        Политика использования технических файлов сайта
        Согласие на обработку персональных данных
        Политика в отношении обработки персональных данных
        Разработано в
        Предупреждение о сборе статистики
        Сайт собирает статистику посещения и данные посетителей, для этого использует технические файлы, чтобы сделать ваше пребывание на нём максимально удобным. Оставаясь на сайте, вы даёте своё согласие на обработку персональных данных в порядке, указанном в Политике конфиденциальности.
        Главная Услуги Проекты Контакты