15

ユーザーがボットに送信した画像を受信 (およびサーバーに保存) することはできますか?

画像が送信された場合、この JSON 投稿を受け取ります。これは Telegram Bot-API の説明へのリンクです。画像全体を受信できるかどうかはわかりません: 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}]}}
4

3 に答える 3

14

Telegramサポートのダウンロードファイルは次のgetFileとおりです。

API ドキュメントで確認できます: https://core.telegram.org/bots/api#getfile

于 2015-11-29T05:17:16.447 に答える
8

Telegram サーバーから画像をダウンロードすることができます。1. API
を使用してファイルを取得します。getFile

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

2. ファイル パスを取得します //guzzle クライアントを作成します $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'];

3. PHP を使用Intervention/Imageしている場合は、イメージをダウンロードしてサーバーに保存します。

//Build upload path
$upload_path = public_path() . \Config::get('media::media.uploadPath');
//Get 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);
于 2016-10-21T17:52:50.690 に答える