ym88659208ym87991671
Вебхуки и работа с ними | Документация для разработчиков

Вебхуки и работа с ними

Обновлено 25 марта 2025

Вебхук — это HTTP-запрос, с помощью которого в определенных ситуациях передаются данные в сторонний сервис по заданному адресу. Ответ на вебхук используется дальше в сценарии.

После получения ответа асисстент обновит значения переменных и перейдет к выполнению блоков.

Таким образом использование вебхуков позволяет дополнять и изменять переменные в процессе работы.

Используйте вебхуки, если вам необходимо часто вычислять или сохранять данные и строить диалог с пользователем с учетом них. В этом случае вы сможете делать сложные вычисления и интеграции на собственном сервере, используя при этом любой язык программирования.

Адрес вебхука может быть публичным или тестовым:

  • вебхуки, развернутые на публичных адресах, работают с опубликованными чат-ботами;
  • вебхуки, развернутые на тестовых адресах, помогают проводить диагностику и отладку в процессе разработки чат-бота.

Сообщения, которыми чат-бот обменивается со сторонним вебхуком, соответствуют протоколу вебхуков Graph.

Сервер для вебхука можно разрабатывать локально, а затем загружать код на публичный сервер.

Чтобы включить сторонние вебхуки:

  1. В левой навигационной панели проекта нажмите Настройки. Откроется окно Настройки чат-бота.
  2. Выберите вкладку Базовые настройки.
  3. В блоке Настройки вебхука выберите какой вебхук необходимо указать: публичный или тестовый.
  4. В списке Вариант ввода выберите Пользовательский Webhook.
  5. Укажите адрес вебхука в поле Публичный webhook или Тестовый webhook, в зависимости от настраиваемого вебхука.
  6. Нажмите кнопку Сохранить.

Вы также можете использовать блок HTTP-запрос, если для работы чат-бота нужны небольшие вычисления или сохранение небольших объемов данных.

Протокол вебхуков Graph

На каждом экране, где включено событие для вебхука, чат-бот посылает POST-запрос, в теле которого передает JSON-объект. Этот объект содержит все текущие переменные чат-бота (в том числе системные), а также поле action — текст события, заданное в названии экрана.

Пример:

{
"action": "event1",
"queryText": "пока",
"userId": "1234567890",
"rawRequest": {"message": {...}},
"variable1": 50,
"variable2": "значение"
}

Чат-бот ожидает от сервера JSON-объект с переменными, которые чат-бот использует в блоках экрана.

Пример:

{
"lastSeen": 60,
"name": "Василий",
"data": {
"age": 30,
"website": "http://example.com"
}
}

В этом примере сервер вебхука вернул переменные lastSeen, name и data. Теперь чат-бот может их использовать в своем сценарии, начиная с того экрана, на котором он получил эти переменные.

Отличие вебхука от блока HTTP-запрос

Можно использовать блок HTTP-запрос всякий раз, когда чат-боту надо получить данные от вашего сервера.

При этом вебхук обладает следующими преимуществами, если необходимо делать запросы более чем с одного экрана:

  • Сценарий не перегружается блоками HTTP-запрос, что делает его более понятным.
  • Вебхук всегда отправляет все текущие переменные на один адрес, заданный в настройках чат-бота.
  • Протокол вебхука стандартизирован, и чат-бот самостоятельно скопирует все переменные из ответа.
  • Вебхук можно включать или выключать на разных экранах.
  • Вебхук можно разрабатывать и отлаживать на непубличном тестовом адресе.

Где бесплатно развернуть вебхук

Чтобы запустить вебхук необходим хостинг.

При этом во время разработки вы можете использовать такие утилиты, как ngrok, чтобы на время получить публичный адрес, который позволит серверу на вашем локальном компьютере получать запросы от вашего чат-бота.

Для бесплатного публичного размещения сервера для обработки вебхуков можно рассмотреть платформу heroku.com. Она позволяет создавать серверы на любом языке программирования.

ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей. Вы можете запретить сохранение cookie в настройках своего браузера.