HTTP
Входит в Macro DeckОтправляйте HTTP-запросы одной кнопкой и сохраняйте значения из ответа в переменные.
Страница интеграции HTTP с включённым переключателем и без параметров настройки
- GET, POST, PUT, PATCH, DELETE и другие методы с параметрами запроса и заголовками
- Аутентификация Basic, токен Bearer или ключ API в заголовке
- Тело запроса JSON, форма, текст и загрузка файла
- Сохранение статуса, заголовков или значений JSON в переменные
- Переменные в значениях параметров запроса и заголовков
Интеграция HTTP отправляет веб-запросы из Macro Deck. С её помощью можно вызвать вебхук, управлять устройством в вашей сети, у которого есть веб-API, или считать значение из онлайн-сервиса и показать его на кнопке. Она входит в Macro Deck и включена с самого начала, поэтому ни к чему подключаться и никуда входить не нужно.
Два действия
Отправить HTTP-запрос собирает полноценный запрос. Вы выбираете Метод, вводите URL и добавляете Параметры запроса и Заголовки в виде пар «имя и значение». В поле Тип тела выбирается none, json, form, text или multipart (загрузка файла с дополнительными полями формы). Аутентификация предлагает basic (имя пользователя и пароль), bearer (токен) и header (токен в заголовке с заданным именем, например X-Api-Key). Ожидаемый статус определяет, какие ответы считаются успешными, по умолчанию 2xx. Также можно задать Тайм-аут, выключить параметр Следовать перенаправлениям и ограничить Максимальный размер ответа (байт).
Поле Захват сохраняет части ответа в переменные. Каждая строка связывает имя переменной с селектором: $status, $ok, $duration, $body, $truncated, $headers, $header:<name> или путь JSON, например data.items[0].name. Переменная, которой ещё нет, создаётся.
Действие Получить значение JSON служит коротким способом считать одно значение: введите URL, Путь JSON и переменную в поле Сохранить в переменную.
Примеры
- Кнопка, которая отправляет
{"text": "Stream is live"}в вебхук чата с помощью действия Отправить HTTP-запрос с типом телаjson. - Кнопка, которая включает умную розетку в вашей сети через её локальный веб-API.
- Кнопка, которая считывает текущую цену из публичного API с помощью действия Получить значение JSON и показывает её в подписи через
{{ vars.price }}. - Цепочка действий, которая отправляет запрос, захватывает
$statusи с помощью Если / Иначе окрашивает кнопку в красный, если сервер ответил не200.
Значения параметров запроса и заголовков могут содержать переменные, например {{ vars.channel }}. Запрос выполняется на компьютере, где работает Macro Deck, поэтому адреса вроде http://192.168.1.20 достигают устройств в сети этого компьютера. Действие завершается с понятным сообщением, если сервер недоступен, время запроса истекло, сертификат TLS отклонён или статус не тот, который вы ожидали.
Что понадобится
- Macro Deck 3 в Windows, macOS или Linux
- Адрес веб-API или вебхука, который нужно вызвать
- Ключ API, токен или пароль, если сервис их требует
Настройка
Шаг 1: Убедитесь, что интеграция включена
В Macro Deck нажмите Интеграции на боковой панели и выберите HTTP. Переключатель в правом верхнем углу по умолчанию включён; если он выключен, включите его. Настраивать ничего не нужно: на вкладке Обзор написано Для этой интеграции нет параметров настройки.
Шаг 2: Добавьте действие HTTP на кнопку
На странице Панель нажмите на кнопку. Панель должна быть разблокирована: если в правом верхнем углу показана кнопка Заблокировать, так и есть. Откроется редактор, в котором выбран триггер Короткое нажатие. Нажмите + Добавить действие, слева в диалоге Добавить действие выберите HTTP и затем Отправить HTTP-запрос или Получить значение JSON, если нужно только считать одно значение. Название можно также ввести в поле Поиск действий….
Шаг 3: Введите запрос
Выберите Метод и введите URL. Добавьте Параметры запроса и Заголовки, если их требует API. Для запроса с данными выберите Тип тела и заполните Тело JSON, Поля формы или Текстовое тело.
Шаг 4: Добавьте аутентификацию
Если сервису нужен вход или ключ, выберите его в поле Аутентификация:
basicс полями Имя пользователя и Пароль / токен,bearerс токеном в поле Пароль / токен илиheaderс полем Имя заголовка и ключом в поле Пароль / токен. Большинство сервисов показывают ключи API или токены в настройках аккаунта или для разработчиков.Шаг 5: Сохраните значения из ответа
Чтобы использовать ответ, добавьте строки в поле Захват: имя переменной и селектор, например
$statusили путь JSON вродеdata.temperature. Для действия Получить значение JSON введите Путь JSON и выберите переменную в поле Сохранить в переменную.Шаг 6: Проверьте кнопку
Нажмите Запустить в редакторе, чтобы сразу отправить запрос, или сохраните и нажмите кнопку. Если действие не выполнилось, его сообщение объяснит причину, например что сервер недоступен или статус не совпал с ожидаемым в поле Ожидаемый статус.
Действия2
Назначьте их на кнопку или запускайте из цепочки действий.
- Отправить HTTP-запрос
- Отправляет настраиваемый HTTP-запрос и может сохранить ответ в переменные.
- Получить значение JSON
- Загружает URL и записывает одно значение из ответа JSON в переменную.
Часто задаваемые вопросы
Где хранятся мои ключи API и пароли?
То, что вы вводите в поле Пароль / токен, хранится в зашифрованном виде и расшифровывается только при отправке запроса. Значения, которые вы вводите в поле Заголовки, хранятся без шифрования и попадают в экспортированные профили, поэтому ключи и токены указывайте в полях аутентификации.
Можно ли обращаться к устройству в локальной сети?
Да. Запрос отправляется с компьютера, где работает Macro Deck, поэтому работает любой адрес, доступный с этого компьютера. Для устройства с самоподписанным сертификатом можно выключить параметр Проверять сертификат TLS, но делайте это только для устройств в собственной сети.
Почему действие завершается с ошибкой, хотя сервер ответил?
Ответ не совпал со значением поля Ожидаемый статус, по умолчанию 2xx. Введите код статуса, который на самом деле возвращает API, диапазон вроде 200-204, список или any, чтобы принимать любой статус. Действие Получить значение JSON всегда ожидает ответ 2xx.
Какие пути JSON можно использовать?
Используйте точки и индексы, например data.items[0].name или [0].id, либо $ для всего документа. В поле Захват зарезервированные селекторы, такие как $status, имеют приоритет, поэтому поле, которое действительно называется status, считывается через $.status.
Нужно ли сначала создавать переменные?
Нет. Если захват или поле Сохранить в переменную указывает на несуществующую переменную, Macro Deck её создаёт. Если переменная с таким именем уже есть, но другого типа, сохранение завершается с сообщением.
Ещё в группе «Умный дом и веб»
Home Assistant
Входит в Macro DeckВключайте свет, запускайте сцены и скрипты и показывайте на панели живые состояния из Home Assistant.
AdGuard Home
Входит в Macro DeckВключайте, выключайте или приостанавливайте защиту AdGuard Home и показывайте его статистику на панели.
RSS-ленты
Входит в Macro DeckСледите за лентами RSS и Atom, показывайте их новейшие статьи в виджетах и реагируйте на появление новых статей.
Погода
Входит в Macro DeckПоказывайте на панели текущую погоду и прогноз для своих мест без ключа API.