Q&A

LINE SDK PHPを利用した画像の情報取得で、結果が 404 になってしまう

前提・実現したいこと

よくある処理ですが、下記のようなことを実現したいです。 あまり情報もヒットしなかったので、何か手順のミスや、確認すべき箇所があればご指摘下さい。 よろしくお願い致します。

  1. LINE公式アカウントに向けてユーザーが画像を投稿

  2. LINE Messaging API で画像メッセージのIDを取得 https://developers.line.biz/ja/reference/messaging-api/#wh-image

  3. LINE Messaging API でコンテンツ( 画像 )を取得 https://developers.line.biz/ja/reference/messaging-api/#get-content

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

getMessageContent()の結果が 404 になってしまう。

該当のソースコード

$this->bot = new LINEBot($this->client, ['channelSecret' => $this->channel_secret]);
$events = $this->bot->parseEventRequest($request_body, $signature);

foreach ($events as $event) {
  if ($event instanceof MessageEvent) {
    if ($event->getMessageType() === 'image') {
      $response = $this->bot->getMessageContent($event->getMessageId());
    }
  }
}

if (!$response->isSucceeded()) {
  Log::error($response->getHTTPStatus() . ' ' . $response->getRawBody());
}

試したこと

ドキュメントの再確認。 getMessageId()の値確認 → 問題なくIDは取れていた。 getMessageId()のintキャスト → 特に効果なし

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

linecorp/line-bot-sdk 7.6.1 を使用しています。

  • 0
  • 2
  • 467
  • twitter facebook

ksyt様

ご指摘ありがとうございます! あれから数日経って試したところ、、何故か問題なく取得できるようになりました。 (contentProvider.typeline である事も確認できました。)

ソースを一切変えていないので、原因不明で若干気持ち悪いのですが、実現したいことは出来たので解決済みとします。 ありがとうございました。

  • 0

これで解決するかどうかは分かりませんが、 https://developers.line.biz/ja/reference/messaging-api/#wh-imagecontentProvider.typeline の時しか画像が取得できないようなので、そのチェックを入れる必要があると思います。

  • 1
Are you sure? question.vm