2016-11-25 24 views
2

これは不自由な質問に見えるかもしれませんが、誰かが助けることができれば素晴らしいでしょう。私はスラックのカスタムボットを介して送信されたコマンドに基づいていくつかの出力を返す小さなpythonスクリプトを書いた。 PythonスクリプトはRTM APIを使用します。スラックの誰かがボットに言及してコマンド(例:@slackcustombot foobar)を渡すたびに、スクリプトからカスタムメッセージ(例:Hi foobar)を返します。今問題はセキュリティ側です。私のスクリプトは、インターネットに公開されていないサーバーにあります。また、Slackは動的IPを使用しているため、余分なIPアドレスをホワイトリストに表示する可能性はありません。Slack RTM APIはPOSTメソッドまたはGETメソッドを使用しますか?

私が知りたかったのは、スラックチャンネルの誰かがボットに言及したとき、そしてスラックサーバーのボットが私のサーバーにある私のpythonスクリプトにコマンドを送信したとき、GETメソッドまたはPOSTメソッド?それはGETメソッドの場合、私はセキュリティの問題を心配する必要はありません。 POSTメソッドとして送信する場合、このシナリオではどのような選択肢を使用できますか?どんな助けもありがとうございます。私がどこかで間違っていて、まだ学んでいるなら、私を修正してください。 :)

よろしく、 Junaid。

答えて

1

どちらもありません。それはWebSocketプロトコルを使用します。むしろHTTPベースのプロトコルを使いたいのであれば、SlackのEvent APIを調べることをお勧めします。 HTTPS POSTを使用してボットにメッセージを転送します。

イベントAPIは、RTM APIで使用できるすべてのイベントタイプを提供しているわけではありませんが、扱いがはるかに簡単で、チャットボットには十分であるはずです。 hereに、RTM APIとEvents APIの両方で使用可能なイベントタイプのドキュメントを確認してください。

しかし、あなたのボットのURLをインターネットに公開する方法を見つける必要があります。スラックがそれを使用できるようにします。スラックボットを使って社内アプリケーションにアクセスする必要がある場合、私の意見では、スラックボットをあなたの会社のDMZのウェブサーバに置くことが最善の方法です。

さらに小規模なアプローチは、VPNトンネルを介してローカルWebサーバーに接続している特別なパブリックURLを通じて内部Webサーバーを公開している転送プロバイダーを使用することです。 Slackがルータ/ファイアウォールの背後にあるローカルネットワーク上のあなたのウェブサーバと話をしたいのであればうまくいくでしょう。 1つの例はngrokですが、他のプロバイダでもあります。

関連する問題