質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

732閲覧

line botのline messeging apiでのエラーについて(python)

kimu0520

総合スコア4

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/03/08 13:23

前提・実現したいこと

pythonで食べログのサイトから新店舗を持ってくるlinebotを作っています。

エラーメッセージ 2020-03-08T13:04:03.229498+00:00 app[web.1]: [2020-03-08 13:04:03,228] ERROR in app: Exception on /callback [POST] 2020-03-08T13:04:03.229518+00:00 app[web.1]: Traceback (most recent call last): 2020-03-08T13:04:03.229519+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app 2020-03-08T13:04:03.229519+00:00 app[web.1]: response = self.full_dispatch_request() 2020-03-08T13:04:03.229520+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request 2020-03-08T13:04:03.229521+00:00 app[web.1]: rv = self.handle_user_exception(e) 2020-03-08T13:04:03.229521+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception 2020-03-08T13:04:03.229523+00:00 app[web.1]: reraise(exc_type, exc_value, tb) 2020-03-08T13:04:03.229523+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise 2020-03-08T13:04:03.229524+00:00 app[web.1]: raise value 2020-03-08T13:04:03.229524+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request 2020-03-08T13:04:03.229525+00:00 app[web.1]: rv = self.dispatch_request() 2020-03-08T13:04:03.229525+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request 2020-03-08T13:04:03.229526+00:00 app[web.1]: return self.view_functions[rule.endpoint](**req.view_args) 2020-03-08T13:04:03.229527+00:00 app[web.1]: File "/app/app.py", line 49, in callback 2020-03-08T13:04:03.229527+00:00 app[web.1]: handler.handle(body, signature) 2020-03-08T13:04:03.229528+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/linebot/webhook.py", line 260, in handle 2020-03-08T13:04:03.229528+00:00 app[web.1]: func(event) 2020-03-08T13:04:03.229529+00:00 app[web.1]: File "/app/app.py", line 64, in handle_message 2020-03-08T13:04:03.229530+00:00 app[web.1]: line_bot_api.reply_message(event.reply_token,TextSendMessage(text="キーワードを入力してください(入力例:ラーメン,スイーツなど)")) 2020-03-08T13:04:03.229530+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/linebot/api.py", line 107, in reply_message 2020-03-08T13:04:03.229531+00:00 app[web.1]: '/v2/bot/message/reply', data=json.dumps(data), timeout=timeout 2020-03-08T13:04:03.229531+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/linebot/api.py", line 996, in _post 2020-03-08T13:04:03.229531+00:00 app[web.1]: self.__check_error(response) 2020-03-08T13:04:03.229532+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/linebot/api.py", line 1022, in __check_error 2020-03-08T13:04:03.229532+00:00 app[web.1]: error=Error.new_from_json_dict(response.json) 2020-03-08T13:04:03.229536+00:00 app[web.1]: linebot.exceptions.LineBotApiError: LineBotApiError: status_code=400, request_id=62c5c949-417b-4e7a-9fff-fad14efacd75, error_response={"details": [], "message": "Invalid reply token"}, headers={'Server': 'nginx', 'Content-Type': 'application/json', 'x-line-request-id': '62c5c949-417b-4e7a-9fff-fad14efacd75', 'x-content-type-options': 'nosniff', 'x-xss-protection': '1; mode=block', 'x-frame-options': 'DENY', 'Content-Length': '33', 'Expires': 'Sun, 08 Mar 2020 13:04:03 GMT', 'Cache-Control': 'max-age=0, no-cache, no-store', 'Pragma': 'no-cache', 'Date': 'Sun, 08 Mar 2020 13:04:03 GMT', 'Connection': 'close'} 2020-03-08T13:04:03.246407+00:00 app[web.1]: 10.150.246.196 - - [08/Mar/2020:13:04:03 +0000] "POST /callback HTTP/1.1" 500 290 "-" "LineBotWebhook/1.0 ### 該当のソースコード import urllib.request import os import sys import json from argparse import ArgumentParser from flask import Flask, request, abort from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) import scrape app = Flask(__name__) channel_secret = os.getenv('LINE_CHANNEL_SECRET', None) channel_access_token = os.getenv('LINE_CHANNEL_ACCESS_TOKEN', None) if channel_secret is None: print('Specify LINE_CHANNEL_SECRET as environment variable.') sys.exit(1) if channel_access_token is None: print('Specify LINE_CHANNEL_ACCESS_TOKEN as environment variable.') sys.exit(1) line_bot_api = LineBotApi(channel_access_token) handler = WebhookHandler(channel_secret) jyanru = "" basyo = "" @app.route("/") def hello_world(): return "hello world!" @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) try: handler.handle(body, signature) except InvalidSignatureError: abort(400) return 'OK' @handler.add(MessageEvent, message=TextMessage) def handle_message(event): flag = 0 if event.reply_token == "00000000000000000000000000000000": return if event.message.text != "": line_bot_api.reply_message(event.reply_token,TextSendMessage(text="エリアを入力してください(入力例:赤坂,東京など)")) flag += 1 if event.message.text != "" and flag == 1: line_bot_api.reply_message(event.reply_token,TextSendMessage(text="キーワードを入力してください(入力例:ラーメン,スイーツなど)")) basyo = event.message.text flag += 1 if event.message.text != "" and flag == 2: jyanru = event.message.text results = scrape.main(basyo,jyanru) line_bot_api.reply_message(event.reply_token,TextSendMessage(text=results)) else: line_bot_api.reply_message(event.reply_token,TextSendMessage(text="最初からやり直してください")) return if __name__ == "__main__": #port = int(os.getenv("PORT", 8000)) app.run()#host="0.0.0.0", port=port) ```ここに言語名を入力 python ### 試したこと scrape側のchromedriverの接続、webhookの検証、herokuでのオフライン確認(hroku open)はうまくいっています。 ### 補足情報(FW/ツールのバージョンなど) 最初のメッセージは出るのですが次のメッセージでエラーが出てしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問