Slack Slash命令触发不带查询parms的GET请求



我正试图通过创建一个Slack应用程序来扩展Slack,该应用程序在用户安装Slack应用时安装Slash命令。Slack聊天用户触发Slash命令时,它将与我正在尝试开发的外部网络服务进行交互。

根据Slash命令的Slack文档(https://api.slack.com/slash-commands),任何Slash命令都将触发到外部服务的POST,POST主体中有一组参数,用于指示触发请求的用户、Slack通道等。

当我使用localtunnel将我在localhost上开发的web服务提供给Internet时(https://www.npmjs.com/package/localtunnel),localtunnel实际上在localtunnel.me上创建了一个具有一些随机主机名的虚拟服务器,例如。,https://wkbtfodclm.localtunnel.me,它连接到我的本地主机。

如果我在Slack聊天中输入Slash命令,Slack就会成功地向localtunnel.me服务器发送POST请求,该请求将通过管道传输到我的本地主机。

然而,在我部署到Heroku之后,它有一个域,例如。,https://example.com,我注意到Slash命令向Heroku上的服务器发送了一个不带参数的GET请求。以前有人经历过这种情况吗?

Slack端的一切都按预期工作。当我使用Slash命令时,Slack会联系它的服务器,然后服务器会对外部web服务进行POSThttps://example.com(正如我所配置的)所有参数。但是,web服务(由于DNS设置)将重定向https://example.com请求https://www.example.com(注意www)。这导致Slack的POST被重定向为没有URL查询的GET。配置Slash命令以使用https://www.example.com解决了这个问题。

最新更新