Шаг HTTP request в Chat Flows
Отправьте из потока запрос во внешнюю систему по HTTPS и используйте ответ в следующих шагах. Откуда выполняется запрос, к чему он может обращаться и как сопоставить ответ с переменными.
Chat Flow может задать внешней системе вопрос по HTTPS и использовать ответ в переписке: найти заказ, проверить баланс, узнать дату доставки. Шаг называется HTTP request (группа палитры Integrate) в редакторе Chat Flows приложения WASync в Bitrix24.
Что делает шаг
- Собирает запрос из настроек шага: метод (GET или POST), URL, заголовки
и, для POST, тело запроса. Подставляются
{{VARIABLES}}из предыдущих шагов и из лида или сделки: в URL они кодируются как URL, в JSON-теле экранируются как JSON. - Выполняет запрос и ждёт ответ до 10 секунд.
- Сопоставляет JSON-ответ с переменными потока с помощью response mapping:
слева — JSON-путь (
data.order.status,items[0].id), справа — имя переменной (ESTADO). Следующие шаги используют их как любой другой ответ:{{ESTADO}}в сообщении, условие в Branch, значение в Fill in a field.
Каждый вызов также задаёт три переменные:
| Переменная | Значение |
|---|---|
HTTP_STATUS | HTTP-код, которым ответила система (200, 404, …); пусто, если ответа не было. |
HTTP_OK | true для ответа 2xx, иначе false. |
HTTP_ERROR | Пусто при успехе; иначе короткий код: http_404, timeout, blocked_url, upstream_unreachable, budget_exceeded, breaker_open. |
Два исходящих ребра
У узла есть обычное ребро (успех) и красное ребро error. Ребро ошибки
срабатывает, если истекло время ожидания, URL отклонён, система ответила 4xx или 5xx
либо произошёл сбой сети. Если ребро ошибки не подключено, поток продолжается
по обычному ребру с HTTP_OK = false, поэтому Branch по HTTP_OK всё равно
может отреагировать.
Откуда выполняется запрос
Запрос выполняется не с серверов WASync. Его делает отдельный
Cloudflare Worker (egress.wasync.app), у которого нет доступа к внутренним
системам WASync. Из этого следуют два вывода:
- Вызов приходит в вашу систему из диапазонов IP-адресов Cloudflare, а не с фиксированного адреса WASync. Если ваш API разрешает только перечисленные IP, используйте API key или подпись; IP-адреса WASync для списка разрешённых нет.
- Медленный или неработающий API никогда не задержит и не продублирует сообщения WhatsApp: вызов выполняется вне конвейера сообщений, а поток ждёт на этом шаге ответа или истечения времени ожидания.
К чему может обращаться шаг
| Правило | Значение |
|---|---|
| Схема и порт | только https на порту 443 |
| Хост | Публичное доменное имя. IP-адреса, localhost, .local, .internal, имена из одной метки и собственные домены WASync отклоняются. |
| Методы | GET, POST |
| Заголовки | До 16. Транспортные и прокси-заголовки (Host, Transfer-Encoding, Proxy-*, Cookie, X-Forwarded-*, …) отклоняются; Authorization, X-Api-Key, Content-Type, Accept и подобные допустимы. |
| Тело запроса | До 64 КБ |
| Ответ | Читается до 256 КБ; более длинные тела обрезаются, а в Test сообщается truncated. |
| Время ожидания | 10 секунд |
| Перенаправления | Не более 2, каждое проверяется по тем же правилам |
| Лимит | 600 вызовов на рабочее пространство в час. Хост, который 5 раз подряд не отвечает, приостанавливается на 5 минут (в это время срабатывает ребро ошибки). |
| Лицензия | Лицензия номера должна быть активна; на пробном периоде шаг не выполняется. |
User agent всегда WASync-Flows/1.0 (+https://wasync.app).
Секреты
Отметьте заголовок как secret (API key, bearer-токен), и WASync сохранит его в зашифрованном виде. В редакторе он больше никогда не отображается, не экспортируется вместе с потоком и не попадает ни в журналы, ни в журнал аудита. Чтобы изменить его, введите новое значение; чтобы оставить прежним, при сохранении не заполняйте поле.
Проверьте перед сохранением
Кнопка Test request в панели шага выполняет настоящий вызов с примерами значений переменных и показывает статус, затраченное время, сопоставленные переменные и тело ответа. Кнопка Use as sample response сохраняет это тело в шаге: симулятор использует его вместо обращения к системе, поэтому весь поток можно посмотреть офлайн.
Пример: статус заказа
- Question: «¿Cuál es tu número de pedido?» (сохраняется как
PEDIDO) - HTTP request:
GET https://erp.example.com/api/orders/{{PEDIDO}}, заголовокX-Api-Key(secret), сопоставлениеdata.status→ESTADO,data.eta→ENTREGA - Branch по
HTTP_OK:true→ MessageTu pedido está {{ESTADO}}, llega el {{ENTREGA}}.·false→ MessageNo pude consultar tu pedido ahora, un asesor te escribe en breve.→ Hand to a person
Чего нет в этой версии
PUT, PATCH и DELETE; OAuth для обращения к внешней системе; автоматические повторы; скачивание файлов; ожидание обратного вызова от системы. Для таких случаев используйте соседний рецепт: поток записывает поле CRM, правило автоматизации Bitrix24 уведомляет вашу систему, ваша система записывает результат обратно через Bitrix24 REST API, а правило WASync: Send WhatsApp Message отправляет его.
Каждый вызов записывается в журнал аудита рабочего пространства (хост и путь, статус, длительность, какие переменные были заданы; никогда не тело и не заголовки).
Перенос номера от другого провайдера
Перенесите номер WhatsApp Business API, который вы уже используете у другого провайдера, в WASync с помощью мастера в приложении и сохраните свою репутацию в Meta.
Лиды из чатов WhatsApp
Как WASync превращает новый разговор в WhatsApp в лид Bitrix24, кому он достаётся, что происходит, если номер уже есть в вашей CRM, и окно повторного обращения, которое оставляет клиента, написавшего после закрытого лида, на той же карточке.