Q&A

uploadRichMenuImageで404

前提・実現したいこと

リッチメニューに画像を添付したい。

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

リッチメニューに画像を添付するためにLINEBot->uploadRichMenu()を用いているが、レスポンスのhttpStatusが404となっている。

LINE\LINEBot\Response Object
(
    [httpStatus:LINE\LINEBot\Response:private] => 404
    [body:LINE\LINEBot\Response:private] => 
    [headers:LINE\LINEBot\Response:private] => Array
        (
            [server] => legy
        )

)

該当のソースコード

        $http_client = new CurlHTTPClient($this->channel_access_token);
        $bot = new LINEBot($http_client, ['channelSecret' => $this->channel_secret]);
				// ...snip...
        $richMenu = new RichMenuBuilder(
            RichMenuSizeBuilder::getFull(),
            true, // デフォルトでメニューを表示l
            'menu_' . $line_user_id,
            'メニュー',
            [
						   // ...snip...
            ]
        );
        $res = $bot->createRichMenu($richMenu);
        Log::debug('res: ' . print_r($res, true));
        if (!$res instanceof Response) {
            Log::error('bad response.');
            return;
        }
        $body = $res->getJSONDecodedBody();
        Log::debug('body: ' . print_r($body, true));
        if (!is_array($body) || is_null($body['richMenuId'])) {
            Log::error('bad body.');
            return;
        }
        $rich_menu_id = $body['richMenuId'];
        Log::debug("uploadRichMenuImage('$rich_menu_id', ...)");
        $res = $bot->uploadRichMenuImage($rich_menu_id, public_path() . '/line/richmenu_1651798295263.jpg', 'image/jpeg');
        Log::debug('res: ' . print_r($res, true));

試したこと

画像アップロードの場合の接続先はその他のAPIと異なるので、画像アップロード用の$httpClientと$botを用意する必要がありそうに思うが、その方法がわからない。

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

line-bot-sdk version 3.6.0を使用しています。

  • 0
  • 1
  • 516
  • twitter facebook

LINE Bot SDK PHPのversion 3.6.0は4年前のバージョンで、最新は7.3.1のようです。 少し前にこのAPIはendpointが変わっていて、SDK側もその対応をしていると思うので、 一度SDKのバージョンをあげてみてはいかがでしょうか?

  • 2
Are you sure? question.vm