模拟 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