こんにちは、ミナピピン(@python_mllover)です!
今回はHerokuでLineのAPI用のWebhookサーバーを立てる方法について紹介したいと思います。
新規プロジェクトを作成
# 新規プロジェクトを作成 $ heroku create
作成完了すると適当な単語を組み合わせたプロジェクト名で新規プロジェクトが作成されます。
次にプロジェクトに接続します。
# 既存のプロジェクトに接続する $ heroku git:remote -a <プロジェクト名>
次にgit cloneで表示されたgitのURLからリポジトリをクローンしてローカルの作業フォルダを作成します。
# ローカルリポジトリを作成する $ heroku git:clone -a <プロジェクト名>
これでローカルにリポジトリが作成されるので、そこに移動します。
# 作業ディレクトリを移動する $ cd <プロジェクト名>
Herokuにwebhookサーバーを立てる
作業ディレクトリに移動したら、そこに「main.py」[Procfile]「requirements.txt」「runtime.txt」の4つのファイルを作成して配置します。
<main.py>
from flask import Flask, request, abort from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) import os app = Flask(__name__) #環境変数取得 # LINE Developersで設定されているアクセストークンとChannel Secretをを取得し、設定する。 YOUR_CHANNEL_ACCESS_TOKEN = '' YOUR_CHANNEL_SECRET = '' line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN) handler = WebhookHandler(YOUR_CHANNEL_SECRET) #Webhookからのリクエストをチェックします。 @app.route("/callback", methods=['POST']) def callback(): # リクエストヘッダーから署名検証のための値を取得します。 signature = request.headers['X-Line-Signature'] # リクエストボディを取得します。 body = request.get_data(as_text=True) app.logger.info("Request body: " + body) print('リクエストボディ',body) # handle webhook body # 署名を検証し、問題なければhandleに定義されている関数を呼び出す。 try: handler.handle(body, signature) # 署名検証で失敗した場合、例外を出す。 except InvalidSignatureError: abort(400) # handleの処理を終えればOK return 'OK' # ポート番号の設定 if __name__ == "__main__": # app.run() port = int(os.getenv("PORT", 5000)) app.run(host="0.0.0.0", port=port)
<requirements.txt>
flake8==3.7.8 Flask==1.1.1 Flask-Devices==0.0.1 Flask-SQLAlchemy==2.4.1 line-bot-sdk==1.5.0
<runtime.txt>
python-3.6.5
<Procfile>
web: python main.py
ファイルの置き場所
⇒https://github.com/beginerSE/line_webhook_onHEROKU
作成できたらこれを以下のコマンドでHEROKUへデプロイします。
# git経由でデプロイする git init git add . git commit -m "first commit" git push heroku master
HEROKUにデプロイができたら、あとはLINEのデベロッパー用サイトにアクセスしてチャンネル設定の
「Webhook settings」のWebhook URLに「https://<プロジェクト名>.herokuapp.com/callback」
を入力してverifyを押すとAPIサーバー側で確認が行われ、レスポンスが確認できるとwebhookサーバーとして設定完了となります。
コメント
[…] 関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる […]
[…] 関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる […]
[…] 関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる […]
[…] 関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる […]
[…] 関連記事:【Python】HerokuでLineのAPI用のwebhookサーバーを立てる […]