前提・実現したいこと
ただいまLINEbotでオウム返しのbotを作っています。
現在やったこと
・LINEdevelopperでLINEbotを作成
・オウム返しのフレームワークがFlaskのpythonプログラムを用意
・herokuでサーブしてもらうために、Procfile、runtime.txt、requirement.txtファイルも用意してbuild-succeeded、deployまでできています。
git init heroku git:remote -a アプリ名 git add . git commit -m "***" git push herouk master
・herokuでConfig Varsを作成し、チャンネルシークレットとチャンネルアクセストークンも指定してあります。
Profile
1web:python main.py
runtime.txtファイルが
python-3.8.2
requirement.txtファイルが
Flask==1.1.2 line-bot-sdk==1.16.0
発生している問題・エラーメッセージ
発生している問題としては、
・LINEbotに問いかけても、オウム返ししてくれない。
・コマンドでheroku openをすると
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command heroku logs --tail
該当のソースコード
python
1from flask import Flask,request,abort 2from linebot import LineBotApi,WebhookHandler 3from linebot.exceptions import InvalidSignatureError 4from linebot.models import MessageEvent,TextMessage,TextSendMessage 5import os 6 7app=Flask(__name__) 8#環境変数の取得 9YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンを入力" 10YOUR_CHANNEL_SECRET="Channel Secretを入力" 11line_bot_api=LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN) 12handler=WebhookHandler(YOUR_CHANNEL_SECRET) 13 14@app.route("/callback",methods=["POST"]) 15def callback(): 16 signature=request.headers["X-Line-Signature"] 17 18 body=request.get_data(as_text=True) 19 app.logger.info("Request body"+body) 20 21 try: 22 handler.handle(body,signature) 23 except InvalidSignatureError: 24 abort(400) 25 return "OK" 26 27@handler.add(MessageEvent,message=TextMessage) 28def handle_message(event): 29 line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text)) 30 31if __name__=="__main__": 32 port=int(os.getenv("PORT",5000)) 33 app.run(host="0.0.0.0",port=port)
試したこと
試したこととして
・LINEbotのチャンネルシークレットとチャンネルアクセストークンが間違ってないかのチェック
・webhookのURLが間違えてないかチェック
→LINEbotのコンソールでWebhook設定を見ると「https://アプリ名.herokuapp.com/callback」となっていました。
ただ、pythonプログラムはこちらの記事からのコピペで正しいかどうか自分で読むことができていません。
どなたか、他に間違えていそうなところが分かる方がいましたら、指摘していただけると幸いです。
あなたの回答
tips
プレビュー