2016-11-25 125 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,但他們也是其他提供者。