シンプルな WebHooks レシーバーkloudless を使用した Webhook に関するこのチュートリアルに従っています。ngrok をダウンロードし、URL をローカル サーバーを指すように設定してから、.xml を使用してサーバーをセットアップしましたPython -m SimpleHTTPServer 8080
。ngrok から提供された URL を使用して POST リクエストを実行し、ローカル ディレクトリを表示/ナビゲートすることができました。このスクリプトを使用して、Webhook 送信者を確認し、タスクを開始したいと考えています。
#!/usr/bin/env python
from flask import Flask, request, abort
import hmac
import base64
import hashlib
import threading
app = Flask('demo_app')
APP_ID = ''
API_KEY = ''
@app_route('/webook', methods=['POST']) //FIX. @app_route should be @app.route
def receiver():
# Verify the Request Signature
digest = hmac.new(API_KEY,msg=request.data,digestmod=hashlib.sha256).digest()
sig = base64.b64encode(digest)
if not sig == request.headers.get('X-Kloudless-Signature'):
abort(403)
# Since the request is verified we can actually do something
account_id = request.form.get('account')
if account_id:
threading.Thread(target=process_account, args=(account_id,)).start()
# In order to verify that the endpoint is alive you should always return your application id with a 200 OK response
return APP_ID
if __name__ == 'main':
app.run()
エラーが発生する
@app_route('/webhook ', methods=['POST'])
NameError: name 'app_route' is not defined
ngrok が localhost を使用してセットアップした URL を指定します@app_route
か?
アップデート
これは、例として外部 URL@app_route
として残す必要があります。現在、この外部 URL を現在の webhook の下で開発ポータルに追加した後、アプリが明らかにサポートしているのに、サポートされていないメソッドを提供している理由を理解しようとしています。/webhook
https://046f3f46.ngrok.io/webhook
POST
アップデート
そのため、PythonSimpleHTTPSever
は POST メソッドをサポートしていません。このpython サーバーは GET メソッドと POST メソッドをサポートしていることがわかりました(当然のことですが)、サポートされていないメソッドである 405 エラー コードが表示されます。何が起こっているのかわからない、それは環境内の何かでなければなりません.