模拟 Slack Events API 挑战
一个 POST 模拟,通过将挑战值回显来响应 Slack 的 url_verification 握手。
只有当它通过回显发送给它的挑战值来响应 url_verification 握手时,Slack 才会启用 Events API 端点。此模板正是执行该操作:它从传入请求中读取 challenge 并将其返回,因此您可以在真实处理程序存在之前验证端点。响应是一个单独的字段,因为这正是 Slack 握手所要求的。
接收传入的调用并按照服务预期的方式进行响应。
响应负载
{
"challenge": "{{request.body.challenge}}"
}
值得了解的字段
| 字段 | 含义 |
|---|---|
| challenge | 通过 {{request.body.challenge}} 直接从您的请求正文回显 —— 完全是 Slack 的 url_verification 握手检查的内容。 |
创建模拟数据
curl -X POST https://quickmock.dev/api/mocks \
-H 'Content-Type: application/json' \
-d '{
"method": "POST",
"response_status": 200,
"content_type": "application/json",
"response_body": "{\"challenge\":\"{{request.body.challenge}}\"}"
}'
调用它
curl -X POST -H 'Content-Type: application/json' -d '{"token":"verification-token-8f3a","challenge":"3eZbrw1aBm2rZSFEGRbdazZQb7aoEXsdMY19q6IcvKf","type":"url_verification"}' https://quickmock.dev/m/<slug>
您将获得什么
POST the url_verification payload -> 200 echoes {"challenge":"..."} back
Slack requires this exact echo to verify the Events API endpoint
这与真实情况有何不同
未检查请求签名(X-Slack-Signature 标头)—— 此模拟将相同的挑战回显给发送匹配正文的任何人,而不仅仅是 Slack 本身。
来源
常见问题解答
- 为什么 Slack 需要回显挑战?
- 这证明了 URL 由能够读取请求正文的人控制,而不是某人输入的任意地址。在回显成功之前,Slack 拒绝将任何事件发送到该端点。
- 它会验证 Slack 签名吗?
- 不会。不检查 X-Slack-Signature 标头,因此模拟将挑战回显给任何发布匹配正文的人。签名验证属于您的真实处理程序,并且必须针对 Slack 本身进行测试。
- 验证后它会处理真实的事件吗?
- 它会接受它们并返回相同的回显形状,但这并不是事件处理程序应该回复的内容。使用此模板通过验证,然后将 Slack 指向您自己的端点。
准备好使用了吗?
与本指南非常搭配: 回显请求数据
相关模板
最后更新: 2026-10-17