这似乎是一个蹩脚的问题,但如果有人可以提供帮助,那就太棒了。我写了一个小的python脚本,它根据通过slack的自定义bot发送给它的命令返回一些输出。 Python脚本使用RTM API。每当松弛的人提到机器人并传递命令(例如:@slackcustombot foobar)时,它会从脚本中返回一条自定义消息(例如:Hi foobar)。现在问题出在安全方面。我的脚本驻留在一个不向互联网开放的服务器上。而且由于Slack使用动态IP,因此不可能将松弛的ip列入白名单。
所以基本上,我想知道的是,当松散通道中的某人提到机器人时,当松弛服务器上的机器人将命令发送到驻留在我的服务器上的python脚本时,它是作为GET方法还是作为POST发送的方法?如果它是GET方法,我可能不必担心安全问题。但如果它作为POST方法发送,我可以在这种情况下使用什么替代方案?任何帮助表示赞赏。如果我错了,请纠正我,还在学习。 :)
此致 朱奈德。
答案 0 :(得分:1)
都不是。它使用WebSocket协议。如果您更愿意使用基于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,但它们也是其他提供者。