我已经通过 slack 创建了自定义斜杠命令配置并将其安装在工作区上。但是当我运行它时我得到了这个 /测试失败,错误为“dispatch_failed”
我尝试了多个工作区,但出现同样的问题。有人经历过这个吗?
因此,经过几次测试后,我发现这只是此时在松弛时失败的任何内容的通用消息。我首先有一个无法到达的端点。所以它正在返回这条消息。我修复了这个问题,使用 ngrok 作为隧道,以便我可以调试,这就是我发现这个问题的方式。
此外,以下原因也可能导致此错误。
虽然文档告诉您:
“使用请求 URL 是您的基本服务器链接 + 其后的“/slashcommand””
这是不正确的。请求 URL 应为:“/slack/events”
当然,该命令需要与“编辑命令”窗口中的内容以及 app.js 中的“.command”方法中的内容相匹配:
app.command('/flash-card', async ({ ack, body, client })
如果您使用
ngrok http <port>
在本地主机中进行测试,请注意,每次运行此命令时都会创建一个新的 ngrok 公共 URL。因此,在 https://api.slack.com/apps 中,在应用程序的功能中,您可能需要使用为您生成的当前 ngrok URL 来更新 Slash Command 的请求 URL。
这也是 404 Not Found 的错误。
如果您使用
ngrok
进行离线开发,则可以在终端中看到404错误。
如果您使用
serverless
进行部署,请确保您正在处理新端点 /slack/command
。一种解决方案是创建一个单独的处理程序,即/command.js
functions:
slack:
handler: app.handler
events:
- http:
path: slack/events
method: post
command:
handler: command.handler
events:
- http:
path: slack/command
method: post
您需要将集成设置中的方法设置为GET,默认为POST
[如果您的代码正在执行但仍然出现此错误]
在我使用 Slackbolt 和 js 的例子中,我忘记添加
await ack();
在被调用的函数中,Slack api 会抛出错误。