文件
使用 incoming webhook 連接 Slack
為頻道建立 Slack incoming webhook、將它加入 AutoPSEO、傳送測試訊息,並排解貼文失敗時 Slack 回傳的錯誤。
AutoPSEO 透過 incoming webhook 將訊息發送到 Slack。Slack 會提供一個可寫入單一頻道的 URL,您把這個 URL 貼到 AutoPSEO,報告與警示就會開始送進該頻道。AutoPSEO 本身不會在您的工作區安裝任何東西:它無法讀取訊息、列出您的頻道,也無法在 webhook 指向之外的地方發文。您想在哪些頻道接收訊息,就為每個頻道各新增一筆項目。
在 Slack 中建立 webhook
Slack 透過 Slack app 核發 incoming webhook。請依照 Slack 的 incoming webhook 指南操作:
- 為您的工作區建立一個 Slack app,或開啟您已用於通知的 app。名稱請取團隊一看就懂的,例如 SEO 報告。
- 在 app 的設定中開啟 Incoming Webhooks,並啟用 Activate Incoming Webhooks。
- 點選 Add New Webhook to Workspace,選擇頻道並核准。若是私人頻道,您必須先成為該頻道的成員。
- 從 Webhook URLs for Your Workspace 複製新產生的 URL。它會以
https://hooks.slack.com/services/開頭。
其他頻道請重複步驟 3 與 4;一個 app 可以擁有多個 webhook。以 Slack 舊版自訂整合(custom integration)webhook 建立的 URL 也仍可使用,不過 Slack 建議改用 app。
Slack 將此 URL 視為機密:任何取得它的人都能在該頻道發文。請將它貼到 AutoPSEO 後妥善保管,不要放進工單、wiki 或螢幕截圖中。
將它加入 AutoPSEO
- 在 Slack, Teams & Webhooks 頁面找到 Slack - Connected workspaces,然後點選 Add to Slack。New channel 表單會開啟,並已將 Slack 選為目的地。
- Name:AutoPSEO 清單、傳送紀錄與測試訊息中使用的標籤,例如
#seo-alerts。 - Webhook URL:貼上 Slack 的 URL。對於 Slack 項目,AutoPSEO 只接受 slack.com 上的
https位址;若 URL 不符,會立即提示。 - 點選 Add channel,再點選新資料列上的 Send test。幾秒內,Slack 中應會出現一則標明該項目名稱的簡短訊息,AutoPSEO 也會回報 Slack 的回應花了多久。
URL 會以加密方式儲存(AES-GCM)。之後清單只會顯示它的主機名稱與最後幾個字元,因此請取能清楚辨識每筆項目對應哪個 Slack 頻道的名稱。
接著,請讓它有內容可發:設定排程報告或警示。之後清單下方的 Slack - Subscriptions 表格,會依 Slack 頻道列出每一條發送到該處的規則、排程,以及規則是啟用還是暫停。
多個頻道與工作區
一個 webhook URL 只屬於某個工作區中的某一個頻道,且 Slack 不允許訊息覆寫 webhook 建立時指定的頻道。這讓行為保持可預期:
- 一個 Slack 頻道對應一筆項目。若要把客戶分別送到
#client-a與#client-b,請各建立一個 webhook 並分別加入。 - 多個工作區的做法相同,因為每個 webhook 都屬於您建立它的那個工作區。
- 一筆項目可以承載多條規則。您可以將每週報告與流量下滑警示送到同一筆項目,也可以把警示放在較繁忙頻道中的專屬項目。
訊息未送達的原因
Send test 會立即顯示原因。至於排程訊息,請開啟 Delivery history,其中保留了每次失敗嘗試時 Slack 的回應。
| AutoPSEO 顯示的內容 | 意義 | 處理方式 |
|---|---|---|
| Slack 拒絕了此 URL (no_service) | webhook 已在 Slack 中被移除或停用,或 URL 輸入有誤 | 建立新的 webhook 並加入,然後刪除舊項目 |
| Slack 頻道已不存在或已封存 | Slack 回應 channel_not_found 或 channel_is_archived | 為仍在使用的頻道建立 webhook |
| Slack 正在限制我們的請求頻率 | Slack 回應 HTTP 429 | 稍候片刻,再使用 Send now 或 Test rule |
| 10 秒後逾時 | Slack 未在時限內回應 | 請稍後再試 |
| 您的試用期已結束 | 沒有有效的方案或試用 | 請選擇方案;排程傳送會隨之恢復 |
失敗的排程報告不會在同一週期內重新發送,因此在排除原因後,請使用 Send now。無法發出的警示則會在下一次檢查時重新評估(警示的執行時機)。
移除 Slack 頻道
點選該項目資料列上的 Delete,會移除已儲存的 URL,並在顯示確認訊息(會告知數量)後,一併刪除所有發送到該處的規則。AutoPSEO 不會變更 Slack 中的任何設定:在有人於 Slack app 中移除之前,webhook 仍會持續運作,因此若 URL 可能已被他人看到,請同時在 Slack 中將它移除。