ÃֽŠ°Ô½Ã±Û(JAVA)
2018.06.18 / 10:15

Ç÷¯½º Ä£±¸ ÀÚµ¿ÀÀ´ä API¸¦ »ç¿ëÇÏ¿© 꺿 ¸¸µé±â

¸®¾ó¸®
Ãßõ ¼ö 220

[Ä«Ä«¿ÀÅå 꺿] Ç÷¯½º Ä£±¸ ÀÚµ¿ÀÀ´ä 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 Å×½ºÆ®¸¦ ÇÏ¿© ÀÛµ¿ ¿©ºÎ¸¦ È®ÀÎ ÈÄ ÀúÀåÇϱ⸦ ´©¸£¸é ¿Ï·áµË´Ï´Ù. 





¾Æ·¡´Â ½ÇÇà È­¸é ÀÔ´Ï´Ù. 






¿¹Á¦ ¼Ò½º Àüü´Â https://github.com/annajinee/kakaoAutoReplyExample.git¿¡¼­ º¸½Ç ¼ö ÀÖ½À´Ï´Ù. 


ÀÌ Æ÷½ºÆÃÀº https://center-pf.kakao.com/term ¸¦ Âü°íÇÏ¿© ÀÛ¼ºÇÏ¿´À¸¸ç, ÀÌ ¿Ü ÀÚ¼¼ÇÑ API ±â¼ú¼­´Â À§ ¸µÅ©¿¡¼­ È®ÀÎ ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. 


+ ps. ¸çÄ¥ Àü ´Ù¸¥ ÇÁ·Î±×·¥ ±¸µ¿À» À§ÇØ ¼­¹ö¿¡¼­ ³»·È½À´Ï´Ù. ¤¾¤¾ 

´©±º°¡°¡ Å×½ºÆ® ÇϽóªºÁ¿ä Á¦´ë·Î ÀÛµ¿¾ÈµÈ´Ù°í °£°£È÷ ¸Þ½ÃÁö°¡ ¿À³×¿ä; 

ÀÌ¹Ì ³»¸° »óŶó ´çºÐ°£ Å×½ºÆÃÀº ¾ÈµÉ ¼ö ÀÖ½À´Ï´Ù ^^;