← Все статьи
Сравнение

Telegram Guest Mode против единого входящего webhook: что на самом деле решает проблему многоплатформенных сообщений? — UnifyPort

В марте 2026 года Telegram выпустил Bot API 9.5 и тихо решил проблему, которая годами раздражала разработчиков ботов: что происходит, если кто-то упоминает вашего бота в группе, в которую он никогда не был добавлен? Раньше ответ был «ничего» — бот не получал сообщение, не видел чат и не мог ответить. Guest Mode меняет это. Включите его в настройках BotFather, и ваш бот сможет получать обновление guest_message и отправлять один ответ через answerGuestQuery, даже не присоединяясь к группе.

Если вы разрабатываете ботов для Telegram, это действительно полезная новая возможность. Но если вы строите агентов, работающих сразу в Telegram, WhatsApp, LINE, Zalo, TikTok и X, это решает примерно одну шестую вашей реальной задачи — и стоит точно понять, какую именно.

Что на самом деле делает Guest Mode

Механика здесь узкая и чётко определена. Когда пользователь упоминает вашего бота в поддерживаемом чате или отвечает на одно из его предыдущих сообщений, Telegram отправляет Update, содержащий guest_message, одноразовый токен guest_query_id, а также идентификаторы guest_bot_caller_user и guest_bot_caller_chat. Ваш бот вызывает answerGuestQuery с этим токеном и получает в ответ объект SentGuestMessage. Одно упоминание — один ответ.

Это всё взаимодействие целиком. Telegram явно описывает ограничения:

  • Нет истории чата. Бот видит только то сообщение, которое вызвало взаимодействие, и ничего до него.
  • Нет списка участников. Невозможно получить список людей в чате.
  • Нет постоянного присутствия. Если бота снова не упомянут или не ответят на его сообщение, он не будет получать уведомления о последующих сообщениях в этом чате.
  • Один запрос — один ответ. Это примитив запрос/ответ, а не подписка.

Для узкого класса ботов — справочного бота, которого упоминают в случайных рабочих группах разработчиков, бота-конвертера единиц измерения, переводчика — это именно то, что нужно. Это легковесно, опционально (администратору чата не нужно добавлять бота, а оператору бота достаточно включить один переключатель в MiniApp BotFather) и устраняет барьер «пожалуйста, добавьте @MyBot в этот чат», который убивал внедрение многих утилитарных ботов.

Какую проблему это не решает

Guest Mode — это функция исключительно Telegram. Она реализована в клиентском и серверном стеке Telegram, доступна через Bot API Telegram и запускается специфичным для Telegram действием в интерфейсе (упоминание или ответ внутри чата Telegram). Ничего из этого не переносится на другие платформы.

Если ваша команда обрабатывает поддержку или агентские workflow на нескольких каналах сразу — а это норма для большинства команд, занимающихся автоматизацией работы с клиентами в 2026 году — то вопрос «как мой бот может быть вовлечён в разговор без формального добавления в него» не ограничивается Telegram. Та же по форме проблема существует и в:

  • WhatsApp — клиент пишет напрямую на номер, и системе нужно подхватить это сообщение без существующего объекта «диалог»
  • LINE — пользователь подписывается на официальный аккаунт и начинает писать, при этом понятие «группы» вообще не задействовано
  • X — кто-то пишет в DM вашему аккаунту или упоминает его в ответе
  • TikTok и Zalo — у каждой свой формат входящих сообщений

Telegram решил свою версию вопроса «получить сообщение, адресованное вам, от кого-то, кого вы ранее явно не отслеживали». Но если вы строите входящий конвейер вокруг guest_message и answerGuestQuery, вы строите его лишь для одной шестой ваших каналов. Остальным пяти нужны собственная интеграция, собственная модель авторизации, собственный формат событий — и специфичные ограничения Guest Mode (нет истории, один ответ, нужен повторный триггер) даже не накладываются аккуратно на то, как работают диалоги в WhatsApp или LINE.

Реальная форма проблемы

Если убрать механику, специфичную для каждой платформы, то каждая команда в такой ситуации хочет одного и того же: единого нормализованного события, которое срабатывает при получении сообщения, адресованного одному из ваших аккаунтов, независимо от платформы, плюс единой точки для отправки ответа.

Это не функция Telegram. Это уровень интеграции — и именно для этого существует UnifyPort.

Как единый webhook покрывает то же самое сразу на шести платформах

Webhook UnifyPort генерирует единое событие message.received для входящих сообщений на любом подключённом канале:

{
  "event": "message.received",
  "account_id": "acct_8Q2vK",
  "provider": "telegram",
  "from": "user_3f9c1a",
  "text": "Hey, are you open on weekends?",
  "timestamp": 1749427200,
  "message_id": "tg_msg_5d2b7e"
}

Замените provider на whatsapp, line, zalo, tiktok или x — структура события не изменится, изменится только значение этого одного поля. Ваш обработчик не должен разветвляться на шесть разных SDK или шесть разных форматов webhook; он проверяет evt.event === "message.received" один раз, а evt.provider подсказывает, через какой канал отвечать, если это важно.

Ответ тоже симметричен: один вызов POST /v1/messages с авторизацией через Bearer API-ключ, адресуемый по account_id и from — один и тот же вызов независимо от того, с какой платформы пришло входящее сообщение. Каждая доставка на ваш webhook подписана HMAC-SHA256 с использованием настроенного вами signing_secret, так что проверка подписи — это тоже один код, а не шесть.

Telegram ─┐
WhatsApp ─┤
  LINE   ─┼──► UnifyPort ──► message.received ──► ваш webhook
  Zalo   ─┤         ▲                                   │
 TikTok  ─┤         │                                   ▼
   X     ─┘    POST /v1/messages ◄──────────── ваша логика ответа

Если Guest Mode требует, чтобы администратор чата (или сам контекст разговора) сначала упомянул вашего бота, прежде чем он сможет действовать, то входящие события UnifyPort срабатывают по нативному для каждой платформы триггеру — DM, подписка, ответ — преобразуясь каждый раз в один и тот же формат message.received. Вам не нужно ждать сигнала, специфичного для Telegram, а затем воспроизводить его на пяти других платформах, где у этого сигнала вообще нет аналога.

Что это значит на практике

Если Telegram действительно ваш единственный канал, а ваш сценарий хорошо вписывается в форму Guest Mode — иногда вас упоминают в группах, которыми вы не управляете — его стоит включить. Это бесплатно, нативно и не требует дополнительной инфраструктуры.

Но если вы уже прошли эту точку и работаете с агентским или клиентским workflow, который должен получать сообщения и в Telegram, и в WhatsApp, и на других каналах, которые используют ваши клиенты — построение вокруг специфичных для Telegram примитивов означает, что ту же логику придётся переделывать ещё пять раз, по разу на платформу, и у каждой будут свои особенности. Единый webhook сворачивает всё это в одну интеграцию, сделанную один раз. Подключите свои каналы и изучите справочник по message.received — а если вы планируете передать это AI-инструменту для кодинга, чтобы он собрал приёмник, вот как выглядит такая разработка на практике.