Интеграция со сторонними API
Вы можете создавать ботов, которые взаимодействуют с другими сервисами через API. Например, боты могут отправлять запросы, чтобы проверить доступность на конкретную дату или найти товар в интернет-магазине.
Как взаимодействовать со сторонними API на примере Dadata
Возьмём в качестве примера API подсказок адреса: https://dadata.ru/api/suggest/address/ ссылка будет другая
Внимательно изучите документацию сторонних API.
Обратите внимание! Для сторонних API требуется IP-адрес, с которого будут отправляться запросы: 158.160.49.208 – сайт.
В поле "Request URL" укажите https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address.
Во вкладке В поле "Request header" укажите заголовок в формате JSON: {"Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token}.
Во вкладке В поле "JSON parameters" укажите сам запрос: {"query": "#{CurrencyType}"}.
Чтобы получить результат запроса, заполните "Saved values" .
Пример запроса показан на иллюстрации ниже.

Как сохранять значения из переменных
С первого раза это может быть не совсем понятно — здесь действительно нужно попробовать самостоятельно.
Сначала в поле "Answer" введите #{custom_answer}. (Переменная #{custom_answer} содержит ответ, полученный от сервера, указанного в поле "Response URL".)
Запустите блок запроса, чтобы отправить запрос и получить ответ. Полученный ответ нужно проанализировать, и нужно настроить, какие переменные извлекать из него. Для этого используйте поле "Saved Values".
Разберём пример, описанный выше.
Лучше всего понять, как обращаться к данным в JSON, на примере. В результате нашего запроса ответ, полученный в #{custom_answer}, выглядит так:
{
"suggestions": [
{
"value": "US Dollar",
"unrestricted_value": "US Dollar",
"data": {
"code": "840",
"strcode": "USD",
"name": "US Dollar",
"country": "United States"
}
}
]
}
В поле "Saved values" введите VALUE -> VARIABLE:
suggestions|0|value->CurrencyType;
suggestions|0|data|code->CurrencyDigCode;
suggestions|0|data|strcode->CurrencyStrCode;
suggestions|0|data|country->CurrencyCountry
suggestions - ключ для массива [{"value": "US Dollar", "unrestricted_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}]
suggestions|0 - ключ для первого элемента массива {"value": "US Dollar", "unrestricted_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}
suggestions|0|value - ключ для значения "US Dollar"
Самый длинный ключ в этом JSON:
suggestions|0|data|strcode - ключ для значения "USD"
Ключи разделяются вертикальной чертой (|). Если элемент JSON является массивом, к его элементам обращаются по индексу, начиная с 0, и это также записывается с помощью вертикальной черты.
Нужно повторить всю вложенность. Для удобства можно визуализировать JSON с помощью приложения JSON viewer.
Уровень вложенности разделяется вертикальной чертой. То есть нужно перечислить все ключи, чтобы добраться до значения, разделяя их вертикальной чертой.
Если JSON содержит массив, вместо ключа используйте индекс элемента, начиная с нуля.
Выражения для получения наших переменных разделяйте точкой с запятой ;.
Каждое выражение состоит из пути к данным в ответе и имени переменной, в которую нужно сохранить значение, разделённых ->.
Поисковый запрос представляет собой путь в JSON к нужному значению.
Разработка API для ботов
Бот поддерживает GET- и POST-запросы — это основные типы, используемые в большинстве публичных API.
GET — это запрос, который происходит при нажатии на ссылку или открытии URL в браузере. Параметры в этом запросе передаются в URL.
Синтаксис передачи параметров: после URL поставьте вопросительный знак ?, затем разделяйте каждый параметр амперсандом &. Каждый параметр состоит из имени, за которым следует = и его значение.
Пример URL с параметром:

Здесь передаётся один параметр q со значением "good music". %20 обозначает пробел.
При работе с конструктором вы можете просто использовать пробел — бот автоматически заменит его.
POST — это запрос, который чаще всего отправляется при заполнении формы на сайте. Параметры передаются в теле запроса. Хотя их тоже можно передавать в URL, как в GET-запросах, это встречается редко. Параметры в теле могут быть в формате JSON или в виде пар ключ-значение. Формы обычно отправляют пары ключ-значение, а API чаще всего используют JSON.
Заголовок запроса — можно добавить заголовок к каждому запросу. Чаще всего он указывает формат данных и ключи доступа. Обычно это поле оставляют пустым, но в редких случаях нужно указать API-токен или тип запроса, например: "Content-Type": "application/json".
JSON (JavaScript Object Notation, обычно произносится /ˈdʒeɪsən/ JAY-sən) — это текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается человеком. Для работы с API в боте нужно понимать этот формат, поскольку он лежит в основе всех взаимодействий.
Перед продолжением прочитайте следующие статьи:
https://www.json.org/json-ru.html https://developer.mozilla.org/ru/docs/Learn/JavaScript/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B/JSON
Также попробуйте создать свой собственный JSON-файл на этом сайте:
Практика
Запросы могут выполняться блоками и условиями. Условные запросы предназначены для проверки, может ли диалог пойти по определённой ветке на сайте. В этом случае запрос отправляется каждый раз, когда вычисляется условие ветки. Запросы в блоках, напротив, выполняются только тогда, когда диалог входит в это состояние.
Перед созданием запроса нужно выбрать его тип:

POST-data и POST-JSON различаются способом передачи параметров, как уже говорилось ранее (либо в формате JSON, либо в виде пар ключ-значение). Если вы выбираете JSON, параметры можно передавать только в теле запроса. Для параметров JSON POST появится дополнительное поле.
Важно! Параметры должны быть записаны только в формате JSON, так как бот работает исключительно с ним. Вы уже практиковались в написании JSON.
Ответ от сервера можно разобрать и сохранить в переменные.
Разбирать ответ можно только если он в формате JSON.
Сохранённые переменные записываются в последней незаполненной форме. Если форма отправляется через красный блок, переменные сбрасываются. Поэтому, если вам нужно сохранить эти данные, передавайте переменные в CRM-систему через жёлтый блок.
Также посмотреть, что бот записал в переменные, можно в разделе "Leads".

Передача переменных не как строки
По умолчанию значения переменных должны быть строками в формате "#{}", но в этом случае переменная отправляется как строка. Чтобы передать переменную как число, нужно отключить проверку формата параметров в настройках проекта:

Тогда можно просто использовать имя переменной, например: {"key": #{variable_name}}, где variable_name — это сама переменная, без кавычек вокруг.
После настройки параметров рекомендуется снова включить проверку формата.
Последнее обновление