ngrok と Python で 単に webhook を受け取ってみる
tl;dr
- botの作成などに webhookにより送られてくるtoken が必要な場合がある
- webhook には外部に公開するサーバーが必要であるが、極力かんたんに webhook を受け取ってみる
- 単に listen するだけでなく、 200 OK を返すだけのサーバーなどは Python を使えば簡単に作ることができた
題材
- LINE の Messaging API の Webhook を題材にします。
- これは、JSON形式のデータが POST で送信されます。
- 今回は LINE 側へ Webhook が受信できると申告できるよう 200 OK を返します。
流れ
- Python で 何を受けても 200 OK を返すようなサーバーを作る
- ngrok で 外部からのアクセスを受け取れる環境を作る
- ngrok に付属している Inspectツールで 受け取った Webhookの中身を見てみる
Python で 何を受けても 200 OK を返すようなサーバーを作る
-
GETやPOSTに応じて振る舞いを変更したいので、 http.server の BaseHTTPRequestHandler を使います。
今回は 80 port で listen し, POST を受け取ったら とりあえず 200 OK だけを返すようにします。
import http.server
import socketserver
import json
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.end_headers()
with socketserver.TCPServer(("", 80), MyHandler) as httpd:
httpd.serve_forever()
- 作成したら実行しておいてください。
serving at port 80
と表示されていればOKです。
ngrok で 外部からのアクセスを受け取れる環境を作る
- ngrok は ローカルホストを かんたんに インターネットに公開することができるサービスです。
- サインアップしたら 以下のような 画面になるのでガイドに従っていきましょう
Guide |
---|
- コマンドプロンプトで authtoken の登録や http tunnel の起動をしても良いですが、batファイルを使っても便利です。
- ダウンロードした zip を展開すると ngrok.exe があります。
- 同じ場所に 以下のような内容の ファイルを作成します。
auth.bat
ngrok authtoken 1UFVG5sdtzGXXXXXXXXX
80listen.bat
ngrok http 80
- それぞれ ダブルクリックで実行してください。
- auth.bat は一瞬で閉じます。
- 80listen.bat は 以下のようになるはずです。
ngrok |
---|
- このウインドウで表示されている Forwarding 欄の ngrok.io で終わるアドレスが、あなたのアドレスです。
ngrok に付属している Inspectツールで 受け取った Webhookの中身を見てみる
- 試しに 外部からこの ngrok.io のアドレスへ POSTすると
- ngrok の画面 では / へ POST が来たことが表示され
ngrok |
---|
-
ブラウザで http://localhost:4040/inspect/http へアクセスするとよりわかりやすく見ることができます。
inspect画面例 |
---|
Author And Source
この問題について(ngrok と Python で 単に webhook を受け取ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/mmurasawa/items/e508a6b04b5f15f155f9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .