Q&A

line_bot_api.get_message_contentでエラーが出てしまいます。 [python]

前提・実現したいこと

LINE message AP I初心者です。 ユーザーが投稿した画像を取得したいです。 言語はpythonです。

今まで正常に動いていた部分にエラーが出てしまい大変困っております。

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

heroku logs --tail

でログを確認したところ、以下のようなエラーが表示されていました。

2021-02-28T12:37:33.571214+00:00 app[web.1]: message_content = line_bot_api.get_message_content(push_img_id)
2021-02-28T12:37:33.571214+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/linebot/api.py", line 311, in get_message_content
2021-02-28T12:37:33.571215+00:00 app[web.1]: stream=True, timeout=timeout
2021-02-28T12:37:33.571215+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/linebot/api.py", line 547, in _get
2021-02-28T12:37:33.571216+00:00 app[web.1]: self.__check_error(response)
2021-02-28T12:37:33.571226+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/linebot/api.py", line 583, in __check_error
2021-02-28T12:37:33.571227+00:00 app[web.1]: error = Error.new_from_json_dict(response.json)
2021-02-28T12:37:33.571227+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/linebot/http_client.py", line 252, in json
2021-02-28T12:37:33.571228+00:00 app[web.1]: return self.response.json()
2021-02-28T12:37:33.571228+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/requests/models.py", line 885, in json
2021-02-28T12:37:33.571229+00:00 app[web.1]: return complexjson.loads(self.text, **kwargs)
2021-02-28T12:37:33.571229+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/json/__init__.py", line 354, in loads
2021-02-28T12:37:33.571229+00:00 app[web.1]: return _default_decoder.decode(s)
2021-02-28T12:37:33.571230+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/json/decoder.py", line 339, in decode
2021-02-28T12:37:33.571230+00:00 app[web.1]: obj, end = self.raw_decode(s, idx=_w(s, 0).end())
2021-02-28T12:37:33.571230+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/json/decoder.py", line 357, in raw_decode
2021-02-28T12:37:33.571231+00:00 app[web.1]: raise JSONDecodeError("Expecting value", s, err.value) from None
2021-02-28T12:37:33.571238+00:00 app[web.1]: json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
2021-02-28T12:37:33.571557+00:00 app[web.1]: 10.41.141.207 - - [28/Feb/2021 12:37:33] "POST /callback HTTP/1.1" 500 -

該当のソースコード

push_img_id = event.message.id #idを取得
message_content = line_bot_api.get_message_content(push_img_id) #ここでエラーが発生

試したこと

正常に動いていた以前のバージョンに以下のコマンドで戻しても同様のエラーが発生しました。 また、push_img_idについては正常に取得できていることは確認いたしました。

heroku rollback v~~
  • 0
  • 3
  • 3497
  • twitter facebook

line-bot-sdkのバージョンを最新のものに変えたところ、動きました!!! ご回答してくださった、Koki様、Yazaki様本当にありがとうございます。

  • 0

コンテンツを取得するエンドポイントに変更があったのが気になっています。 https://developers.line.biz/ja/news/2021/01/21/no-longer-provided-with-the-old-domain-name/

line-bot-sdk-pythonのバージョンを確認してみていただけますか? https://github.com/line/line-bot-sdk-python/blob/78bc3201cf01d9ef918e506abeee5b380c3cafa1/linebot/about.py

最新だと1.19.0のようです。

  • 1

該当のソースコードに書かれた内容だけだと原因を特定するのが難しいので、ソースコード全体を見せてほしいです。もちろん、チャネルアクセストークンとシークレットは伏せてもらってOKです。

一応エラーメッセージを見る限りだと、json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)とあるのでJsonの扱いでエラーが出ているっぽいです。 公式のSDKを使っていれば正しく使っていればエラーになることはないので、get_message_content(push_img_id)で渡しているpush_img_idに渡している値がどうなっているのかが気になるところです

  • 1
Are you sure? question.vm