---
title: "用 cURL 發送訊息到 Slack"
description: "Slack 允許你透過 Webhooks 服務發送訊息"
canonical: https://oozou.com/til/send-messages-to-slack-using-curl-26
locale: zh-Hant
date: 2020-10-13
topic: shell
---

# 用 cURL 發送訊息到 Slack

> Slack 允許你透過 Webhooks 服務發送訊息

Published: 2020-10-13 · Topic: [shell](https://oozou.com/zh-Hant/til-topics/shell) ([markdown](https://oozou.com/zh-Hant/til-topics/shell.md))

Slack 允許你透過 [Webhooks 服務](https://api.slack.com/incoming-webhooks)發送訊息

為任何一個 channel 建立 webhook 之後，就可以用 curl 發送通知。

```shell
$ curl -X POST -H 'Content-type: application/json' --data '{"text": "Something important"}'  https://hooks.slack.com/services/YOUR/TOKENIZED/URL
```

# 設定 Incoming Webhooks

Incoming webhook 是從應用程式發送訊息到 Slack 的簡單方式。要設定 incoming webhook，你需要建立一個 Slack app，並在 app 設定中啟用 incoming webhooks。以下是設定 incoming webhooks 的逐步指南：

1. 登入你的 Slack 帳號，前往 Slack API 主頁面。
2. 點擊「Create an app」按鈕，選擇「From scratch」。
3. 輸入 app 的名稱，並選擇你要部署的 workspace。
4. 點擊「Create App」按鈕。
5. 在 app 設定中，前往「Features」區塊並點擊「Incoming Webhooks」。
6. 切換開關以啟用 incoming webhooks。
7. 點擊「Add New Webhook to Workspace」按鈕。
8. 選擇你想發送訊息的 channel，然後點擊「Allow」。

照著這些步驟操作，你就能建立 Slack app 並設定 incoming webhook，開始發送訊息到你選擇的 channel。

# 建立 Payload

要透過 incoming webhook 發送訊息，你需要建立一個包含訊息文字和一些選項的 payload。建立 payload 的方法如下：

1. 決定 payload 的 content type。對 incoming webhooks 來說，content type 一律是「application/json」。
2. 建立一個 JSON 物件，包含訊息文字和任何你想加入的額外選項。例如：
   1. 

```json
{ "text": "Hello, Slack!", "username": "WebhookBot", "icon_emoji": ":ghost:" }
```

3. 使用 curl 之類的工具把 payload 送到 incoming webhook 的 URL。

只要建立格式正確的 JSON payload，就能確保你的訊息透過 incoming webhook 正確送達 Slack。

# 用 cURL 發送訊息

cURL 是一個命令列工具，可以用來透過 incoming webhook 發送訊息到 Slack。以下是用 cURL 發送訊息的範例：

1. 打開終端機，切換到你想發送訊息的目錄
2. 建立一個副檔名為 .json、內容為 payload 的檔案。例如，建立一個名為 message.json 的檔案，內容如下：
   1. 

```json
{ "text": "Hello, World!" }
```

3. 使用 cURL 指令把 payload 送到 incoming webhook 的 URL：
   1. 

```shell
curl -X POST -H 'Content-Type: application/json' --data @message.json https://hooks.slack.com/services/YOUR/TOKENIZED/URL
```

照著這些步驟操作，你就能用 cURL 透過 incoming webhook 發送訊息到 Slack。

# 測試與疑難排解

測試和排查 incoming webhooks 的問題時，務必檢查 HTTP 狀態碼和 response body 有沒有錯誤。以下是幾個你可能遇到的常見錯誤：

- **HTTP 400 Bad Request**：payload 格式錯誤或缺少必要欄位。
- **HTTP 403 Forbidden**：incoming webhook 的 URL 無效或已不可用。
- **HTTP 404 Not Found**：channel 或 workspace 不存在。

要排查問題，你可以用 cURL 之類的工具發送測試 payload 並檢查回應。此外，也可以查閱 Slack API 文件，取得更多關於錯誤碼和疑難排解的資訊。

# 進階 Slack 整合

Incoming webhooks 只是整合 Slack 的其中一種方式。若要做更進階的整合，你可以使用 Slack API 來收發訊息、建立自訂 bot 等等。以下是一些進階的 Slack 整合功能：

- **Web API**：Slack Web API 讓你可以收發訊息、建立自訂 bot 等等。
- **Events API**：Slack Events API 讓你可以即時接收訊息、表情符號回應等事件的更新。
- **Botkit**：Botkit 是一個在 Slack 上打造自訂 bot 的框架。

善用這些進階功能，你就能打造更精緻的 Slack 整合，進而自動化工作流程、提升使用者體驗等等。

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/zh-Hant/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
