Документация

Что такое Чатиум
С чего начать
Web разработка
Мобильная разработка
Общие понятия
GetCourse API
Справка
Библиотеки
Все статьи

Вызов API внешней системы из модуля воронок.

Написано 4 месяца назад
Просмотрен 15 раз
0

Внутри воронки всегда можно сделать api-вызов внешней системы, если она поддерживает REST API (т.е. совершать HTTP-запрос для выполнения какого-либо действия).

Это можно сделать через блоки "Вызвать URL" либо "Пользовательский код".

В этой статье разберем первый вариант.

Настройка

Формирование ссылки

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

https://my-service-url.com/api/any-method?userId={user.id}

В примере выше, вместо {user.id} в ссылку будет подставлен идентификатор пользователя.

Это особенно полезно, когда система требует GET-вызова и нет возможности сформировать тело запроса.

Выбор метода вызова

На данный момент поддерживается 2 типа вызова: GET и POST. В случае с GET-запросом достаточно сформировать ссылку, используя переменные воронки и сохранить блок.

В случае с POST-запросом, скорее всего понадобится сформировать тело и заголовки запроса. Для этого в выражении необходимо вернуть JS-объект. В поле ввода вы можете написать любое JS-выражение. Главное, чтобы на выходе был возвращен объект, который будет использован при вызове ссылки.

Ниже пример сложного (в body) и простого (в head) формирования объекта.

Зачастую, в воронках вам достаточно будет простого формирования объекта, с использованием переменных. В этом случае можно сразу записать объект, не добавляя никаких внутренних переменных и не используя команду return. Например:

{
  userId: user.id,
  dealId: deal.id,
  tgUsername: chat.username,
  points: user.points - user.penaltyPoints
}

При этом оба поля являются не обязательными к заполнению.

Тип ответа

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

Сохранение результата

Как и во многих других блоках воронки, есть возможность сохранить ответ сервера в локальную переменную.

Для этого установите соответствующий чек-бокс (1), выберите тип агента (2) и укажите название переменной (3).

Ответ сервера полностью будет записан в указанную переменную:

Время вызова ограничено 10 секундами. Если сервер будет отвечать дольше 10 секунд, произойдет ошибка и вы увидите это в отладке.

Соответственно никакого значения в переменную записано не будет. Учитывайте это при построении следующих нод - если вызов "упал", переменная будет пустая.

Преобразование агентов

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

Данные события доступны в объекте response:

{
  body: any
  headers: Record<string, string>
  statusCode: number
}

В примере ниже в пользовательскую переменную respValue записывается значение, полученное в response.body.value.

Обратите внимание! Преобразование агентов доступно вне зависимости от результата вызова. Даже если вызов "упал" с таймаутом, вы можете обработать этот кейс. В этом случае объект response будет равен undefined.

Воронки
Инструкции
API
код

Добрый день, Ратмир! В данный момент в рамках заказа мы можем собрать вот эти значения id, title, value, currency, paymentLink Есть ли возможность реализовать сбор offers?

Через процессы выглядел так {object.offers}

dmnmx@yandex.ru 3 месяца назад

Добавили offers в данные заказа при вызове URL.

Ратмир 3 месяца назад

❤️ Made with love on Chatium

ООО "Чатиум"

Информация о компании