HTTP
Macro Deck に同梱ボタンから HTTP リクエストを送信し、応答の値を変数に保存します。
スイッチがオンで設定項目がない HTTP 連携のページ
- GET、POST、PUT、PATCH、DELETE などに対応し、クエリとヘッダーも指定可能
- Basic、Bearer トークン、API キーのヘッダーによる認証
- JSON、フォーム、テキスト、ファイルアップロードの本文
- ステータス、ヘッダー、JSON の値を変数に保存
- クエリパラメーターとヘッダーの値に変数を使用可能
HTTP 連携は Macro Deck から Web リクエストを送信します。Webhook の呼び出し、Web API を持つネットワーク上のデバイスの操作、オンラインサービスから値を読み取ってボタンに表示する、といった用途に使えます。Macro Deck に同梱されていて最初から有効なので、接続やサインインは必要ありません。
2 つのアクション
HTTP リクエストを送信 は完全なリクエストを組み立てます。メソッド を選び、URL を入力し、クエリパラメーター と ヘッダー を名前と値の組で追加します。本文の種類 では none、json、form、text、multipart (追加のフォームフィールド付きのファイルアップロード) から選びます。認証 には basic (ユーザー名とパスワード)、bearer (トークン)、header (X-Api-Key など、名前を指定したヘッダーに入れるトークン) があります。期待するステータス は、どの応答を成功とみなすかを決めます (既定は 2xx)。タイムアウト の設定、リダイレクトに従う のオフ、応答の最大サイズ(バイト) の制限もできます。
取得 は応答の一部を変数に保存します。各行で変数名とセレクターを組にします。セレクターは $status、$ok、$duration、$body、$truncated、$headers、$header:<name>、または data.items[0].name のような JSON パスです。まだ存在しない変数は作成されます。
JSON の値を取得 は、値を 1 つだけ読み取るための簡易版です。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 リクエストを送信 を選びます。値を 1 つ読み取るだけなら JSON の値を取得 を選びます。アクションを検索… に名前を入力して探すこともできます。
ステップ 3: リクエストを入力する
メソッド を選び、URL を入力します。API が必要とする場合は クエリパラメーター と ヘッダー を追加します。データを送るリクエストでは、本文の種類 を選んで JSON 本文、フォームフィールド、テキスト本文 を入力します。
ステップ 4: 認証を追加する
サービスがログインやキーを必要とする場合は、認証 で選びます。
basicなら ユーザー名 と パスワード/トークン、bearerなら パスワード/トークン にトークン、headerなら ヘッダー名 と パスワード/トークン にキーを入力します。多くのサービスでは、API キーやトークンはアカウント設定や開発者向けの設定に表示されます。ステップ 5: 応答の値を保存する
応答を使うには、取得 に行を追加します。変数名と、
$statusやdata.temperatureのような JSON パスなどのセレクターを入力します。JSON の値を取得 では、JSON パス を入力し、変数に保存 で変数を選びます。ステップ 6: ボタンを試す
エディターで 実行 をクリックするとすぐにリクエストが送信されます。または、保存してボタンを押します。アクションが失敗した場合は、サーバーに接続できなかった、ステータスが 期待するステータス と一致しなかったなど、メッセージに理由が表示されます。
アクション2
ボタンに設定したり、フローから実行したりできます。
- HTTP リクエストを送信
- 設定可能な HTTP リクエストを送信し、応答を変数に取得できます。
- JSON の値を取得
- URL を取得し、JSON の応答から値を 1 つ変数に書き込みます。
よくある質問
API キーやパスワードはどこに保存されますか?
パスワード/トークン に入力した内容は暗号化して保存され、リクエストを送るときにだけ平文に戻されます。ヘッダー に入力した値は暗号化されずに保存され、エクスポートしたプロファイルにも含まれるため、キーやトークンは認証の欄に入力してください。
ローカルネットワーク上のデバイスを呼び出せますか?
はい。リクエストは Macro Deck を実行しているコンピューターから送られるので、そのコンピューターから届くアドレスならどれでも使えます。自己署名証明書を使うデバイスでは TLS 証明書を検証 をオフにできますが、自分のネットワーク上のデバイスに限ってください。
サーバーが応答したのにアクションが失敗するのはなぜですか?
応答が 期待するステータス (既定は 2xx) と一致しませんでした。API が実際に返すステータスコード、200-204 のような範囲、リスト、またはすべてのステータスを受け付ける any を入力してください。JSON の値を取得 は常に 2xx の応答を期待します。
どのような JSON パスを使えますか?
data.items[0].name や [0].id のようにドットとインデックスを使うか、ドキュメント全体なら $ を使います。取得 では $status などの予約済みのセレクターが優先されるため、実際に status という名前のフィールドは $.status で読み取ります。
先に変数を作成する必要がありますか?
いいえ。取得や 変数に保存 で存在しない変数を指定すると、Macro Deck がその変数を作成します。同じ名前の変数が異なる型ですでに存在する場合は、メッセージを表示して保存に失敗します。
スマートホームと Webのその他の連携
Home Assistant
Macro Deck に同梱Home Assistant のライトの切り替え、シーンやスクリプトの実行を行い、ライブの状態をデッキに表示します。
AdGuard Home
Macro Deck に同梱AdGuard Home の保護をオン、オフ、一時停止し、その統計をデッキに表示します。
RSS フィード
Macro Deck に同梱RSS フィードや Atom フィードをフォローし、最新の記事をウィジェットに表示して、新しい記事が届いたときに反応します。
天気
Macro Deck に同梱API キーなしで、登録した場所の現在の天気と予報をデッキに表示します。