HTTP
隨附於 Macro Deck從按鈕傳送 HTTP 請求,並將回應中的值儲存到變數。
HTTP 整合頁面,開關已開啟,且沒有設定選項
- GET、POST、PUT、PATCH、DELETE 等方法,支援查詢參數和標頭
- Basic、Bearer 權杖或 API 金鑰標頭驗證
- JSON、表單、文字和檔案上傳內文
- 將狀態、標頭或 JSON 值儲存到變數
- 查詢參數和標頭的值中可使用變數
HTTP 整合可從 Macro Deck 傳送網路請求。可用來呼叫 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>,或 data.items[0].name 之類的 JSON 路徑。尚不存在的變數會自動建立。
取得 JSON 值 是讀取單一值的簡便方式:輸入 URL、JSON 路徑,並在 儲存至變數 下選擇變數。
設定範例
- 一個按鈕使用 傳送 HTTP 請求 和內文類型
json,將{"text": "Stream is live"}傳送到聊天 Webhook。 - 一個按鈕透過網路中智慧插座的本機 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 金鑰。