【问题标题】:Slack RTM API uses POST or GET method?Slack RTM API 使用 POST 或 GET 方法?
【发布时间】:2016-12-20 01:07:11
【问题描述】:

这似乎是一个蹩脚的问题,但如果有人能提供帮助,那就太好了。我编写了一个小的 python 脚本,它根据通过 slack 的自定义机器人发送给它的命令返回一些输出。 Python 脚本使用RTM API。每当 slack 中有人提到机器人并传递命令(例如:@slackcustombot foobar)时,它都会从脚本返回一条自定义消息(例如:Hi foobar)。现在问题在于安全方面。我的脚本驻留在不向互联网开放的服务器上。由于 Slack 使用动态 IP,因此不可能将 slack ip 列入白名单。

所以基本上,我只想知道,当 slack 频道中的某个人提到机器人时,当 slack 服务器上的机器人将命令发送到驻留在我服务器上的 python 脚本时,它是作为 GET 方法发送还是作为 POST方法?因为如果它是 GET 方法,我可能不必担心安全问题。但如果它作为 POST 方法发送,在这种情况下我可以使用什么替代方法?任何帮助表示赞赏。如果我在某个地方错了,请纠正我,仍在学习中。 :)

问候, 朱奈德。

【问题讨论】:

    标签: python slack-api


    【解决方案1】:

    两者都没有。它使用WebSocket 协议。如果您更愿意使用基于 HTTP 的协议,我建议您查看 Slack 的Event API。它使用 HTTPS POST 将消息传输到您的机器人。

    Events API 没有提供 RTM API 可用的所有事件类型,但它更容易处理并且对于聊天机器人来说应该足够了。查看here 以获取有关 RTM API 和事件 API 都可用的事件类型的文档。

    但是,您需要找到一种方法将您的机器人的 url 公开到 Internet,以便 Slack 可以使用它。如果您需要通过 Slack bot 访问公司内部应用程序,我认为最好的方法是将 Slack bot 放在公司 DMZ 中的网络服务器上。

    更小规模的方法是使用转发提供商,该提供商通过 VPN 隧道连接到您的本地网络服务器,并通过特殊的公共 URL 公开您的内部网络服务器。如果您希望 Slack 在路由器/防火墙后面的本地网络上与您的网络服务器通信,这将起作用。一个例子是ngrok,但他们也是其他提供者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 2023-04-04
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      相关资源
      最近更新 更多