【问题标题】:Slack Slash Commands trigger GET request with no query parmsSlack Slash 命令触发没有查询参数的 GET 请求
【发布时间】:2016-08-08 05:07:51
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 这可能是 ssl 检查吗?见api.slack.com/slash-commands#ssl应该有一个参数ssl_check=1,但根据文档,我希望它是一个查询参数(URL 的一部分)。这和你看到的相符吗? (查看完整的 HTTP 请求可能会有所帮助,包括完整的 URL 和标头。)
  • 谢谢。目前,当我在 Slack 上使用 Slash 命令时,它会联系 Slack 服务器(如预期的那样),但不是使用 POST 联系外部 Web 服务,而是使用 GET 联系它,但没有参数等。

标签: heroku slack


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2015-10-17
    相关资源
    最近更新 更多