斜线命令“dispatch_failed”

问题描述 投票:0回答:7

我已经通过 slack 创建了自定义斜杠命令配置并将其安装在工作区上。但是当我运行它时我得到了这个 /测试失败,错误为“dispatch_failed”

我尝试了多个工作区,但出现同样的问题。有人经历过这个吗?

slack slack-api slack-commands
7个回答
23
投票

因此,经过几次测试后,我发现这只是此时在松弛时失败的任何内容的通用消息。我首先有一个无法到达的端点。所以它正在返回这条消息。我修复了这个问题,使用 ngrok 作为隧道,以便我可以调试,这就是我发现这个问题的方式。

此外,以下原因也可能导致此错误。

  • 代码错误
  • 无法访问后端或应用程序中配置的斜线命令无效

12
投票

虽然文档告诉您:

“使用请求 URL 是您的基本服务器链接 + 其后的“/slashcommand””

这是不正确的。请求 URL 应为:“/slack/events”

当然,该命令需要与“编辑命令”窗口中的内容以及 app.js 中的“.command”方法中的内容相匹配:

app.command('/flash-card', async ({ ack, body, client })


2
投票

如果您使用

ngrok http <port>
在本地主机中进行测试,请注意,每次运行此命令时都会创建一个新的 ngrok 公共 URL。因此,在 https://api.slack.com/apps 中,在应用程序的功能中,您可能需要使用为您生成的当前 ngrok URL 来更新 Slash Command 的请求 URL。


2
投票

这也是 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

1
投票

您需要将集成设置中的方法设置为GET,默认为POST


1
投票

[如果您的代码正在执行但仍然出现此错误]

在我使用 Slackbolt 和 js 的例子中,我忘记添加

await ack();

在被调用的函数中,Slack api 会抛出错误。


0
投票

我也面临着同样的问题。经过一段时间的搜索后,我发现对于每个斜杠命令,您都必须特别提及请求 URL。您可以在创建命令时找到它,也可以通过编辑命令来重置它。

注意:请求 URL 应以 /slack/events

结尾
© www.soinside.com 2019 - 2024. All rights reserved.