일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- mavic pro
- 카이스트
- narrowbandimage
- fc100df
- 게임
- 목성
- 금성
- zwo
- 성운
- 오사카
- 할아버지
- optolonglextreme
- asiairpro
- 삼각형자리은하
- asi294mcpro
- takahashitelescope
- GALAXY
- 행성
- 기숙사
- 엄마
- osaka
- VC++ 6.0
- m33
- astrophotography
- 토성
- 별사진
- 일본
- 달
- iceland
- 은하
Archives
- Today
- Total
June's Story
Google Cloud Platform + PHP로 Telegram bot 만들기 본문
1. Telegram 설치 후 봇 생성
- Telegram 실행화면의 연락처를 누르고 BotFather 검색해서 대화 시작
- BotFather 채팅창 메뉴에서 /newbot 실행하여 Telegram bot 생성
- 생성완료되면 API 토큰을 보내주는 데 저장해놓음
- 이렇게 하면 텔레그램에서 할일은 끝
2. Google Cloud Platform에 Bot 서버 생성
- Google Cloud Platform (GCP) 들어가서 무료로 시작하기 눌러서 GCP 실행
- 결제 계정 생성
- Terminal에서 deploy할때 Cloud build api가 활성화되어 있어야하는데 Cloud build 를 활성화 할려면 결제 계정이 설정되어 있어야 함
- 결제 계정 생성 전에 만든 프로젝트는 결제 계정이 적용 안되는 경우가 있는 것 같으니 먼저 생성
- 결제 계정 생성하고 초기화면으로 가서 프로젝트 생성 (My First Project)
- 콘솔 홈 화면에서 오른쪽 위 터미널 모양 아이콘 눌러서 Cloud Shell 활성화 -> 편집기 열기
- 편집기 열어서 나오는 왼쪽 폴더 창에 오른클릭해서 telegrambot 이라고 폴더 생성하고 app.yaml, index.php, php.ini 파일 생성
app.yaml
1
2
3
4
5
|
runtime: php55
api_version: 1
handlers:
- url: /.*
script: index.php
|
cs |
php.ini
1
|
extension = "curl.so"
|
cs |
index.php
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
|
<?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($content, true);
$chatId = $update["message"]["chat"]["id"];
$text = $update["message"]["text"];
if($text)
{
$url = API_URL."sendmessage";
$postData = array('chat_id'=>$chatId,'text'=>$text,
'reply_markup'=> array('hide_keyboard' => true),'parse_mode'=> "Markdown");
$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'));
curl_setopt($ch, CURLOPT_POST, count($postData));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
$result = curl_exec($ch);
curl_close($ch);
}
|
cs |
- 편집기 화면에서 -> 터미널 열기 버튼 눌러서 터미널 활성화
- app.yaml이 있는 폴더로 이동해서 다음 명령어 입력하여 프로그램 빌드
1
|
gcloud app deploy
|
cs |
- 처음 deploy 하면 Cloud Build API 가 사용 설정 안되어 있다는 에러 발생할 수 있음 그러면 로그에 나오는 링크로 가서 활성화 하면 됨
- 지역 선택하라는 메뉴가 나오면 아무데나 하면 되는데 asia-northeast3가 서울임
- deploy가 완료되면 다음과 같이 target url이 나옴
3. GCP 서버와 Telegram bot을 Webhook으로 연결해주기
- Telegram bot에 전달한 메세지를 처리하기 위한 서버로 위에서 만든 서버를 지정해주기 위해서 다음과 같은 메세지를 보내면 됨
https://api.telegram.org/bot(텔레그램봇토큰)/setWebhook?url=(GCP타겟url)
위의 예제의 경우를 대입하면
을 인터넷 주소창에 넣고 엔터치면 됨
- Telegram에서 테스트하기
- 연락처에 내가 생성한 봇 이름을 검색해서 대화 시작
Comments