Home Articles

Slack RTM API使用POST或GET方法?

Asked
Viewed 270 times
2

这似乎是一个蹩脚的问题,但如果有人可以提供帮助,那就太棒了 . 我写了一个小的python脚本,它根据通过slack的自定义bot发送给它的命令返回一些输出 . Python脚本使用RTM API . 每当松弛的人提到机器人并传递命令(例如:@slackcustombot foobar)时,它会从脚本中返回一条自定义消息(例如:Hi foobar) . 现在问题出在安全方面 . 我的脚本驻留在一个不向互联网开放的服务器上 . 而Slack使用动态IP,那里有's no possibility of white-listing the slack ip' .

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

此致,Junaid .

1 Answer

  • 1

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

    Events API不提供RTM API可用的所有事件类型,但它更容易处理,并且应该足够用于聊天机器人 . 检查here以获取RTM API和Events API可用的事件类型的文档 .

    但是,您需要找到一种方法将机器人的URL暴露给Internet,以便Slack可以使用它 . 如果您需要通过Slack bot访问内部公司应用程序,我认为最好的方法是在您公司的DMZ中的Web服务器上安装Slack bot .

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

Related