Ç÷¯½º Ä£±¸ ÀÚµ¿ÀÀ´ä API¸¦ »ç¿ëÇÏ¿© 꺿 ¸¸µé±â
[Ä«Ä«¿ÀÅå 꺿] Ç÷¯½º Ä£±¸ ÀÚµ¿ÀÀ´ä API¸¦ »ç¿ëÇÏ¿© 꺿 ¸¸µé±â
¾È³çÇϼ¼¿ä
Java¿Í SpringÀ» ÀÌ¿ëÇÏ¿© Ä«Ä«¿ÀÅå Ç÷¯½ºÄ£±¸ ÀÚµ¿ÀÀ´ä API·Î °£´ÜÇÑ Ãªº¿À» ±¸ÇöÇÏ´Â °ÍÀ» ¼³¸íÇØ º¸·Á ÇÕ´Ï´Ù.
Ä«Ä«¿ÀÅå ÀÚµ¿ÀÀ´äÀº RestÇü½ÄÀÇ api·Î »ç¿ëÀÚ ÂÊ¿¡¼ ÄÁÆ®·Ñ·¯¸¸ ±¸ÇöÇÔÀ¸·Î½á ½±°Ô °³¹ß ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸ÕÀú Ä«Ä«¿ÀÅå Ç÷¯½ºÄ£±¸ °ü¸®ÀÚ ¼¾ÅÍ¿¡¼ °èÁ¤ µî·Ï ÈÄ, Ç÷¯½º Ä£±¸¸¦ »ý¼ºÇÕ´Ï´Ù.
ÀÌ °úÁ¤Àº ȨÆäÀÌÁö¿¡¼ ½±°Ô °¡´ÉÇÏ´Ï »ý·« ÇÏ°Ú½À´Ï´Ù.
https://center-pf.kakao.comÇ÷¯½º Ä£±¸¿¡¼ Áö¿øÇÏ´Â API´Â Å©°Ô 4°¡Áö·Î ÀÌ Áß keyboard¿Í message ±â´É¸¸ ±¸Çö Çϼŵµ ¹«¹æÇÕ´Ï´Ù.
API ÁÖ¿ä ±â´É ¼øÀ¸·Î ¼³¸íµå¸®°Ú½À´Ï´Ù.
1. Home Keyboard API
ÀÌ¿ëÀÚ°¡ ÃÖÃʷΠäÆù濡 µé¾î ¿Ã ¶§ ±âº»À¸·Î Å°º¸µå ¿µ¿ª¿¡ Ç¥½ÃµÉ ÀÚµ¿ÀÀ´ä ¸í·ÉÀ» È£ÃâÇÏ´Â APIÀÔ´Ï´Ù.
APIÇü URLÀ» µî·Ï ÇÒ ¶§ Ãʱâ Å×½ºÆ®·Î keyboard¸¦ È£Ãâ ÇÏ´Ï ²À ±¸Çö ÇؾßÇÒ ºÎºÐ ÀÔ´Ï´Ù.
Specification
- Method : GET
- URL : http(s)://:your_server_url/keyboard
- Content-Type : application/json; charset=utf-8
{
"type" : "buttons",
"buttons" : ["¼±Åà 1", "¼±Åà 2", "¼±Åà 3"]
}
À§¿Í °°ÀÌ keyboard URLÀ» È£ÃâÇϸé Json Object ŸÀÔÀÇ °´Ã¼¸¦ ¸®ÅÏ ÇØ ÁÝ´Ï´Ù.
TypeÀº ¹öÆ° ÇüÀÎ "buttons"¿Í ÅؽºÆ® ÇüÀÎ "text"°¡ ÀÖ½À´Ï´Ù.
¹öÆ°ÀÏ °æ¿ì ¿¹Á¦
// ¹öÆ°
@RequestMapping(value = "/keyboard", method = RequestMethod.GET)
public String keyboard() {
System.out.println("/keyboard");
JSONObject jobjBtn = new JSONObject();
ArrayList<String> btns = new ArrayList<>();
btns.add("½Åû");
btns.add("³ªÀÇ ½Åû ³»¿ª (°í°´¼¾ÅÍ)");
jobjBtn.put("type", "buttons");
jobjBtn.put("buttons",btns);
return jobjBtn.toJSONString();
}
Å°º¸µåÀÏ °æ¿ì ¿¹Á¦
// Å°º¸µå
@RequestMapping(value = "/keyboard", method = RequestMethod.GET)
public String keyboard() {
System.out.println("/keyboard");
JSONObject jobjBtn = new JSONObject();
jobjBtn.put("type", "text");
return jobjBtn.toJSONString();
}
2. ¸Þ½ÃÁö ¼ö½Å ¹× ÀÚµ¿ÀÀ´ä API
»ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¸í·É¾î¸¦ ¼¹ö·Î Àü´ÞÇØÁÖ´Â APIÀÔ´Ï´Ù. ´äº¯¹æ½ÄÀº ÁÖ°ü½Ä(text)°ú °´°ü½Ä(buttons) Áß ¼±Åà ÇÒ ¼ö ÀÖ½À´Ï´Ù.
Specification
- Method : POST
- URL : http(s)://:your_server_url/message
- Content-Type : application/json; charset=utf-8
- Parameters
»ç¿ëÀÚ ÂÊ¿¡¼ ´äº¯À» ÀÔ·ÂÇÏ¸é ¼¹ö¿¡ ¾Æ·¡¿Í °°ÀÌ °ªÀÌ µé¾î¿É´Ï´Ù.
curl -XPOST 'https://:your_server_url/message' -d '{
"user_key": "encryptedUserKey",
"type": "text",
"content": "Â÷·®¹øÈ£µî·Ï"
}'
¿©±â¼ ÀÚµ¿ÀÀ´ä ¸í·É¾îÀÇ ¸Þ½ÃÁö ÅؽºÆ® ȤÀº ¹Ìµð¾î ÆÄÀÏ uriÀÎ content¸¦ ÀÌ¿ëÇÏ¿© ´äº¯À» ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.
{
"message": {
"text": "±ÍÇÏÀÇ Â÷·®ÀÌ ¼º°øÀûÀ¸·Î µî·ÏµÇ¾ú½À´Ï´Ù. ÃàÇÏÇÕ´Ï´Ù!",
"photo": {
"url": "https://photo.src",
"width": 640,
"height": 480
},
"message_button": {
"label": "ÁÖÀ¯ ÄíÆù¹Þ±â",
"url": "https://coupon/url"
}
},
"keyboard": {
"type": "buttons",
"buttons": [
"óÀ½À¸·Î",
"´Ù½Ã µî·ÏÇϱâ",
"Ãë¼ÒÇϱâ"
]
}
}
»çÁøÀ̳ª ¸µÅ©¸¦ ÷ºÎÇÒ °æ¿ì, JsonObject¾È¿¡ ¶Ç ´Ù¸¥ JsonObject¸¦ »ðÀÔÇÏ´Â Çü½ÄÀ¸·Î ¸¸µì´Ï´Ù. ¸Þ½ÃÁö Ãâ·Â ÈÄ¿¡´Â ´Ù½Ã Keyboard¸¦ È£Ãâ ÇÔÀ¸·Î½á óÀ½°ú °°Àº Å°º¸µå ȯ°æÀ¸·Î ¸¸µé¾î ÁÝ´Ï´Ù.
¹öÆ° ÀÏ °æ¿ì ¿¹Á¦ (¸µÅ© ÷ºÎ)
@RequestMapping(value = "/message", method = RequestMethod.POST, headers = "Accept=application/json")
@ResponseBody
public String message(@RequestBody JSONObject resObj) {
System.out.println("/message");
System.out.println(resObj.toJSONString());
String content;
content = (String) resObj.get("content");
JSONObject jobjRes = new JSONObject();
JSONObject jobjText = new JSONObject();
JSONObject jobjmesBtn = new JSONObject();
JSONObject jobjBtn = new JSONObject();
ArrayList<String> btns = new ArrayList<>();
btns.add("½Åû");
btns.add("³ªÀÇ ½Åû ³»¿ª (°í°´¼¾ÅÍ)");
jobjBtn.put("type", "buttons");
jobjBtn.put("buttons", btns);
if(content.contains("½Åû")){
System.out.println("click A");
jobjText.put("text","¾È³çÇϼ¼¿ä °í°´´Ô! ½ÅûÇØÁּż °¨»çÇÕ´Ï´Ù. ¾Æ·¡ÀÇ URLÀ» Ŭ¸¯ÇÏ¿© ÀÛ¼ºÇØÁÖ¼¼¿ä.");
jobjmesBtn.put("label","½Åû¼ ÀÛ¼º");
jobjmesBtn.put("url"," http://www.abc.com");
jobjText.put("message_button",jobjmesBtn);
} else if(content.contains("³ªÀÇ ½Åû ³»¿ª")){
System.out.println("click B");
jobjText.put("text","¾È³çÇϼ¼¿ä °í°´´Ô! ½ÅûÇϽŠ³»¿ªÀº ¾Æ·¡ÀÇ URL¿¡¼ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù");
jobjmesBtn.put("label","°í°´¼¾ÅÍ ¹®ÀÇ");
jobjmesBtn.put("url"," http://www.abc.com");
jobjText.put("message_button",jobjmesBtn);
}
jobjRes.put("message", jobjText);
jobjRes.put("keyboard", jobjBtn);
System.out.println(jobjRes.toJSONString());
return jobjRes.toJSONString();
}
¸Þ½ÃÁö ÀÏ °æ¿ì ¿¹Á¦
// ¸Þ¼¼Áö
@RequestMapping(value = "/message", method = RequestMethod.POST, headers = "Accept=application/json")
@ResponseBody
public String message(@RequestBody JSONObject resObj) {
System.out.println("/message");
System.out.println(resObj.toJSONString());
String content;
content = (String) resObj.get("content");
JSONObject jobjRes = new JSONObject();
JSONObject jobjText = new JSONObject();
// »ç¿ëÀÚ ±¸Çö
if(content.contains("¾È³ç")){
jobjText.put("text","¾È³ç Çϼ¼¿ä");
} else if(content.contains("»ç¶û")){
jobjText.put("text","³ªµµ ³Ê¹«³Ê¹« »ç¶ûÇØ");
} else if(content.contains("ÀßÀÚ")){
jobjText.put("text","²Þ ¼Ó¿¡¼µµ ³Ê¸¦ º¼²¨¾ß");
} else if(content.contains("Á¹·Á")){
jobjText.put("text","Á¹¸®¸é ¾ð´É ¼¼¼öÇÏ·¯ °¡¿ë!");
} else if(content.contains("½Ã°£")||content.contains("¸î ½Ã")){
jobjText.put("text","¼½½Ã");
} else {
jobjText.put("text","Èì... ¾ÆÁ÷ ÁöÁ¤ÇØ µÎÁö ¾ÊÀº ¸»ÀΰÉ.");
}
jobjRes.put("message", jobjText);
System.out.println(jobjRes.toJSONString());
return jobjRes.toJSONString();
}
3. Ä£±¸ Ãß°¡/Â÷´Ü ¾Ë¸² API
ƯÁ¤ Ä«Ä«¿ÀÅå ÀÌ¿ëÀÚ°¡ Ç÷¯½º Ä£±¸¸¦ Ä£±¸·Î Ãß°¡Çϰųª Â÷´ÜÇÏ´Â °æ¿ì ¾Ë·ÁÁÖ´Â APIÀÔ´Ï´Ù.
Specification
- Method : POST / DELETE
- URL : http(s)://:your_server_url/friend
- Content-Type : application/json; charset=utf-8
4. äÆÃ¹æ ³ª°¡±â
»ç¿ëÀÚ°¡ äÆÃ¹æ ³ª°¡±â¸¦ ÇÏ¿© äÆùæÀ» ¸ñ·Ï¿¡¼ »èÁ¦ ÇÒ °æ¿ì ¾Ë·ÁÁÖ´Â APIÀÔ´Ï´Ù.
Specification
- Method : DELETE
- URL : http(s)://:your_server_url/chat_room/:user_key
- Content-Type : application/json; charset=utf-8
ÄÚµå ÀÛ¼ºÀ» ¿Ï·á ÇÏ¿´À¸¸é ½ÇÇà°¡´ÉÇÑ .jar ÆÄÀÏÀ» ¸¸µé¾î ¼¹ö¿¡ ¿Ã·Á ½ÇÇà ½ÃÇà½ÃÅ°°í ´Ù½Ã Ä«Ä«¿ÀÅå ÆÄÆ®³Ê ¼¾ÅÍ·Î À̵¿ÇÕ´Ï´Ù.
https://center-pf.kakao.com
¿ÞÂÊ »çÀÌµå ¹ÙÀÇ ½º¸¶Æ® äÆÃÀ» Ŭ¸¯Çϸé ÀÚµ¿ÀÀ´äÇü / API ÇüÀ» ¼±Åà ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿©±â¼ APIÇüÀ» ¼±ÅÃÇÕ´Ï´Ù.
Á¤»ç°¢ÀÇ ¿¬ÇÊ ¹öÆ°À» Ŭ¸¯Çϸé URLÀ» µî·Ï ÇÒ ¼ö Àִ âÀÌ ¶å´Ï´Ù.
¾Û À̸§°ú jar¸¦ ¿Ã·ÁµÐ ¼¹ö ÁÖ¼Ò¸¦ ÀÔ·ÂÇÏ°í API Å×½ºÆ®¸¦ ÇÏ¿© ÀÛµ¿ ¿©ºÎ¸¦ È®ÀÎ ÈÄ ÀúÀåÇϱ⸦ ´©¸£¸é ¿Ï·áµË´Ï´Ù.
¾Æ·¡´Â ½ÇÇà ȸé ÀÔ´Ï´Ù.
ÄÚµå ÀÛ¼ºÀ» ¿Ï·á ÇÏ¿´À¸¸é ½ÇÇà°¡´ÉÇÑ .jar ÆÄÀÏÀ» ¸¸µé¾î ¼¹ö¿¡ ¿Ã·Á ½ÇÇà ½ÃÇà½ÃÅ°°í ´Ù½Ã Ä«Ä«¿ÀÅå ÆÄÆ®³Ê ¼¾ÅÍ·Î À̵¿ÇÕ´Ï´Ù.
https://center-pf.kakao.com
¿ÞÂÊ »çÀÌµå ¹ÙÀÇ ½º¸¶Æ® äÆÃÀ» Ŭ¸¯Çϸé ÀÚµ¿ÀÀ´äÇü / API ÇüÀ» ¼±Åà ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿©±â¼ APIÇüÀ» ¼±ÅÃÇÕ´Ï´Ù.
Á¤»ç°¢ÀÇ ¿¬ÇÊ ¹öÆ°À» Ŭ¸¯Çϸé URLÀ» µî·Ï ÇÒ ¼ö Àִ âÀÌ ¶å´Ï´Ù.
¾Û À̸§°ú jar¸¦ ¿Ã·ÁµÐ ¼¹ö ÁÖ¼Ò¸¦ ÀÔ·ÂÇÏ°í API Å×½ºÆ®¸¦ ÇÏ¿© ÀÛµ¿ ¿©ºÎ¸¦ È®ÀÎ ÈÄ ÀúÀåÇϱ⸦ ´©¸£¸é ¿Ï·áµË´Ï´Ù.
¿¹Á¦ ¼Ò½º Àüü´Â https://github.com/annajinee/kakaoAutoReplyExample.git¿¡¼ º¸½Ç ¼ö ÀÖ½À´Ï´Ù.
ÀÌ Æ÷½ºÆÃÀº https://center-pf.kakao.com/term ¸¦ Âü°íÇÏ¿© ÀÛ¼ºÇÏ¿´À¸¸ç, ÀÌ ¿Ü ÀÚ¼¼ÇÑ API ±â¼ú¼´Â À§ ¸µÅ©¿¡¼ È®ÀÎ ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
+ ps. ¸çÄ¥ Àü ´Ù¸¥ ÇÁ·Î±×·¥ ±¸µ¿À» À§ÇØ ¼¹ö¿¡¼ ³»·È½À´Ï´Ù. ¤¾¤¾
´©±º°¡°¡ Å×½ºÆ® ÇϽóªºÁ¿ä Á¦´ë·Î ÀÛµ¿¾ÈµÈ´Ù°í °£°£È÷ ¸Þ½ÃÁö°¡ ¿À³×¿ä;
ÀÌ¹Ì ³»¸° »óŶó ´çºÐ°£ Å×½ºÆÃÀº ¾ÈµÉ ¼ö ÀÖ½À´Ï´Ù ^^;