2015-07-01 23 views
6

Có thể nhận hình ảnh (và lưu trữ hình ảnh trên máy chủ) được gửi bởi bất kỳ người dùng nào đến bot không?Làm cách nào để nhận ảnh bằng API Telegram?

Nếu hình ảnh được gửi, tôi nhận được bài đăng JSON này. Đây là một liên kết đến mô tả Bot-API Telegram. Tôi không biết nếu nó có thể nhận được toàn bộ hình ảnh hay không: 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}]}} 
+1

Mã PHP của bạn ở đâu? –

+0

Tại thời điểm này tôi không có gì, bởi vì tôi không biết phải làm gì trong trường hợp này. Bây giờ, chỉ lưu trữ nội dung của Telegram Webhook-Call vào tập lệnh của tôi. –

+1

Giả sử chúng ta không biết API Telegram và hướng dẫn chúng ta những gì đang xảy ra. JSON có phải là thư trả lời từ Telegram không? Nó tham khảo một số mã 'file_id' - chúng được lưu ở đâu? Có cuộc gọi API nào để tìm nạp chúng không? – halfer

Trả lời

2

Có thể tải xuống hình ảnh từ máy chủ Telegram. Làm điều này:
1. Lấy tập tin bằng cách sử dụng getFile api

//Telegram link 
    $telegram_link = 'https://api.telegram.org/bot' . $this->tg_configs['api_key'] . '/getFile?file_id=' . $photo['file_id']; 
  1. Lấy đường dẫn tập tin

    // Tạo tật ham ăn client $ 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. Nếu sử dụng PHP sử dụng Intervention/Image để tải về các hình ảnh và lưu nó trên máy chủ của bạn.

    // Tạo đường dẫn tải lên $ upload_path = public_path(). \ Config :: get ('media :: media.uploadPath'); // Nhận hình ảnh $ 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); 
    
Các vấn đề liên quan