Приём данных из любого сервиса в Telegram-бота
Выберите свой случай
Откройте тот, что про вас, — там четыре шага и всё. Подробности ниже, читать их не обязательно.
У меня платёжка — хочу, чтобы бот сам писал после оплатыЭто про вас, если оплату принимает сторонний сервис, а не Telegram.
- Создайте приёмникПриём данных → «Создать приёмник» → карточка «Платёжка присылает оплату». Правила заполнятся сами, вы ничего не пишете.
- Проверьте на своём примереВозьмите пример запроса из документации платёжки, вставьте в поле «Пример запроса от партнёра». Под ним сразу видно: order_id → A-1001. Если рядом с полем «не нашлось» — поменяйте имя поля на то, которое реально присылает платёжка.
- Отдайте адрес платёжкеСкопируйте адрес и вставьте его в настройках платёжки — поле обычно называется «webhook», «URL уведомлений» или «callback». Адрес показывается один раз, скопируйте сразу.
- Свяжите со сценариемВыберите бота и сценарий, который должен запуститься. Или поставьте в сценарии блок «Ждать данные» — тогда бот дождётся именно этой оплаты и продолжит с того места, где остановился.
У меня форма на сайте — хочу продолжать разговор в ботеЭто про вас, если человек заполняет форму на сайте, а дальше с ним общается бот.
- Создайте приёмникПриём данных → «Создать приёмник» → карточка «Форма с сайта». Поля имя, телефон, почта заполнятся сами.
- Добавьте в форму id человека в TelegramЭто единственное обязательное условие: боту нужно знать, КОМУ писать. Обычно человек приходит на сайт по ссылке из бота, и вы подставляете его id в скрытое поле формы.
- Отправляйте форму на наш адресУкажите адрес приёмника как адрес отправки формы. Если форму делает конструктор сайта — там это поле «куда отправлять» или «webhook».
- Выберите сценарий-приветствиеСвяжите приёмник с ботом и сценарием. Заполнил форму — бот сразу написал.
У меня своя программа или сервис из списка не подошёлЭто про вас, если событие присылает что-то своё — скрипт, CRM, склад, 1С.
- Создайте приёмникПриём данных → «Создать приёмник» → карточка «Свой сервис». Полей не заполнится — настроите под себя.
- Вставьте пример своего запросаСкопируйте один настоящий запрос, который присылает ваша программа, в поле «Пример запроса от партнёра».
- Добавьте правила по одномуПравило — это «взять такое-то значение и запомнить под понятным именем». Добавили правило — сразу видите под ним, что оно достало из вашего примера. Не угадали — поправили.
- Свяжите со сценариемВыберите бота и сценарий. Значения из запроса приедут в сценарий как переменные — их можно вставлять в сообщения клиенту.
Четыре причины, из-за которых обычно не работает
Партнёр отправил, а событий нет
Откройте вкладку «Входящие». Если события там есть — приёмник работает, дело в сценарии. Если событий нет вообще — партнёр отправляет на другой адрес: проверьте, что вставили адрес целиком, вместе с длинной частью после /in/.
Событие есть, а переменных нет
Значит правила разбора не нашли значения. Откройте событие в журнале — там видно, что именно присылал партнёр и что достало каждое правило. Скопируйте оттуда настоящее имя поля в правило.
В журнале написано «некому обработать»
Приёмник не привязан к боту или сценарию, либо сценарий не опубликован. Ещё вариант: шаблон «как найти человека» указывает на значение, которого в событии нет — тогда бот не понимает, кому писать.
Клиенту пришло два одинаковых сообщения
Партнёр отправил событие дважды. Включите «Отсекать повторы» и задайте ключ повтора — например номер заказа и статус. Тогда второе такое же событие в работу не пойдёт.
Что происходит между партнёром и ботом
Читать не обязательно — это для тех, кто хочет понять механику.
Приёмник — это адрес
Каждый приёмник — отдельный адрес для одного партнёра. Отдельный, чтобы вы могли отключить одного, не сломав остальных, и чтобы в журнале было видно, кто именно присылал.
Мы принимаем событие и сразу отвечаем
Партнёр получает ответ «принято» за считанные миллисекунды, а обработка идёт своим ходом. Так партнёр не считает доставку неуспешной из-за того, что ваш сценарий думает.
Правила достают значения
Из запроса берутся только те значения, которые вы назвали. Они становятся переменными сценария — их можно вставить в сообщение клиенту или сравнить в условии.
Событие идёт по одному из двух путей
Либо продолжает сценарий, который стоял на блоке «Ждать данные» и ждал именно это событие, либо запускает сценарий с начала. Первый путь — для «оплаты по конкретному заказу», второй — для «пришло что-то новое».
Шесть мест в запросе, откуда можно взять значение
В девяти случаях из десяти нужны первые три. Остальные — на редкие случаи, но они есть и не спрятаны.
| Откуда взять | Что именно взять |
|---|---|
| Поле JSONОбычное — так делают почти всегда | Так шлют почти все сервисы. Выберите это, если не знаете, что выбрать.Партнёр прислал {"order_id": "A-1"} → напишите order_id |
| Поле формыОбычное — так делают почти всегда | Если партнёр шлёт данные как обычная веб-форма.Партнёр прислал order_id=A-1&status=paid → напишите order_id |
| Параметр адресаОбычное — так делают почти всегда | Данные лежат прямо в ссылке, после знака вопроса.Адрес заканчивается на ?status=paid → напишите status |
| ЗаголовокСложнее — нужно редко | Служебная строка запроса — например X-Event-Type.В запросе есть строка X-Event-Type: payment → напишите X-Event-Type |
| Шаблон по текстуСложнее — нужно редко | Искать кусок текста по образцу — когда обычные поля не подходят.В тексте написано Оплата A-1 прошла → напишите Оплата (\S+) |
| Всё тело целикомСложнее — нужно редко | Взять весь текст запроса целиком, как он пришёл.Весь текст запроса попадёт в переменную целиком, как пришёл |
Чтобы под видом партнёра не пришёл кто угодно
Три способа проверки отправителя
От «достаточно знать адрес» до проверки подписи общим ключом. Способ диктует партнёр — выбираете тот, который он умеет. Ключ хранится в зашифрованном виде и больше никогда не показывается.
Адрес можно сменить в один клик
Если адрес куда-то утёк — меняете его, старый умирает сразу. Останется вставить новый в настройках партнёра.
Лимиты и размер запроса
Слишком большой запрос отклоняется до разбора. Наплыв запросов от одного партнёра ограничивается, чтобы он не мешал остальным вашим приёмникам.
Журнал всех событий
Каждое событие видно целиком: что пришло, что достали правила, что с ним стало и почему. Пароли и служебные заголовки в журнал не пишутся.
Частые вопросы
Что такое приём данных в Telegram-боте?
Это способ дать сторонней программе адрес, на который она сообщает о событиях: оплата прошла, форма заполнена, статус заказа изменился. Ваш бот получает это событие и реагирует по сценарию — сам, без вашего участия.
Это то же самое, что вебхук?
Да. «Вебхук» — техническое название для адреса, на который сторонний сервис присылает уведомления о событиях. Мы называем это приёмником, чтобы было понятно без словаря.
Нужно ли уметь программировать?
Нет. Вы выбираете, кто вам присылает, вставляете пример его запроса и видите, что из него достаётся. Ни строчки кода писать не нужно.
С какими сервисами это работает?
С любым, который умеет отправлять запрос на указанный адрес. Это умеют почти все платёжные сервисы, конструкторы сайтов, CRM и складские программы.
Как сделать, чтобы бот дождался оплаты и продолжил?
Поставьте в сценарии блок «Ждать данные» и задайте ключ ожидания — например номер заказа. Сценарий остановится, а когда придёт событие с тем же номером, продолжит с этого места.
Что будет, если оплата придёт слишком поздно?
У ожидания есть срок. Если событие пришло после него, сценарий уже не продолжится — но событие не потеряется: оно попадёт в журнал, а если у приёмника выбран сценарий-обработчик, запустит его с начала.
Партнёр присылает одно событие дважды — что делать?
Включите отсекание повторов и задайте ключ повтора из значений события, например номер заказа и статус. Одинаковые по этому ключу события в работу второй раз не пойдут.
Может ли кто-то прислать событие под видом партнёра?
Чтобы это исключить, есть проверка отправителя: согласованный секрет или подпись тела запроса общим ключом. Выберите то, что умеет ваш партнёр, — тогда чужой запрос будет отклонён.
Можно проверить, не подключая партнёра?
Да, двумя способами. Живой предпросмотр показывает, что достанут правила из вставленного примера, и ничего никуда не отправляет. Кнопка «Тестовый запрос» отправляет событие себе через настоящий конвейер — так проверяется вся цепочка до сценария.
Сколько приёмников можно создать?
Сколько позволяет тариф. Обычно один приёмник на одного партнёра — так их проще отключать по отдельности и видно, кто что присылал.
Запустите Telegram-бота с Forgebot
Соберите первый сценарий, отвечайте подписчикам и смотрите аналитику — бесплатно, без кода.
Бесплатный тариф: 1 бот, 5 сценариев, 100 подписчиков. Без карты.