2016-11-25 127 views
2

这看起来可能是一个蹩脚的问题,但如果有人能够提供帮助,情况会非常好。我编写了一个小型python脚本,它根据通过松散的自定义bot发送给它的命令返回一些输出。 Python脚本使用RTM API。无论什么时候有人在提到机器人并传递一个命令(例如:@slackcustombot foobar)时,它会从脚本中返回一个自定义消息(例如:Hi foobar)。现在问题出在安全方面。我的脚本驻留在一个不能上网的服务器上。由于Slack使用动态IP,因此不可能列出闲置IP地址。因此基本上,我想知道的是,当有人处于闲置频道时提到了僵尸程序,并且当闲置服务器上的僵尸程序将命令发送到驻留在我的服务器上的我的Python脚本时,它是以GET方法还是作为GET方法发送POST方法?因为如果它是一种GET方法,我可能不必担心安全问题。但是如果它作为POST方法发送,那么在这种情况下我可以使用哪种方法?任何帮助表示赞赏。请纠正我,如果我错了某处,仍然在学习。 :)Slack RTM API使用POST或GET方法?

Regards, Junaid。

回答

1

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

Events API没有提供RTM API可用的所有事件类型,但它更容易处理,并且应该足够用于聊天bot。请查看here以获取哪些事件类型可用于RTM API和Events API的文档。

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

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