2015-07-01 228 views
6

是否可以接收任何用戶發送給機器人的圖像(並將其存儲在服務器上)?如何使用Telegram API接收圖像?

如果發送圖像,我收到此JSON帖子。這是一個指向Telegram Bot-API描述的鏈接。我不知道是否有可能接收整個圖像或不:與getFilehttps://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

哪裏是你的PHP代碼? –

+0

在這個時候,我什麼也沒有,因爲我不知道在這種情況下做什麼。現在,只將電報Webhook-Call的內容存儲到我的腳本中。 –

+1

假設我們不知道電報API,並引導我們瞭解正在發生的事情。這裏的JSON是來自Telegram的回覆消息嗎?它引用了一些'file_id'代碼 - 它們存儲在哪裏?是否有API調用來獲取它們? – halfer

回答

2

可以從電報服務器下載圖像。 這樣做:
1.使用getFile API獲取文件

//Telegram link 
    $telegram_link = 'https://api.telegram.org/bot' . $this->tg_configs['api_key'] . '/getFile?file_id=' . $photo['file_id']; 
  • 獲取文件路徑

    //創建狂飲客戶 $ guzzle_client =新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']; 
    
  • 如果使用PHP使用Intervention/Image下載的圖片,並將其保存在服務器上。

    //建立上傳路徑 $ upload_path = public_path()。 \配置::獲得( '媒體:: media.uploadPath'); //獲取圖片 $ 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);