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

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

ただいまの
回答率

89.13%

lineDevelopersのwebhookにエラーが出ます。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 445

KTamura

score 4

イメージ説明

実現したい事

Lineのapiを使用してオウム型のボットを作成しています。

発生している問題・エラーメッセージ

現状はherokuまでのデプロイはできているのですが、いざボットにメッセージを送って見ると返信が来ません(自動応答のメッセージは来る)。webhookに接続する際に「Webhookが無効なHTTPステータスコードを返しました(期待されるステータスコードは200です)」というエラーが出ているので、ここが原因かなと踏んでいます。ちなみに、heroku logsでエラー内容を確認すると503(サーバーに関するエラー)と出ます。ネットで調べるとwebhookのエラーは機能には関係ないと書かれてるものもありますが、正直ここ以外に原因の検討がつきません。
上記エラーの解決方法がわかる方、知恵をお貸し頂けないでしょうか?

該当のソースコード

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__)


YOUR_CHANNEL_ACCESS_TOKEN = os.environ["LantpFiJX9Ja24IZkkHigDI2bv\
3S38JOmgFxAN7jxRY1ZaFsY\
bceLhLaVENrqatHz+SzTylw\
M1WniLT/Q01h5hprJzzIYlw\
KlF4Vg/7MYGHt9LqdZhbF8Ng\
fCe0k478GRxU13rJ5IWxQcj3QDx\
GL2QdB04t89/1O/w1cDnyilFU="]
YOUR_CHANNEL_SECRET = os.environ["5cc2db76678a82e1454416e7aba39422"]

line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)


@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):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))


if __name__ == "__main__":
    port = int(os.getenv("PORT", 5000))
    app.run(host="0.0.0.0", port=port)

試したこと

main.pyの文法エラーの訂正。
環境変数の再設定。
app = Flask(name)の下にapp.debug = Falseを追加。

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

エディタはpycharmです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • FiroProchainezo

    2019/10/02 14:46

    出ているログを、編集しないで、そのままの状態で全文載せる事はできますか?

    キャンセル

  • KTamura

    2019/10/02 20:11

    ご返信ありがとうございます!
    はい!ただ今エラーログの画像を添付致しました。
    ご確認よろしくお願いします。

    キャンセル

  • KTamura

    2019/10/02 20:29 編集

    エラーログの全文はこちらです。
    2019-10-01T22:22:47.000000+00:00 app[api]: Build succeeded
    2019-10-01T22:22:50.620244+00:00 heroku[web.1]: Starting process with command `python main.py`
    2019-10-01T22:22:54.421023+00:00 heroku[web.1]: State changed from starting to crashed
    2019-10-01T22:22:54.398756+00:00 heroku[web.1]: Process exited with status 1
    2019-10-01T22:22:54.286815+00:00 app[web.1]: Traceback (most recent call last):
    2019-10-01T22:22:54.286849+00:00 app[web.1]: File "main.py", line 24, in <module>
    2019-10-01T22:22:54.287111+00:00 app[web.1]: GL2QdB04t89/1O/w1cDnyilFU="]
    2019-10-01T22:22:54.287117+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/os.py", line 669, in __getitem__
    2019-10-01T22:22:54.287805+00:00 app[web.1]: raise KeyError(key) from None
    2019-10-01T22:22:54.287844+00:00 app[web.1]: KeyError: 'LantpFiJX9Ja24IZkkHigDI2bv3S38JOmgFxAN7jxRY1ZaFsYbceLhLaVENrqatHz+SzTylwM1WniLT/Q01h5hprJzzIYlwKlF4Vg/7MYGHt9LqdZhbF8NgfCe0k478GRxU13rJ5IWxQcj3QDxGL2QdB04t89/1O/w1cDnyilFU='
    2019-10-01T22:23:09.440811+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host=kento.herokuapp.com request_id=3dffcba8-b177-4878-a2a6-904066ecbaa9 fwd="147.92.149.168" dyno= connect= service= status=503 bytes= protocol=https
    2019-10-01T22:24:38.293599+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host=kento.herokuapp.com request_id=25c657fd-3436-4784-8ec3-07333169cca9 fwd="203.104.156.74" dyno= connect= service= status=503 bytes= protocol=https
    2019-10-01T22:24:55.739559+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host=kento.herokuapp.com request_id=1ba5cb83-e82a-40d7-8032-d04d24f041ac fwd="203.104.156.74" dyno= connect= service= status=503 bytes= protocol=https
    (venv) (base) Apple-no-MacBook-Pro:data apple$ heroku login
    heroku: Press any key to open up the browser to login or q to exit:
    Opening browser to https://cli-auth.heroku.com/auth/browser/93516943-fd62-4d55-ab57-a14dfb140ee0
    Logging in... done
    Logged in as k000000@gmail.com

    キャンセル

回答 1

0

keyがNone、KeyErrorと書いてあるので、以下の部分のkeyがないのでは?

2019-10-01T22:22:54.287805+00:00 app[web.1]: raise KeyError(key) from None
2019-10-01T22:22:54.287844+00:00 app[web.1]: KeyError: 'LantpFiJX9Ja24IZkkHigDI2bv3S38JOmgFxAN7jxRY1ZaFsYbceLhLaVENrqatHz+SzTylwM1WniLT/Q01h5hprJzzIYlwKlF4Vg/7MYGHt9LqdZhbF8NgfCe0k478GRxU13rJ5IWxQcj3QDxGL2QdB04t89/1O/w1cDnyilFU='

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/03 11:35

    やはりキーに関してぽいですよね。。。一応、herokuの方にもアクセスキーなどを設定しているのですが、再度試してみます。最初から作り直すのもありかなと考えてます。

    キャンセル

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

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る