일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Telegram API
- EC2
- 카카오 알림톡
- jenkins window
- springboot
- jdk upgrade
- QureyDsl
- thymeleaf
- 윈도우 개발서버
- AWS
- docker
- docker node
- Kotlin
- 비즈뿌리오
- jenkins bitbucket
- telegram
- docker app
- rbenv
- push 403
- querydsl
- 개발서버
- NoArgsConstructor
- 알림톡
- DynamoDB
- modelmapper
- NoSQL Workbench
- spring boot
- layout-dialect
- 고정 아이피
- growpart
Archives
- Today
- Total
givepro
Telegram API - PHP 본문
반응형
이전에 텔레그램 메신저로 서비스의 판매 알림 기능을 구현한적이 있던 내용이 있어서 포스팅하려고 합니다.
https://hexoul.blogspot.com/2017/11/telegram-sendmessage-api.html
위 포스팅 요약
텔레그램 API를 이용하여 Bot을 활용, 그리고 채팅방으로 메시지를 보내기
- Bot 생성
- 웹브라우저(Web browser)에서 https://web.telegram.org/#/im?p=@BotFather
- 하단의 Start 버튼 클릭 또는 /start
- /newbot 입력
- Bot 별칭 지정: chat 리스트 등 외부에 보일 이름
- Bot 이름 지정: 반드시 이름이 bot으로 끝나야 한다. ex) hexoul_bot
- Access token 메모: 1-4까지 진행하면 BotFather가 메세지를 보내는데 이것이 Access token이다. "Use this token to access the HTTP API:" 바로 아래의 긴 문자열을 복사해둔다.
- chat 리스트에서 1-4. 에서 지정한 별칭을 찾아 Start 버튼 클릭 또는 /start 입력
- 채팅방 정보 가져오기1-5에서 얻은 Access token이 123ABC였다면, "https://api.telegram.org/bot123ABC/getUpdates" 가 된다.마지막으로 확인된 chat_id는 반드시 메모하도록 한다.
- 만약 "result": []로 되어있다면 아직 Bot 시작 전일 수 있으므로 1-7이 잘 되었는지 확인한다. 정상적으로 처리되었다면 아래와 같은 결과가 반환된다.
- 내 정보 API 호출: "https://api.telegram.org/bot" + Access token + "/getUpdates" 를 웹브라우저에 입력한다.
- 채팅방 메시지 보내기
- https://api.telegram.org/bot123ABC/sendMessage?chat_id=????????&text=hello
위 내용은 기본 API를 활용한 JSON 형태의 데이터 Return이다
위 정리된 내용을 참고하여 PHP에서는 CURL을 활요하여 전송 및 데이터를 확인한다.
$tg_api_key = "{apiKeyValue}";
$tg_chat_id = "{chatId}";
ob_start();
include './sample.html';
$include = ob_get_contents();
ob_end_clean();
$message = <<<TEXT
{$include}
TEXT;
$params = array(
'chat_id' => $tg_chat_id,
'text' => $message
);
$tg_send_url = "https://api.telegram.org/".$tg_api_key."/sendMessage";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: multipart/form-data']);
curl_setopt($ch, CURLOPT_URL, $tg_send_url);
$postFields = array(
'chat_id' => $tg_chat_id,
'text' => $message,
'parse_mode' => 'HTML',
'disable_web_page_preview' => false,
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
$response = curl_exec($ch);
if(!$response)
echo curl_error($ch);
curl_close($ch);
$result = json_decode($response, true); // object 형식인 경우 true 추가 필요
Comments