Перейти к содержимому

Как сделать запрос к api

  • автор:

Про API запросы и статусы. Для начинающих тестировщиков. 2023 IT

API-запросы представляют собой отправку запросов на сервер по определенным эндпоинтам с использованием различных методов HTTP, таких как GET, POST, PUT, DELETE и других. Тестирование API является одной из важных тем для проверки качества работы ПО.

Далее вы узнаете про основы:

  • Про API запросы
  • HTTP статусы

API запросы.

API запросы могут быть разных типов в зависимости от выполняемого действия и используемого метода. Вот некоторые из наиболее распространенных типов API запросов:

1.) GET: Запрос на получение данных из сервера. Он используется для извлечения информации из ресурса без его изменения.

Получение списка всех пользователей:

GET /api/users

Получение информации о конкретном пользователе:

GET /api/users/

2.) POST: Запрос на создание нового ресурса на сервере. Он используется для отправки данных на сервер для создания нового объекта или выполнения какого-либо действия.

Создание нового пользователя:

POST /api/users Content-Type: application/json < "name": "John Doe", "email": "[email protected]", "age": 25 >

Создание нового заказа:

POST /api/orders Content-Type: application/json < "product": "iPhone", "quantity": 2, "customer_id": "12345" >

3.) PUT: Запрос на обновление существующего ресурса на сервере. Он используется для изменения информации или состояния существующего ресурса.

Обновление информации о пользователе:

PUT /api/users/ Content-Type: application/json < "name": "Jane Smith", "email": "[email protected]", "age": 30 >

Обновление информации о заказе:

PUT /api/orders/ Content-Type: application/json

4.) DELETE: Запрос на удаление существующего ресурса на сервере. Он используется для удаления ресурса по его идентификатору или другому уникальному идентификатору.

DELETE /api/users/
DELETE /api/orders/

5.) PATCH: Запрос на частичное обновление существующего ресурса на сервере. Он используется для изменения только некоторых полей или атрибутов ресурса, не затрагивая остальные.

Частичное обновление информации о заказе:

PATCH /api/orders/ Content-Type: application/json

Частичное обновление информации о пользователе:

PATCH /api/users/ Content-Type: application/json < "email": "[email protected]" >
HTTP статусы.

HTTP статусы являются важной частью коммуникации между клиентом и сервером в API. Они предоставляют информацию о результате выполнения запроса и помогают клиентскому приложению принять соответствующие действия. Вот некоторые распространенные примеры использования HTTP статусов в API:

  • 200 OK: Запрос успешно выполнен. В ответе содержится запрашиваемая информация.
  • 201 Created: Запрос успешно выполнен, и в результате был создан новый ресурс.
  • 204 No Content: Запрос успешно выполнен, но в ответе нет содержимого.
  • 400 Bad Request: Запрос содержит некорректные данные или не может быть обработан сервером.
  • 401 Unauthorized: Требуется аутентификация для доступа к ресурсу.
  • 403 Forbidden: У клиента нет разрешения на доступ к ресурсу.
  • 404 Not Found: Запрашиваемый ресурс не найден на сервере.
  • 500 Internal Server Error: Произошла внутренняя ошибка сервера при обработке запроса.

Примеры использования HTTP статусов в API:

1.) Запрос информации о пользователе:

URL: https://api.example.com/users/123Метод: GET

Ответ: Код статуса: 200 OK

2.) Создание нового пользователя:

Выполнение первого запроса к API в Быстрых командах на Mac

Чтобы выполнить свой первый запрос к API, Вам потребуется создать URL-адрес, указывающий на «конечную точку» API, с которой Вы хотите установить связь. Затем необходимо передать этот URL-адрес действию «Получить содержимое URL». Данное действие совершает запрос к API во время выполнения быстрой команды.

Запрос к API, который содержит действие «URL‑адрес», указывающее на конечную точку этого API; затем отображается действие «Получить содержимое URL».

Создание запроса к API

Конечная точка Typicode API требует, чтобы URL-запрос имел следующий формат:

Вместо текста в скобках введите название ресурса, к которому хотите получить доступ. Typicode предлагает множество примеров для тестирования результатов. В этом примере для запроса списка пользователей используется https://jsonplaceholder.typicode.com/users .

  • В приложении «Быстрые команды» на Mac добавьте запрос в URL‑адрес. Запрос users вернет список пользователей. Можно уточнить критерии поиска, например, указав идентификатор пользователя: https://jsonplaceholder.typicode.com/users/6 . Результат вернет пользователя с идентификатором 6. Большинство API позволяют выполнять запросы следующего формата: https://jsonplaceholder.typicode.com/users?username=Bret . Знак вопроса («?») предваряет запрос, используемый для поиска объектов с помощью пар «ключ-значение». В этом примере запрос ?username=Bret используется для поиска пользователя по имени Bret. Обратитесь к документации API, чтобы узнать, какие поисковые и другие запросы он поддерживает.

Выполнение запроса к API с помощью действия «Получить содержимое URL»

  1. В приложении «Быстрые команды» на Mac нажмите «Показать больше» в действии «Получить содержимое URL». Отобразятся следующие доступные типы запросов к API:
    • Запрос GET позволяет получать данные.
    • POST . Этот тип запроса позволяет создать новые данные.
    • Запрос PUT позволяет обновлять данные посредством их замены.
    • Запрос PATCH позволяет обновлять данные посредством их изменения.
    • DELETE . Данный запрос позволяет удалить объект, указанный в URL запроса.
  2. В этом примере используйте запрос GET для получения данных от Typicode API. Теперь, когда действие «URL-адрес» содержит Ваш запрос, а действие «Получить содержимое URL» настроено для получения данных с помощью GET , Вы можете выполнить запрос к API.

Примечание. Когда действие «Получить содержимое URL» настроено для типов запросов POST , PUT или PATCH , добавляется дополнительный параметр «Тело запроса». Параметр «Тело запроса» делает возможной отправку в составе Вашего запроса к API таких типов данных, как JSON, форма или файл. Это позволяет Вам вводить новые данные вручную или добавлять их с помощью переменных, чтобы затем отправлять их в запросе к API для создания, замещения или правки объекта данных.

  • Чтобы протестировать быструю команду, нажмите . Результаты, полученные от быстрой команды для выполнения запроса к Typicode API; отображается список пользователей.На первый взгляд может показаться, что API вернул нечитаемый текст. Данные кодированы в JSON; эта аббревиатура расшифровывается как JavaScript Object Notation.
  • Чтобы узнать о том, как работать с JSON, и продолжить рассмотрение примера Typicode API, см. раздел Использование JSON в приложении «Быстрые команды» на Mac.

    Некоторые приложения, службы и контент доступны не во всех странах и регионах.

    Варианты отправки запросов

    Общаться с REST API, т.е. отправлять к нему запросы и получать ответы, можно разными способами. Собственно, этим он и удобен и для этого создан. По сути тут нет никаких ограничений: любая программа, которая умеет отправлять запросы, может управлять сайтом удаленно. Или это можно делать из самого сайта, в этом случае будут создаваться AJAX запросы к REST API. В этом разделе мы приведем несколько разных примеров кода, как можно отправлять запросы к REST API. Тут сразу нужно разделить запросы сайта к самому себе и запросы одного сайта или приложение к другому сайту. Во многом эти запросы похожи, пожалуй, самое главное отличие в них это авторизация: когда запрос отправляет самому себе, то авторизация, как правило, не нужна, а когда удаленно к сайту, то авторизацию нужно проходить отдельно, подробнее об этом читайте в разделе Аутентификация в REST API.

    Оглавление:

    • Как сделать внутренний запрос к REST API из плагина?
    • Запрос с помощью Fetch в JavaScript
    • Запрос с помощью jQuery AJAX

    Как сделать внутренний запрос к REST API из плагина?

    Это можно сделать с помощью функции rest_do_request(). Она создает запрос к API внутри WordPress, т.е. технически запроса не происходит:

    $request = new WP_REST_Request( 'GET', '/wp/v2/posts' ); // Установим параметры запроса $request->set_param( 'per_page', 20 ); $response = rest_do_request( $request );

    Запрос с помощью Fetch в JavaScript

    Fetch — это веб-api, который призван заменить оригинальный метод XMLHTTPRequests для работы с AJAX и HTTP запросами. Fetch поддерживается в последних версиях современных браузеров: см. полифилл по этой ссылке, если он нужен.

    var apiURL = 'http://demo.wp-api.org/wp-json'; // Получим последние записи fetch( apiURL + '/wp/v2/posts/' ) .then( response => < if ( response.status !== 200 ) < throw new Error( 'Problem! Status Code: ' + response.status ); >response.json().then( posts => < console.log( posts ); // выведем в консоль >); >) .catch(function(err) < console.log( 'Error: ', err ); >); // Получим запись с apiURL + '/wp/v2/posts/1' ) .then( response => < if ( response.status !== 200 ) < throw new Error('Problem! Status Code: ' + response.status); >response.json().then( post => < console.log( post ); >); >) .catch(function( err ) < console.error( err ); >);

    Сначала мы устанавливаем переменную apiURL , где содержится путь до корня REST API, чтобы использовать её дальше в коде.

    В обоих примерах сначала выбрасываем ошибку (throw), если статус ответа не 200. Если ошибки нет, то превращаем ответ в json и обрабатываем его.

    В конце ловим с помощью .catch() любые выброшенные нами ошибки.

    Запрос с помощью jQuery AJAX

    Пример JS кода на основе jQuery.

    (function($) < var apiURL = 'http://demo.wp-api.org/wp-json'; // Получим последние записи $.ajax( < url: apiURL + '/wp/v2/posts/', success: function ( posts ) < console.log( 'Array of posts', posts ); >, error: function( err ) < console.log( 'Error: ', err ); >> ); // Получим запись с < url: apiURL + '/wp/v2/posts/1', success: function ( post ) < console.log( 'Array of posts', post ); >, error: function( err ) < console.log( 'Error: ', err ); >>); >)( jQuery );

    Сначала мы устанавливаем переменную apiURL , где содержится путь до корня REST API, чтобы использовать её дальше в коде.

    $.ajax автоматически преобразует JSON ответ в массив или объект JavaScript. Поэтому тут не нужны дополнительные преобразования, можно сразу работать с ответом, как будто это объект или массив JavaScript.

    Как сделать запрос к api

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

    • Отправка методом GET →
    • Отправка методом POST →
    • Удаление последнего сообщения от бота с помощью POST-запроса →
    • Удаление последнего сообщения от пользователя с помощью POST-запроса →
    • Удаление любого сообщения от бота с помощью POST-запроса →
    • Отправка стикера с помощью POST-запроса →
    • Отправка запроса в GPT с помощью POST-запроса →
    • Обработка ответа — объект →

    Ботмама умеет отправлять запросы и принимать ответы только в формате JSON. Если нужная вам система не поддерживает JSON, нужно искать сервис, который изменяет формат запроса, или писать кодом скрипт обработки на сервере. Ещё можно использовать сервисы, которые заменяют интеграцию запросами — например, Zapier.

    Объем массива с объектами для отправления запросом может быть не более 1 Мб

    Существует множество типов запросов, мы используем только самые распространённые: GET, POST, PUT, PATCH, DELETE.

    • GET чаще всего используется как запрос получения информации. В отдельных случаях он может использоваться равнозначно с другими типами. Например, в Telegram можно использовать и GET, и POST для одинаковых запросов.
    • POST используется для отправки информации и создания объектов. Этим методом чаще всего создаются заявки, формируются заказы и т.д.
    • PUT обновляет информацию об объекте.
    • PATCH частично обновляет информацию об объекте.
    • DELETE удаляет созданный объект.

    Тело в GET запросе можно передавать в строке URL, для остальных запросов — только в специальном поле компонента.

    Основная информация об ответах

    Ответом на запрос может быть информация об ошибке или об удачном запросе с дополнительными данными или без них.

    Об ответах на запросы можно подробно узнать в Википедии.

    Чаще всего приходят ответы успеха и ошибок.

    Если запрос прошёл успешно, код будет иметь значение, начинающееся на 2:

    • 200 OK — успешный запрос.
    • 201 Created — в результате успешного выполнения запроса был создан новый ресурс.
    • 202 Accepted — запрос был принят на обработку, но она не завершена.

    Если запрос не прошёл из-за ошибки параметров запроса, Ботмама считает его успешным. Такие ошибки начинаются на 4:

    • 400 Bad Request — сервер обнаружил в запросе клиента синтаксическую ошибку. Этот код используется для любых ошибок такого типа, если разработчик сервиса не вложил другие значения.
    • 401 Unauthorized — для доступа к запрашиваемому ресурсу требуется авторизация.
    • 403 Forbidden — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
    • 404 Not Found — запрашиваемый ресурс не был найдет или не существует.

    Если запрос не прошёл из-за ошибки сервера (запрос упал по таймауту, сервер недоступен или тело не удалось распарсить), бот исполняет экран ошибки. В остальных случаях сработает экран успеха. Если ответ пришел валидным со статусом не 200, нужно установить компонент Развилка после запроса и смотреть на статус в теле. Исходя из этого направлять на нужный экран. Ошибки сервера начинаются на 5:

    • 500 Internal Server Error — любая внутренняя ошибка сервера. Этот код используется, если разработчик не добавил код для описания данной ошибки.
    • 501 Not Implemented — сервер не может обработать запрос. Например, вы используете несуществующий метод.
    • 502 Bad Gateway — когда сервер, к которому вы делаете запрос, фактически является буфером между вами и другим сервером, получает некорректный ответ от другого сервера.
    • 503 Service Unavailable — сервер временно не может обрабатывать запросы. Такие ошибки возникают, когда сервер выключен, не имеет доступа к Сети или ограничен в доступе.
    • 504 Gateway Timeout — когда сервер, к которому вы делаете запрос, фактически является буфером между вами и другим сервером, не получает ответ от другого сервера.

    Отправка методом GET

    Создание URL для GET-запроса

    Для примера мы будем использовать запросы к Telegram bot API.

    1. Добавим токен бота в URL-запрос.

    Все запросы в Telegram создаются по шаблону:

    https://api.telegram.org/bot/НАЗВАНИЕ_МЕТОДА

    Каждому боту при создании присваивается уникальный токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.

    Авторизация запросов к Telegram проходит по токену бота. Это значит, что срабатывать запрос будет в боте, токен которого вы указали. К примеру, отправляя запрос с текстом, вы можете указать токен другого бота, и тогда сообщение будет приходить в него.

    Пока что URL будет таким:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/НАЗВАНИЕ_МЕТОДА

    Где вместо 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 — токен вашего бота.

    2. Добавим метод API.

    Метод API — действие, которое должна совершить система в заданном боте.

    Один из самых простых методов — sendMessage. Он отправляет текст.

    После вставки метода API наш шаблон выглядит так:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage

    3. Добавим параметры запроса.

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

    Обязательными параметрами являются chat_id и text:

    • chat_id — уникальный идентификатор пользователя в Telegram. Его мы получаем из переменной >. Чтобы отправить сообщение определённому пользователю, нужно вставить значение его переменной. В нашем примере мы выводим значение из переменных пользователя.
    • text — текст сообщения, которое мы отправляем.

    Для передачи пробелов в URL запроса нужно заменять их знаком +. Если отправить текст без замены, он оборвётся на первом пробеле.

    Для запроса методом GET метод API и параметры передаются в URL запроса. Параметры от метода API отделяются знаком вопроса. Значение параметра отправляется после знака равенства. Между собой параметры отделяются знаком &.

    4. Формируем шаблон GET-запроса.

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage?параметр1=значение1&параметр2=значение2

    Вместо параметра1 добавим chat_id, значение1 выведем из переменных >.

    При необходимости, в значении1 можно указать конкретное значение.

    Вместо параметра2 добавим text, в значение2 напишем текст, который должен прийти в бота.

    URL GET-запроса готов:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage?chat_id=>&text=Привет+из+бота!

    Настройка компонента

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запросаGET.

    3. Укажите URL запроса.

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Если требует API, добавьте дополнительные заголовки запроса в выпадающем меню компонента. Не удаляйте заголовки по умолчанию.

    7. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    8. Задайте Имя переменной для кода ответа, если нужно записать ответ от сервера не в last_request_status_code, куда ответ приходит по умолчанию.

    9. Задайте Имя переменной для заголовков ответа, если предполагается, что в заголовках придут важные данные. Например: токены авторизации, куки, подпись HMAC или еще что-то, что может потребоваться дальше для использования в боте.

    10. Разверните настройки компонента для продолжения.

    11. Отметьте галочками, какие статусы ответов будут считаться успешными, а какие — нет.

    12. Для использования данных для авторизации по http basic authentication отметьте галочкой Использовать HTTP-авторизацию.

    13. Отметьте галочкой Кодировать тело запроса, если нужно передать параметры по стандарту Юникод.

    14. Отметьте галочкой Пропустить проверку HTTPS-сертификата, если у вас возникли проблемы с валидностью сертификата. Бот продолжит работу, но мы рекомендуем исправлять проблемы с сертификатом как можно быстрее.

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

    Отправка методом POST

    Создание URL для POST-запроса

    Так как в POST запросе, параметры запроса и их значения составляют тело запроса, то в строке URL остаются только:

    https://api.telegram.org/bot/НАЗВАНИЕ_МЕТОДА

    Где — токен бота, где будет срабатывать запрос.

    Пример токена: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11.

    Название метода оставим, как в прошлом примере — sendMessage.

    Получаем URL такого вида:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage

    Параметры в URL, как в GET запросе, добавлять не нужно.

    Для метода POST, в URL передаётся только метод API, параметры отправляются в теле запроса в формате JSON.

    JSON — один из форматов данных. Он состоит из пар данных: ключ-значение. Ключ — название параметра, значение — значение параметра (может быть определенным или переменной).

    Чтобы сделать тело с нашими параметрами, указываем их в формате JSON:

    < "chat_id": ">", "text": "Привет из бота!" >

    Важно следить за синтаксисом. Если вы забудете поставить хотя бы один символ, запрос не сработает. Это самая распространённая ошибка при отправке запросов.

    Переносить строки можно с помощью \n, но такие символы ломают JSON. Чтобы JSON не ломался, нужно экранировать таким образом: /\n. Но так сделать не получится, если мы отправляем в переменной var текст от пользователя. В таком случае, нужно использовать хелпер escapeJsonEntities таким образом: >.

    Настройка компонента

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запросаPOST.

    3. Укажите URL запроса.

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Тело запроса для метода POST указывается, если того требует API. Поддерживается только в формате JSON.

    7. Если требует API, добавьте дополнительные заголовки запроса в выпадающем меню компонента. Не удаляйте заголовки по умолчанию.

    8. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    9. Задайте Имя переменной для кода ответа, если нужно записать ответ от сервера не в last_request_status_code, куда ответ приходит по умолчанию.

    10. Задайте Имя переменной для заголовков ответа, если предполагается, что в заголовках придут важные данные. Например: токены авторизации, куки, подпись HMAC или еще что-то, что может потребоваться дальше для использования в боте.

    11. Разверните настройки компонента для продолжения.

    12. Отметьте галочками, какие статусы ответов будут считаться успешными, а какие — нет.

    13. Для использования данных для авторизации по http basic authentication отметьте галочкой Использовать HTTP-авторизацию.

    14. Отметьте галочкой Кодировать тело запроса, если нужно передать параметры по стандарту Юникод.

    15. Отметьте галочкой Пропустить проверку HTTPS-сертификата, если у вас возникли проблемы с валидностью сертификата. Бот продолжит работу, но мы рекомендуем исправлять проблемы с сертификатом как можно быстрее.

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

    Удаление последнего сообщения от бота с помощью POST-запроса

    По правилам Телеграма нельзя удалять сообщения, после отправки которых прошло более 48 часов

    Для тестирования метода POST можно попробовать удалить предыдущее сообщение методом deleteMessage.

    • chat_id — уникальный идентификатор пользователя в боте. Его мы получаем как основную переменную >.
    • message_id — уникальный идентификатор сообщения, находится в переменной >.

    Создадим POST-запрос deleteMessage в конструкторе:

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запросаPOST.

    3. Укажите URL запроса.

    Путь запроса (URL) будет иметь такой вид:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/deleteMessage

    Где где 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 — токен вашего бота.

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Добавьте Тело запроса. Поддерживается тело только в формате JSON.

    < "chat_id": ">", "message_id": ">" >

    7. Если требует API, добавьте дополнительные заголовки запроса в выпадающем меню компонента. Не удаляйте заголовки по умолчанию.

    8. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    9. Задайте Имя переменной для кода ответа, если нужно записать ответ от сервера не в last_request_status_code, куда ответ приходит по умолчанию.

    10. Задайте Имя переменной для заголовков ответа, если предполагается, что в заголовках придут важные данные. Например: токены авторизации, куки, подпись HMAC или еще что-то, что может потребоваться дальше для использования в боте.

    11. Разверните настройки компонента для продолжения.

    12. Отметьте галочками, какие статусы ответов будут считаться успешными, а какие — нет.

    13. Для использования данных для авторизации по http basic authentication отметьте галочкой Использовать HTTP-авторизацию.

    14. Отметьте галочкой Кодировать тело запроса, если нужно передать параметры по стандарту Юникод.

    15. Отметьте галочкой Пропустить проверку HTTPS-сертификата, если у вас возникли проблемы с валидностью сертификата. Бот продолжит работу, но мы рекомендуем исправлять проблемы с сертификатом как можно быстрее.

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

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

    Все шаги по созданию запроса на удаление последнего сообщения от чат-бота вы можете посмотреть в видеоуроке:

    Подобным образом можно удалить последнее сообщение от пользователя.

    Все параметры будут такими же, как и в удалении последнего сообщения от бота, кроме Тела запроса.

    Тело запроса будет таким:

    < "chat_id": ">", "message_id": ">" >

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

    Это может быть Развилка, Ввод от пользователя или на экран с запросом должна вести Перемотка с активным чекбоксом «‎Остановить бота после перемотки до следующего сообщения от пользователя».

    Все шаги по созданию запроса на удаление последнего сообщения от пользователя вы можете посмотреть в видеоуроке:

    Удаление любого сообщения от бота с помощью POST-запроса

    Методом deleteMessage также можно удалить любое сообщение от бота.

    Для этого перезапишите > удаляемого компонента в другую переменную с помощью компонента Запись переменной.

    В поле Имя задайте новое имя переменной, в поле Значение впишите >.

    В нашем примере новое имя для переменной с сообщением — dlt.

    В будущем добавим её в тело запроса на удаление в двойных фигурных скобках: >.

    Для наглядного примера удаления любого сообщение от бота, а не только последнего, как в прошлом примере, экран с запросом добавим после всех сообщений.

    После записи ID экрана в переменную, оформим запрос на удаление этого экрана.

    • chat_id — уникальный идентификатор пользователя в боте. Его мы получаем как основную переменную >.
    • message_id — уникальный идентификатор сообщения, находится в переменной >.

    Создадим POST-запрос deleteMessage в конструкторе:

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запроса — POST.

    3. Укажите URL запроса.

    Путь запроса (URL) будет иметь такой вид:

    https://api.telegram.org/bot12345/deleteMessage

    Где где 12345 — токен вашего бота.

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Добавьте Тело запроса. Поддерживается тело только в формате JSON.

    Не забудем добавить нашу перезаписанную переменную в message_id.

    < "chat_id": ">", "message_id": ">" >

    7. Если требует API, добавьте дополнительные заголовки запроса в выпадающем меню компонента. Не удаляйте заголовки по умолчанию.

    8. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    9. Задайте Имя переменной для кода ответа, если нужно записать ответ от сервера не в last_request_status_code, куда ответ приходит по умолчанию.

    10. Задайте Имя переменной для заголовков ответа, если предполагается, что в заголовках придут важные данные. Например: токены авторизации, куки, подпись HMAC или еще что-то, что может потребоваться дальше для использования в боте.

    11. Разверните настройки компонента для продолжения.

    12. Отметьте галочками, какие статусы ответов будут считаться успешными, а какие — нет.

    13. Для использования данных для авторизации по http basic authentication отметьте галочкой Использовать HTTP-авторизацию.

    14. Отметьте галочкой Кодировать тело запроса, если нужно передать параметры по стандарту Юникод.

    15. Отметьте галочкой Пропустить проверку HTTPS-сертификата, если у вас возникли проблемы с валидностью сертификата. Бот продолжит работу, но мы рекомендуем исправлять проблемы с сертификатом как можно быстрее.

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

    Если все сделано правильно, то удаляться будет то сообщение, message_id которого мы перезаписали и затем добавили в Тело запроса.

    Все шаги по созданию запроса на удаление любого сообщения от бота вы можете посмотреть в видеоуроке:

    Отправка стикера с помощью POST-запроса

    Отправим в чат стикер методом sendSticker.

    Стикер можно отправлять как обычным Запросом к API, так и Нативным запросом.

    • chat_id — уникальный идентификатор пользователя в боте. Его мы получаем как основную переменную >.
    • sticker — уникальный идентификатор стикера. ID стикера можно узнать, прислав стикер боту Sticker ID.

    Создадим POST-запрос sendSticker в конструкторе:

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запросаPOST.

    3. Укажите URL запроса.

    Путь запроса (URL) будет иметь такой вид:

    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendSticker

    Где 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 — токен вашего бота.

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Добавьте Тело запроса. Поддерживается тело только в формате JSON.

    < "chat_id": ">", "sticker": "12345" >

    Где 12345 — ID отправляемого стикера.

    7. Если требует API, добавьте дополнительные заголовки запроса в выпадающем меню компонента. Не удаляйте заголовки по умолчанию.

    8. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    9. Задайте Имя переменной для кода ответа, если нужно записать ответ от сервера не в last_request_status_code, куда ответ приходит по умолчанию.

    10. Задайте Имя переменной для заголовков ответа, если предполагается, что в заголовках придут важные данные. Например: токены авторизации, куки, подпись HMAC или еще что-то, что может потребоваться дальше для использования в боте.

    11. Разверните настройки компонента для продолжения.

    12. Отметьте галочками, какие статусы ответов будут считаться успешными, а какие — нет.

    13. Для использования данных для авторизации по http basic authentication отметьте галочкой Использовать HTTP-авторизацию.

    14. Отметьте галочкой Кодировать тело запроса, если нужно передать параметры по стандарту Юникод.

    15. Отметьте галочкой Пропустить проверку HTTPS-сертификата, если у вас возникли проблемы с валидностью сертификата. Бот продолжит работу, но мы рекомендуем исправлять проблемы с сертификатом как можно быстрее.

    Если все сделано верно, то при исполнении Запроса, в бот придет стикер.

    Все шаги по созданию запроса для отправки стикера от бота вы можете посмотреть в видеоуроке:

    Отправка запроса в GPT с помощью POST-запроса

    Обратимся к GPT с помощью POST запроса. Ответ от нейросети выведем в боте.

    • model — языковая модель, на котором нам ответит GPT, рекомендуем использовать text-davinci-003
    • prompt — текст, который отправиться в GPT. Текст можно заранее записать в переменную и вывести в теле запроса
    • max_tokens — максимальное количество символов в ответе от gpt. Значение может быть от 16 до 4000

    Создадим POST-запрос к GPT в конструкторе:

    1. Добавьте компонент Запрос на экран.

    2. Выберите Метод запроса — POST.

    3. Укажите URL запроса.

    Путь запроса (URL) будет иметь такой вид:

    https://api.openai.com/v1/completions

    4. Укажите Экран, который исполнится при удачном выполнении запроса.

    5. Укажите Экран, который выполнится при ошибке запроса.

    6. Добавьте Тело запроса. Поддерживается тело только в формате JSON:

    < "model": "text-davinci-003", "prompt": ">", "max_tokens": 400 >

    7. Добавьте дополнительный заголовок запроса:

    Ключ: Authorization Значение: Bearer 12345xQWERTY, где 12345xQWERTY — ваш токен, который вы получили в OPEN AI.

    Если доступ из вашей страны заблокирован, воспользуйтесь VPN.

    Получить токен можно в личном кабинете Open AI (LogIn — API). В разделе Overview откройте вкладку Personal и выберите в ней раздел View API keys.

    Сгенерируйте токен с помощью кнопки Create new secret key.

    Не удаляйте заголовки по умолчанию.

    8. Задайте Имя переменной для тела ответа, если нужно записать ответ от сервера не в last_request, куда ответ приходит по умолчанию.

    9. Чтобы ответ от GPT, приходил сразу в бот, добавьте сообщение, где будет выводиться переменная с ответом. Если вы не меняли переменную для ответа по умолчанию, добавьте такой шаблон:

    10. После ответа, можно добавить Перемотку на тот же самый экран, чтобы бы не перезапускать сценарий для нового обращения к GPT.

    Обработка ответа — объект

    Для примера мы будем использовать ресурс https://www.cbr-xml-daily.ru.

    В нём мы выбираем запрос в формате JSON:

    https://www.cbr-xml-daily.ru/daily_json.js

    Открываем его как обычную ссылку в браузере и получаем ответ в JSON-формате.

    Чтобы ответ был удобным для чтения, поставьте расширение на браузер. Для Google Chrome это JSON Formatter.

    Например, мы хотим получить стоимость 1 белорусского рубля. Находим часть, где выводится значение BYN и составляем переменную.

    Ответ на запрос находится в объекте >.

    Чтобы вывести переменную внутри текста, вводим её внутри фигурных скобок. Для этого делаем запрос и выводим полученный ответ в тексте.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *