Slack bot や LINE bot を開発をするときに、
-
ngrok
で webhook 用の URL を発行する。 - Flask サーバを立てる。
- ボットの管理画面に発行した URL をコピペして検証する。
というのを毎回する。これをチュートリアル通りにやると、ターミナルを複数タブで起動したりトラックパッドをいじってコピペしたりで地味にめんどくさい。
これを make bot
コマンドを打つだけで半自動化させたい!(手作業で管理画面へのコピペは必要。)
Makefile
bot:
# 1. ngrokをバックグラウンドで実行する。
nohup ngrok http 5000 &
# 2. localhost:4040 が立ち上がるまで1秒待つ。
sleep 1
# 3. webhook で使用する ngrok の URL をクリップボードにコピーする。
curl http://localhost:4040/api/tunnels | grep -oE "https:\/\/.+?\.ngrok\.io" | pbcopy
# 4. コピーした URL を確認する。
pbpaste
# 5. Flask アプリなどを起動する。
python app.py
これを Makefile
に定義すれば make bot
を実行すれば
- ngrok がバックグラウンドで起動してる。
- Flask が起動してる。
- クリップボードに
https://<ランダム>.ngrok.io
がコピーされてる。
状態になるので、サービスの管理画面に ⌘/Ctrl+V でペーストするだけでローカル開発のセットアップ完了となる。
app.py
は Flask なら以下のようなもの。
app.py
from flask import Flask
app = Flask(__name__)
# Slack や LINE から URL を検証する関数を定義する。
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
webhook をつなげるとき、まず最初に Slack や LINE などのサービスから飛んできたリクエストに対して "OK"
を返してURLを検証する作業をする。このための関数はサービスによって異なるので省略している。