ํ ๋ ๊ทธ๋จ BotFather ๋ด์ ํตํด ๋ง๋ @StudyJ001Bot์ ํตํด ํ ๋ ๊ทธ๋จ ๋ด API ๊ณต์ ํํ์ด์ง์์ ์ ๊ณตํด์ฃผ๋ API๋ฅผ ๊ฐ์ง๊ณ ์น ํ๊ฒฝ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ณด๊ณ ์ ํ๋ค. ํ ๋ ๊ทธ๋จ ๋ด API ๊ณต์ ํํ์ด์ง์์ ์น์ ํ๊ฒ ํด๋น API๊ธฐ๋ฅ๋ณ URL, Parameter, method ๋ฑ๋ฑ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ์๋ ค์ฃผ๊ณ ์๋ค. ํ ๋ ๊ทธ๋จ ๋ด API๋ฅผ ์ด์ฉํด ์น ํ๊ฒฝ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ ๋ ํ์ํ ๊ฒ์ด ์๋๋ฐ ๋ณด๋ผ ์ฑํ ์์ด๋(chat_id)์ ๋ณธ๋ฌธ(text)๋ด์ฉ์ด ํ์ํ๋ค. ์น ํ๊ฒฝ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์์์ผํ๊ณ ์ด๋ป๊ฒ ๋ณด๋ผ ์ ์๋์ง์ ๋ํ ๋ด์ฉ์ ์์๋ณด์.
ํ ๋ ๊ทธ๋จ ๋ด API
Bot API๋ Telegram ์ฉ ๋ด ๊ตฌ์ถ์ ๊ด์ฌ์ด์๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ๋ง๋ HTTP ๊ธฐ๋ฐ ์ธํฐํ์ด์ค์ ๋๋ค.
๋ด์ ๋ง๋ค๊ณ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ณด๋ ค๋ฉด ๋ด ๋ฐ ๋ด ์๊ฐ FAQ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค .
ํ ๋ ๊ทธ๋จ BotFather ๋ด์ ํตํด ๋ง๋ ๋๋ง์ ๋ด ํ ํฐ๊ณผ API์์ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ๋ณ URL์ ํตํด ๊ธฐ๋ฅ์ ์คํํ ์ ์๊ณ , ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ํ์ธํ ์ ์๋ค. ํ ๋ ๊ทธ๋จ ๋ด์๋ ๊ณ ์ ํ ์ธ์ฆ ํ ํฐ์ด ์ ๊ณต๋๊ณ , 123456:ABC-DEF1234ghj-zyx52WUid23oii11๊ณผ ๊ฐ์ ๊ฐ์ ํํ๋ฅผ ๋๊ณ ์๋ค. ํ ๋ ๊ทธ๋จ ๋ด ํ ํฐ์ ์ป๊ณ ์๋ก์ด ํ ํฐ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ณ ์ถ๋ค๋ฉด ์ฌ๊ธฐ ๋งํฌ๋ฅผ ํตํด ํ์ธํ ์ ์๋ค. ํ ๋ ๊ทธ๋จ ๋ด API์ ๋ํ ๋ชจ๋ ์ฟผ๋ฆฌ๋ HTTPS๋ฅผ ํตํด ์ ๊ณต๋์ด์ผํ๊ณ ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ ๊ณต๋๋ค. ์๋ก "https://api.telegram.org/bot/METHOD_NAME"์ ๊ฐ๋ค. GET,POST๋ฐฉ์์ HTTP๋ฉ์๋๋ฅผ ์ง์ํ๊ณ Bot API์์ฒญ์์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ URL์ฟผ๋ฆฌ ๋ฌธ์์ด, application / x-www-form-urlencoded, application / json(ํ์ผ ์ ๋ก๋ ์ ์ธ), multipart / form-data(ํ์ผ ์ ๋ก๋์ ์ฌ์ฉ) ์ด 4๊ฐ์ง๋ฅผ ์ง์ํ๋ค.
์๋ต์๋ ํญ์ ๋ถ์ธ ํ๋ "ok"๊ฐ ์๊ณ ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ฒฐ๊ณผ ์ค๋ช ์ด ํฌํจ๋ ์ ํ์ ๋ฌธ์์ด ํ๋ JSON๊ฐ์ฒด๊ฐ ํฌํจ๋๋ค. "ok"๊ฐ true์ธ ๊ฒฝ์ฐ ์์ฒญ์ด ์ฑ๊ณตํ์ผ๋ฉฐ, "result"ํ๋์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ ์ ์๋ค. ์คํจํ ์์ฒญ์ ๊ฒฝ์ฐ "ok"๋ false์ ๊ฐ์ผ๋ฉฐ ์ค๋ฅ๋ "์ค๋ช "๋์ ์ค๋ช ๋์ด ์๋ค. ์ ์ "error_code"ํ๋๋ ๋ฐํ๋์ง๋ง ์ถํ ๋ณ๊ฒฝ ๋ ์ ์์ผ๋ฏ๋ก ์๊ณ ๋ง ์์. ํ ๋ ๊ทธ๋จ ๋ด API์ ๋ชจ๋ ๋ฉ์๋๋ ๋์ ๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๋ชจ๋ ์ฟผ๋ฆฌ๋ UTF-8์ ์ฌ์ฉํ์ฌ ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
ํ ๋ ๊ทธ๋จ์์ ์ฑํ ์์ด๋(chat_id)๋ฅผ ์์๋ด๊ธฐ ์ํด์๋ ํ ๋ ๊ทธ๋จ ๋ด API๋ด Update๊ฐ์ฒด์ URL๋ก ์ฌ์ฉํ๋ getUpdates ๋ฉ์๋๋ฅผ ํตํด ์์๋ผ ์ ์๋๋ฐ, ์น ํ๊ฒฝ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ getUpdates๋ฅผ ์ฌ์ฉํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ฌด๊ฒ๋ ํ์ง ์๊ณ getUpdates๋ฅผ ์์ฒญํ๊ฒ๋๋ฉด ์๋ฌด๊ฒ๋ ์๋ ๋น JSON ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ๊ณผ๋ก ๋ฐ๊ฒ ๋๋ค. ๊ทธ๋์ ํ ๋ ๊ทธ๋จ BotFather ๋ด์ผ๋ก ๋ง๋ ๋๋ง์ ๋ด์๊ฒ ์๋ฌด๋ฐ ๋ฉ์ธ์ง๋ฅผ ์ ์กํ์ฌ ๋ด์ ์ํ๋ฅผ ์ ๋ฐ์ดํธ ์ํจ๋ค.
์ ๋ฐ์ดํธ ๋ฐ๊ธฐ
๋ด์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์์ ํ๋ ์ํธ ๋ฐฐํ์ ์ธ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ํํธ์ผ๋ก ๋ getUpdates ๋ฉ์๋์ ๋ค๋ฅธ ํํธ ์ผ๋ก๋ Webhook ์ ๋๋ค. ์์ ์ ๋ฐ์ดํธ๋ ๋ด์ด ์ด๋ ์ชฝ์ด๋ ์์ ํ ๋๊น์ง ์๋ฒ์ ์ ์ฅ๋์ง๋ง 24 ์๊ฐ์ ์ด๊ณผํ์ง ์์ต๋๋ค.
์ด๋ค ์ต์ ์ ์ ํํ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก JSON ์ง๋ ฌํ ๋ Update ๊ฐ์ฒด๊ฐ ์์ ๋ฉ๋๋ค.
getUpdates
getUpdate ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ์ํด ํ์ํ ํ๋ผ๋ฏธํฐ์ ๊ทธ์๋ฐ๋ฅธ ์ค๋ช ์ ํ์ธํ ์ ์๋ค. getUpdate ๋ฉ์๋๋ฅผ ์ง์ ์์ฒญํด๋ณด์. ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋์ง ํ์ธํด๋ณธ๋ค.
์น ์์์ ์์ฒญ URL์ "https://api.telegram.org/bot[๋ด๊ฐ ๋ง๋ ๋ด์ api token]/getUpdates"์ ๊ฐ๋ค.
getUpdates๋ฅผ ์์ฒญํ๋ค. "ok"๋ผ๋ ํค์ ๊ฐ์ด true๋ก ์์ฒญ์ ์ฑ๊ณตํ์ง๋ง "result"ํค์ ๊ฐ์ด ์๋๊ฒ์ผ๋ก ๋์จ๋ค. ํ ๋ ๊ทธ๋จ ๋ด๊ณผ ์ํธ์์ฉํ ๋ด์ฉ์ด ์๊ธฐ ๋๋ฌธ์ result์ ๊ฐ์ด ํ์ฌ๋ ์๋ค. result์ ๊ฐ์ ๋ฐ๊ธฐ ์ํด์๋ ํ ๋ ๊ทธ๋จ ๋ด ๋๋ง์ ๋ด์ผ๋ก ๋ง๋ค์๋ @StudyJ001Bot๊ณผ ์ํธ์์ฉํ๋ค.
ํ ๋ ๊ทธ๋จ ๋ฉ์ ์ ธ์์ @StudyJ001Bot์ ๊ฒ์ํ๋ค. ๊ฒ์๊ฒฐ๊ณผ๋ก ๋์ค๋ StudyJ001Bot์ "์์(Start)"์ ๋๋ฌ ๋ด์๊ฒ ์ํธ์์ฉ์ ํ๊ฒ ๋ค๊ณ ์๋ฆฐ๋ค. ์ด๋, ๋ด์ Update๊ฐ์ฒด์ ์๋ก์ด ๋ฌด์ธ๊ฐ๊ฐ ์์ฑ๋๋ค. "/start"๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ๊ฐ๊ณ ๋๊ฐ ์ธ์ ๋ณด๋๋์ง์ ๋ํ ์ ๋ณด ๋ํ Update๊ฐ์ฒด์ ๋ด๊ฒจ์๋ค. ๋๋ง์ ๋ด์ธ @StudyJ001Bot๊ณผ ์ํธ์์ฉ์ ํ์ผ๋ ๋ค์ ํ๋ฒ getUpdates๋ฅผ ์์ฒญํด๋ณธ๋ค.
์ฒ์๊ณผ ๋ฌ๋ฆฌ "result"ํค์ ๊ฐ์ผ๋ก ๋ฌด์ธ๊ฐ๊ฐ ๋ง์ด ๋ค์ด์จ๊ฒ์ ํ์ธํ ์ ์๋ค. "update_id", "message", "chat", "date", "text", "entities" ๋ฑ ๋ง์ ์ ๋ณด๊ฐ ์๊ฒผ์์ ํ์ธํ ์ ์๋ค. ์ด ์ค์์ ์ฐ๋ฆฌ๋ "chat"ํค ์์ ๋ค์ด ์๋ "id"ํค์ ๊ฐ์ด ํ์ํ๋ค. "chat"์์ "id"์ ๊ฐ์ด๋ฏ๋ก ํ ๋ ๊ทธ๋จ ๋ด์ ์ด์ฉํด ์น ํ๊ฒฝ์์ URL๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ๋ ํ์ํ ํ๋ผ๋ฉํฐ ์ฑํ ์์ด๋(chat_id)๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค. "id"์ ๊ฐ์ ์ ์๋ก 123456789์ ๊ฐ์ ๊ฐ์ด ๋ค์ด์๋ค. ๊ทธ id๋ ํ ๋ ๊ทธ๋จ์ ๊ฐ์ ํ ๋ด ๊ณ์ ์ "id"๊ฐ์ด๊ธฐ๋ ํ๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ
ํ ๋ ๊ทธ๋จ ๋ด API์ ๋ชจ๋ ๋ฉ์๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ GET,POST๋ฐฉ์์ HTTP ๋ฉ์๋๋ฅผ ์ง์ํ๋ค. ํ ๋ ๊ทธ๋จ ๋ด API ์์ฒญ์์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๋ฌ ํ๋ ค๋ฉด URL ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋๋ application/json ๋๋ application/x-www-form-urlencoded ๋๋ mulipart/form-data๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ฉ์๋๋ฅผ ํตํด ํธ์ถ์ ์ฑ๊ณตํ ๊ฒฐ๊ณผ๋ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ JSON ๊ฐ์ฒด๊ฐ ๋ฐํ๋๋ค.
sendMessage
์ฌ๊ธฐ๊น์ง ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์ค๋น๊ฐ ์๋ฃ๋ฌ๋ค. getUpdates ๋ฉ์๋๋ก ์์ฒญํด์ ์ป์ chat id์ sendMessage ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์น ํ๊ฒฝ์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค. https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/sendMessage ์ ๊ฐ์ด ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.
์ ์ก URL : https://api.telegram.org/bot1122204878:AAEqAgWH1DrRjpVjhaHiCM-y6jn3TXBpLZM/sendMessage?chat_id=123456789&text=Hello World!
์์ ๊ฐ์ url์ ์์ฒญํ๊ฒ๋๋ฉด ํด๋น chat_id๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ StudyJ001Bot์ด "Hello World!"๋ผ๋ ๋ฉ์ธ์ง๋ฅผ ์ ์กํ๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
ํ ๋ ๊ทธ๋จ ๋ด API์์ ์ ๊ณตํด์ฃผ๋ sendMessage URL ๋ฉ์๋๋ฅผ ํตํด์ ์น ํ๊ฒฝ์์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ผ ์ ์๋ค. ์ต์ ๊ฐ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ํ๋ผ๋ฏธํฐ๋ ์ฌ์ฉํด์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ฉด ๋ ๋ค์ํ ๋ฉ์ธ์ง๋ฅผ ์น ํ๊ฒฝ์์๋ ๋ณด๋ผ ์ ์๋ค.
๋๊ธ