-- ๋ฒ์ญ : https://core.telegram.org/bots/api
Telegram Bot Api
๋ด API๋ ํ ๋ ๊ทธ๋จ์์ ๋ด์ ๋ง๋๋ ๊ฐ๋ฐ์๋ค์ ์ํด ๋ง๋ค์ด์ง HTTP ๊ธฐ๋ฐ ์ธํฐํ์ด์ค์ ๋๋ค. ๋ง๋๋ ๋ฐฉ๋ฒ๊ณผ ์ธํ ๋ฐฉ๋ฒ์ ์๊ธฐ ์ํด์๋, Introduction to Bots ํ์ด์ง์ Bot FAQ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Authorizing your bot (๋ด ์ธ์ฆ)
๊ฐ๊ฐ์ ๋ด๋ง๋ค ๋ง๋ค์ด์ง ๋ ํน๋ณํ ์ธ์ฆํค๊ฐ ์ฃผ์ด์ง๋๋ค. ํ ํฐ์ ๋ง์น 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
์ด๋ฐ ํ์์ผ๋ก ์๊ฒผ์ง๋ง, ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์์์ <token>
์ด๋ผ๋ ๋จ์ด๋ก ๋์ฒดํ ์์ ์
๋๋ค. ๋น์ ์ ํ ํฐ์ ์์ ํ๊ณ ์๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ด ํ์ด์ง์์ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
Making request (์์ฒญํ๊ธฐ)
๋ชจ๋ ํ
๋ ๊ทธ๋จ ๋ด API์ ์ฟผ๋ฆฌ๋ค์ HTTPS ์์ ๋ฐ์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์์์ ํ์๋ก ํฉ๋๋ค: https://api.telegram.org/bot<token>/METHOD_NAME
. ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ํ์ ๋ณด์๋ฉด:
https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
ํ ๋ ๊ทธ๋จ์์๋ HTTP ๋ฉ์๋์ธ GET, POST์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค. ๋ด API ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋๊ธฐ๋ ๋ฐฉ๋ฒ์ ๋ค ๊ฐ์ง๋ฅผ ์ง์ํฉ๋๋ค:
- URL query string
- application/x-www-form-urlencoded
- application/json (except for uploading files)
- multipart/form-data (use to upload files)
์๋ต (response)์ผ๋ก๋ 'OK' ํ๋์ 'description'์ ๊ฐ์ง JSON Object๋ฅผ ๋ฐํํ ๊ฒ์ ๋๋ค. 'OK' ํ๋(Boolean)์ ๊ฒฝ์ฐ ํญ์ ๋ฐํํ ๊ฒ์ด๊ณ , 'description' ํ๋(String)๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๋ด์ฉ์ ํฌํจํ์ฌ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ฐํํ ๊ฒ์ ๋๋ค. ๋ง์ฝ 'ok' ํ๋์ ๋ด์ฉ์ด true์ ๊ฐ๋ค๋ฉด, ์์ฒญ (request)๋ ์ฑ๊ณต์ ์ด์์ผ๋ฉฐ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ก 'result' ํ๋๋ฅผ ๋ฐํํ ๊ฒ์ ๋๋ค. ์ฑ๊ณต์ ์ด์ง ๋ชปํ ์์ฒญ์ ๊ฒฝ์ฐ, 'ok' ํ๋์ ๋ด์ฉ์ false๊ฐ ๋ ๊ฒ์ด๋ฉฐ, ์๋ฌ๋ 'description' ํ๋์ ์ค๋ช ๋ ๊ฒ์ ๋๋ค. 'error_code' ํ๋(Integer) ๋ํ ๋ฐํ๋์ง๋ง, ํด๋น ๋ด์ฉ์ ๋ฏธ๋์ ์ธ์ ๋ ์ง ๋ณํ ์ ์์ต๋๋ค. ์ด๋ ํ ์๋ฌ๋ 'parameters' ํ๋(ResponseParameters ํ์ )๋ฅผ ๋ฐํํ๋ฉฐ, ์๋์ ์ผ๋ก ์๋ฌ๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ๋ ๋์ธ ๊ฒ์ ๋๋ค.
- ๋ชจ๋ ๋ด API์ ๋ฉ์๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํฉ๋๋ค. (case-insensitive)
- ๋ชจ๋ ์ฟผ๋ฆฌ๋ UTF-8์ ์ฌ์ฉํฉ๋๋ค. (encoding)
Making result when getting updates
๋ง์ฝ ๋น์ ์ด ์นํ
(webhooks)์ ์ฌ์ฉํ๋ค๋ฉด, ๋น์ ์ ์นํ
์ ๋ต๋ณ์ ๋ณด๋ด๋ฉด์ ๋ด API๋ก ์์ฒญ(request)์ ์ํํ ์ ์์ต๋๋ค. ์ ๋ฌ ๋งค๊ฐ ๋ณ์์ ๋ํด application/json, application/x-www-form-urlencoded, multipart/form-data
์๋ต ์ปจํ
ํธ ํ์
์ ์ง์ ํ์ธ์. ์์ฒญํ ๋ฉ์๋ ๋งค๊ฐ ๋ณ์์์ ํธ์ถ๋ ๋ฉ์๋๋ฅผ ์ง์ ํ์ธ์. ๊ทธ๋ฌํ ์์ฒญ์ด ์ฑ๊ณต์ ์ด์๋์ง, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋์ง ์ ์ ์์ต๋๋ค.
** Updates (์
๋ฐ์ดํธ)
๋ด๊ฐ ๋ณด๊ธฐ์ ์ด ์
๋ฐ์ดํธ๋ ๋งํ์ ํ๋๋ฅผ ์๋ฏธํ๋ ๋ชจ์.
Getting updates (์ ๋ฐ์ดํธ ๊ฐ์ ธ์ค๊ธฐ)
๋น์ ์ ๋ด์์ ์
๋ฐ์ดํธ๋ฅผ ๋ฐ์์ค๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: getUpdates
๋ฉ์๋ ์ฌ์ฉํ๊ธฐ, Webhooks
์ฌ์ฉํ๊ธฐ. ๋ด์ด ์์ ์ธ๊ธํ ๋ฐฉ์์ ํตํด ๋ฐ์์ฌ ๋๊น์ง ์
๋ฐ์ดํธ๋ ์๋ฒ์ ์ ์ฅ๋๋, ์ ์ฅ์ 24์๊ฐ ์ด๋ด๋ก ์ง์๋ฉ๋๋ค.
์ด๋ค ๋ฐฉ์์ ์ฌ์ฉํ๋์ง์ ๊ด๊ณ ์์ด, ๋น์ ์ ๊ทธ ๊ฒฐ๊ณผ๋ก์ JSON Objects์ธ Update ๊ฐ์ฒด๋ฅผ ๋ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
Update
์ด ๊ฐ์ฒด๋ ๋ค์ด์ค๋ ์ ๋ฐ์ดํธ๋ฅผ ํํํฉ๋๋ค.
getUpdates
ํ ๊ฐ ์ด์์ ์ฌ๋ฌ ๋ค์ด์ค๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด์๋ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. Update ๊ฐ์ฒด ๋ฐฐ์ด์ด ๋ฆฌํด๋ฉ๋๋ค.
์ฐธ๊ณ :
- ๋ง์ฝ outgoing webhook์ด ์ธํ ๋๋ค๋ฉด, ์ด ๋ฉ์๋๋ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค.
- ์ค๋ณต๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์์ค๋ ๊ฒ์ ํผํ๊ธฐ ์ํด์๋, ๊ฐ๊ฐ์ ์๋ฒ ์๋ต ์ดํ offset๋ฅผ ์ฌ๊ณ์ฐํ์ญ์์ค.
setWebhook
url์ ๋ช ์ํ๊ณ outgoing webhook๋ฅผ ํตํด ๋ค์ด์ค๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ๊ธฐ ์ํด์๋ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ธ์. ๋ด์ ์ ๋ฐ์ดํธ๊ฐ ์ธ์ ์ด๋ฃจ์ด์ง๋ ๊ฐ์, ํ ๋ ๊ทธ๋จ์ HTTPS POST ์์ฒญ์ ํน์ url๋ก ์ ์กํ๋ฉฐ, JSON Object์ธ Update ๊ฐ์ฒด๋ฅผ ํฌํจํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋ง์ฝ ์์ฒญ์ด ์ฑ๊ณต์ ์ด์ง ์์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ช์ฐจ๋ก์ ์๋ ํ์ ํฌ๊ธฐํ ๊ฒ์ ๋๋ค. ์ฑ๊ณต์ผ ๊ฒฝ์ฐ True๋ฅผ ๋ฆฌํดํฉ๋๋ค.
์น ์ฌ์ดํธ์ ์์ฒญ์ด Telegram์์ ์ ์ก๋๋์ง ํ์ธํ๋ ค๋ฉด https://www.example.com/<token>
์ ๊ฐ์ ๋น๋ฐ์ค๋ฌ์ด ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฌด๋ ๋น์ ๋ด์ ํ ํฐ์ ๋ชจ๋ฅด๋๊น, ์ฐ๋ฆฌ๋ผ๊ณ ํ์ ํ ์ ์์ ๊ฒ๋๋ค.
---
ํ ๋ ๊ทธ๋จ ๋ด์ ํตํด ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์ ์๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ธ๋ฏ ํ๋ค.
1. sendMessage : ๋จ์ ๋ฉ์ธ์ง ๋ณด๋ด๊ธฐ. ๋จ์ ์๋ฆผ์ฉ์ผ๋ก ์ฌ์ฉํ ์ ์์.
2. webhook ๋ง๋ค๊ธฐ : ๋จ์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ๋ฟ๋ง ์๋๋ผ, ์ฌ์ฉ์๊ฐ ๋ณด๋ด๋ ๋ช ๋ น์ด์ ๋ฐ๋ผ ๋ฐ์์ ํ ์๋ ์๋ ์ํธ์์ฉํ ๋ด ๋ง๋ค ์ ์์.
'๐ป Back-End' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Excel] Spring์์ ์์ ์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ (0) | 2020.11.24 |
---|---|
[Spring Batch] Logback ์ค์ ํ๊ธฐ (0) | 2019.11.14 |
[JEUS] Session Timeout ์ค์ (0) | 2019.02.13 |
[Web] #Servlet #GET #POST (0) | 2018.07.24 |
[ASP.NET][C#] All About Office Interop (Excel) (0) | 2018.05.10 |