PythonでSlackのボットを書く

Pythonで簡単なスラックボットを作成し、Herokuにデプロイし、20分間でTravis CIを接続し、有用なことを開始する方法に関する小さなチュートリアル。



だから、私たちは仕事から気をそらすために、チャットするために挨拶をする人々を罰するボットを持っています。 自分を同じように、しかしより良くするには?





Heroku + Python Webアプリ



Herokuのインストールは美しく記述されています;ここでは3つのファイルのみが必要です



 -requirements.txt
 -Procfile
 -runtime.txt


最初に、次のようなすべての依存関係をリストします



httplib2 slacker Flask==0.12
      
      





あなたはすぐにそれらを書く必要はありません、スマートPyCharmは私たちが何かを見逃したことを教えてくれます。

承認のリクエストを送信するにはHttplib2 、Slack APIを使用して便利に作業するにはSlacker 、リクエストを受け入れるにはFlaskが必要です。これは、設定が不要な最も簡単で最も痛みのないWebフレームワークです。



runtime.txtで、使用するPythonのバージョン指定します。

Procfileにも正確に1行あります

 web: python app.py
      
      





これで、最初のアプリケーションを作成する準備ができました。そのようなコンテンツでapp.pyを作成します



 from flask import Flask from flask import request from flask import make_response app = Flask(__name__) #   @app.route('/webhook') def hello_slack(): #     request_json = request.get_json(silent=True, force=True) #           dict  ,    #   request_json -> response_body_json ... response_body = json.dumps(response_body_json) #      response = make_response(response_body) response.headers['Content-Type'] = 'application/json' #   return response if __name__ == '__main__': port = int(os.getenv('PORT', 5000)) app.run(debug=False, port=port, host='0.0.0.0')
      
      





すべてをgithubに配置し、herokaに移動して、パブリックリポジトリから新しいアプリケーションを作成します。 Herokuは、コードを個別にダウンロードし、 requirements.txtから依存関係を配置し、 Procfileに従ってアプリケーションを起動します。



たるみ



すべて、これからはバックエンドがあります



  https://YOUR_APP_NAME.herokuapp.com/webhook 
*何か役に立つ* 独自のスラックアプリケーション作成できますイベントAPI (つまり、最も有用なAPI-APIはイベントについてアラートを出します)に対して検証します 。 Slack自体は単にエンドポイント上にある特別なチャレンジリクエストであり、そこからコードを取得して応答する必要があります。 これで、[イベントサブスクリプション]セクションのスラックアプリケーションの設定で、必要なイベントを選択しました。 イベントは同じアドレスにドロップされます。 着信データで必要なことをすべて完了したら、他のユーザーの承認をサポートする必要があります。 これを行うには、新しいユーザーがアプリケーションのインストールを希望するとすぐにslackがリクエストを送信する/ authなどの別のエンドポイントが必要になります。 そのようなリクエストを受け取ったら、そのコードからコード抽出し、アプリケーションのクレジットとともにPOSTでslack.com/api/oauth.accessに 送信し、成功したレスポンスでリクエスト自体に応答するか、承認後にユーザーに表示するページにリダイレクトする必要があります。



トラビスci



ボットの準備ができました。 それが機能することを確認するために残っています。 アプリケーションはいつでもローカルで実行でき、curlを介してリクエストをスパムしますが、これはほとんど役に立たないので、すぐにユニットテストを作成し、Travisにリポジトリの監視を依頼します。 Travisのプロジェクトは 、Herokaの場合とほぼ同じように直感的に作成されます。カブのアドレスのみが必要です。残りは、 .travis.ymlのルートに別のファイルを作成する場合、自分で残ります。



 language: python python: - "3.6" script: python3 -m unittest discover
      
      



スクリプトセクションでは、ソースの最新バージョンがダウンロードされた後の処理をアラームに伝えます。 このコマンド(ローカルでより頻繁に実行する必要があります)は、プロジェクト内のユニットテストを見つけて実行します。



この時点から、TravisとHeroku(設定で有効になっている場合)はリポジトリに従ってアプリケーションをダウンロードし、デプロイしてテストを実行し、実行結果をメールに送信します。 そして、本番の準備がほぼ整いました。すべてが機能したらすぐに、Herokaでの種類の自動インストールを無効にし、テストに成功した場合にのみ展開を行うようにTravisを再構成するだけです。 利益!



ソースへのリンクはこちら 、ライブトラビスはこちらです。 ボット自体はネイティブ企業の同僚のみが利用できますが、関心がある場合はボットを公開する可能性を排除しません。



頑張って



All Articles