以前、LINE Bot で 画像の送信をしました。今度は受信をしてみます。
↓リファレンスを見ると、取得した messageId をキーにしてバイナリを取得するようです。
GET https://api.line.me/v2/bot/message/{messageId}/content
$json_string = file_get_contents('php://input'); $jsonObj = json_decode($json_string); $replyToken = $jsonObj->{"events"}[0]->{"replyToken"}; $messageId = $jsonObj->{"events"}[0]->{"message"}->{"id"}; //画像ファイルのバイナリ取得 $ch = curl_init("https://api.line.me/v2/bot/message/".$messageId."/content"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charser=UTF-8', 'Authorization: Bearer ' . $accessToken )); $result = curl_exec($ch); curl_close($ch); //画像ファイルの作成 $fp = fopen('./img/test.jpg', 'wb'); if ($fp){ if (flock($fp, LOCK_EX)){ if (fwrite($fp, $result ) === FALSE){ print('ファイル書き込みに失敗しました<br>'); }else{ print($data.'をファイルに書き込みました<br>'); } flock($fp, LOCK_UN); }else{ print('ファイルロックに失敗しました<br>'); } } fclose($fp); //そのまま画像をオウム返しで送信 $response_format_text = [ "type" => "image", "originalContentUrl" => "【画像ファイルのパス】/img/test.jpg", "previewImageUrl" => "【画像ファイルのパス】/img/test.jpg" ]; $post_data = [ "replyToken" => $replyToken, "messages" => [$response_format_text] ]; $ch = curl_init("https://api.line.me/v2/bot/message/reply"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data)); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charser=UTF-8', 'Authorization: Bearer ' . $accessToken )); $result = curl_exec($ch); curl_close($ch);