How to get images using Telegram API?

Is it possible to receive images (and store them on the server) that was sent by any user to the bot?

If the image is sent, I get a JSON message. This is a link to the Telegram Bot-API description. I do not know if it is possible to get the whole image or not: https://core.telegram.org/bots/api#available-types

{"update_id":XXXXX, "message":{"message_id":2222,"from":{"id":XXXXX,"first_name":"Christoph","last_name":"XXXXX"},"chat":{"id":XXXXX,"first_name":"Christoph","last_name":"XXXXX"},"date":1435704055,"forward_from":{"id":XXXXX,"first_name":"Christoph","last_name":"XXXXX"},"forward_date":1435703471,"photo":[{"file_id":"AgADAgADmaoxG9KknwF4O978o3EMqb_EWSoABI5s-WWq46dqiR0AAgI","file_size":998,"width":51,"height":90},{"file_id":"AgADAgADmaoxG9KknwF4O978o3EMqb_EWSoABHax4HvxYqktiB0AAgI","file_size":9912,"width":180,"height":320},{"file_id":"AgADAgADmaoxG9KknwF4O978o3EMqb_EWSoABNzzDwp3sT2whx0AAgI","file_size":41020,"width":450,"height":800},{"file_id":"AgADAgADmaoxG9KknwF4O978o3EMqb_EWSoABE0Gg-AefJ7Yhh0AAgI","file_size":66058,"width":720,"height":1280}]}} 
+6
source share
2 answers

Telegram download support now with getFile :

You can see this in the api documentation: https://core.telegram.org/bots/api#getfile

+8
source

You can download the image from the Telegram server. Do it:
1. Get the file using getFile api

 //Telegram link $telegram_link = 'https://api.telegram.org/bot' . $this->tg_configs['api_key'] . '/getFile?file_id=' . $photo['file_id']; 
  1. Get file path

    // Create a clip-click $ guzzle_client = new GuzzleClient ();

     //Call telegram $request = $guzzle_client->get($telegram_link); //Decode json $json_response = json_decode($request->getBody(), true); if ($json_response['ok'] == 'true') { //Telegram file link $telegram_file_link = 'https://api.telegram.org/file/bot' . $this->tg_configs['api_key'] . '/' . $json_response['result']['file_path']; 
  2. If you are using PHP, use Intervention/Image to upload the image and save it to your server.

    // Create the upload path $ upload_path = public_path (). \ Config :: get ('media :: media.uploadPath'); // Get the image $ image = $ thumbnail = InterventionImage :: make ($ telegram_file_link);

      //Get mime $mime = $image->mime(); if ($mime == 'image/jpeg') { $extension = '.jpg'; } elseif ($mime == 'image/png') { $extension = '.png'; } elseif ($mime == 'image/gif') { $extension = '.gif'; } else { $extension = ''; }//E# if else statement //Resize images $image->resize(\Config::get('media::media.mainWidth'), \Config::get('media::media.mainHeight')); $thumbnail->resize(\Config::get('media::media.thumbnailWidth'), \Config::get('media::media.thumbnailHeight')); //Build media name $media_name = \Str::random(\Config::get('media::media.mediaNameLength')) . $extension; //Save images $image->save($upload_path . '/' . $media_name); $thumbnail->save($upload_path . '/thumbnails/' . $media_name); 
+2
source

All Articles