---
title: "用 cURL 发送消息到 Slack"
description: "Slack 允许你通过 Webhooks 服务发送消息"
canonical: https://oozou.com/til/send-messages-to-slack-using-curl-26
locale: zh-Hans
date: 2020-10-13
topic: shell
---

# 用 cURL 发送消息到 Slack

> Slack 允许你通过 Webhooks 服务发送消息

Published: 2020-10-13 · Topic: [shell](https://oozou.com/zh-Hans/til-topics/shell) ([markdown](https://oozou.com/zh-Hans/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-Hans/contact

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