HTTP
Macro Deck 自带通过按键发送 HTTP 请求,并将响应中的值保存到变量中。
HTTP 集成页面,开关已打开,没有配置选项
- 支持 GET、POST、PUT、PATCH、DELETE 等方法,以及查询参数和请求头
- Basic、Bearer 令牌或 API 密钥请求头身份验证
- JSON、表单、文本和文件上传正文
- 将状态码、响应头或 JSON 值保存到变量中
- 查询参数和请求头的值中可以使用变量
HTTP 集成可以从 Macro Deck 发送 Web 请求。可以用它调用 Webhook、控制网络中带有 Web 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 路径,并在 保存到变量 中选择变量。
示例设置
- 一个按键,使用 发送 HTTP 请求 和正文类型
json,向聊天 Webhook 发送{"text": "Stream is live"}。 - 一个按键,通过本地 Web API 打开网络中的智能插座。
- 一个按键,使用 获取 JSON 值 从公共 API 读取当前价格,并用
{{ vars.price }}显示在其标签中。 - 一个流程,发送请求、捕获
$status,并在服务器未返回200时使用 如果 / 否则 将按键设为红色。
查询参数和请求头的值中可以包含变量,例如 {{ vars.channel }}。请求在运行 Macro Deck 的电脑上执行,因此 http://192.168.1.20 这样的地址可以访问该电脑所在网络中的设备。当服务器无法访问、请求超时、TLS 证书被拒绝或状态码与预期不符时,动作会失败并显示清晰的消息。
准备工作
- Windows、macOS 或 Linux 上的 Macro Deck 3
- 要调用的 Web API 或 Webhook 的地址
- 如果服务需要:API 密钥、令牌或密码
设置步骤
第 1 步: 确认集成已启用
在 Macro Deck 中,点击侧边栏中的 集成,然后点击 HTTP。右上角的开关默认处于打开状态;如果已关闭,请将其打开。无需任何设置:概览 选项卡会显示 此集成没有可用的配置选项。
第 2 步: 为按键添加 HTTP 动作
在 面板 页面上点击一个按键。面板必须处于解锁状态:右上角显示 锁定 按钮时,面板即为解锁状态。编辑器打开时已选中 短按。点击 + 添加动作,在 添加动作 对话框左侧选择 HTTP,然后选择 发送 HTTP 请求;如果只想读取一个值,则选择 获取 JSON 值。也可以在 搜索动作… 中输入名称。
第 3 步: 输入请求
选择 方法 并输入 URL。如果 API 需要,请添加 查询参数 和 请求头。对于带数据的请求,选择 正文类型,并填写 JSON 正文、表单字段 或 文本正文。
第 4 步: 添加身份验证
如果服务需要登录或密钥,请在 身份验证 中选择:
basic配合 用户名 和 密码 / 令牌,bearer将令牌填入 密码 / 令牌,或者header配合 请求头名称 并将密钥填入 密码 / 令牌。大多数服务会在账户或开发者设置中显示其 API 密钥或令牌。第 5 步: 保存响应中的值
如需使用响应,请在 捕获 下添加行:一个变量名和一个选择器,例如
$status,或data.temperature这样的 JSON 路径。使用 获取 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 密钥。