June's Story

Telegram bot으로 보낸 사진 Google Cloud Storage에 저장하기 본문

프로그래밍

Telegram bot으로 보낸 사진 Google Cloud Storage에 저장하기

Ikjunerd 2022. 4. 6. 20:39

Google Cloud Platform + PHP로 Telegram bot 만들기 에서 만든 봇을 가지고 사진을 처리하는 내용

1. Google Cloud Storage에 Bucket 생성

  • 탐색메뉴 > Cloud Storage > 브라우저 클릭

  • 버킷 만들기 버튼 눌러서 Bucket 생성 
  • 원하는 이름만 입력하고 맨 아래 만들기 버튼 클릭해서 완료
  • GCP에서 할일은 끝

2. Telegram bot code 수정

  • GCP 메인 화면으로 돌아가서 Cloud Shell을 열고 index.php 파일을 다음과 같이 수정
  • 수정하고 터미널 열기 버튼을 눌러서 터미널에 gcloud app deploy 눌러서 앱 deploy
  • BOT_TOKEN랑 버킷이름을 자기것으로 바꾸면 됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
define('BOT_TOKEN''5156495869:AAGq5jjsBvA_UaeN-eZUXxYgJq7RXzaXd3s');
define('API_URL''https://api.telegram.org/bot'.BOT_TOKEN.'/');
 
$content = file_get_contents("php://input");
$update = json_decode($contenttrue);
 
$chatId = $update["message"]["chat"]["id"];
$photo = $update["message"]["photo"];
 
function getSslPage($url$postData = null
{   
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    
    if($postData != null)
    {
        curl_setopt($ch, CURLOPT_POST, count($postData));
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
    }
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
 
if($photo)
{
    $result = getSslPage(API_URL."getFile?file_id=".$photo[count($photo)-1]["file_id"]); 
    $json = json_decode($resulttrue);
    $path = $json["result"]["file_path"];   
    
    $file_content = getSslPage("https://api.telegram.org/file/bot".BOT_TOKEN."/".$path);
    file_put_contents("gs://telegram_bot_test/".$chatId.".jpg"$file_content);
}
cs

 

3. Telegram bot 에서 테스트

  • bot으로 아무 사진이나 보내면 버킷에 파일이 업로드 된 것을 확인 할 수 있음

 

Comments