{"id":41302,"date":"2022-04-22T01:36:50","date_gmt":"2022-04-22T00:36:50","guid":{"rendered":"https:\/\/developer.kore.ai\/v10-1\/?p=41302"},"modified":"2022-04-22T01:37:18","modified_gmt":"2022-04-22T00:37:18","slug":"functions-for-the-botkit-sdk","status":"publish","type":"post","link":"https:\/\/developer.kore.ai\/v10-1\/docs\/bots\/sdks\/functions-for-the-botkit-sdk\/?lang=ko","title":{"rendered":"BotKit SDK\uc6a9 \ud568\uc218"},"content":{"rendered":"<section class=\"l-section wpb_row height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<p>Kore.ai BotKit SDK\ub294 \ubd07\uc744 \ub354 \uc798 \uc81c\uc5b4\ud558\uace0 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uac1c\uc120\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud568\uc218\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4.<br \/>\nBotKit SDK\ub294 \ub2e4\uc74c \ud568\uc218\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><a href=\"#sdk-sendusermessage\">sdk.sendUserMessage<\/a><\/li>\n<li><a href=\"#sdk-sendbotmessage\">sdk.sendBotMessage<\/a><\/li>\n<li><a href=\"#sdk-asyncresponse\">sdk.AsyncResponse<\/a><\/li>\n<li><a href=\"#sdk-respondtohook\">sdk.respondToHook<\/a><\/li>\n<li><a href=\"#sdk-savedata\">sdk.saveData<\/a><\/li>\n<li><a href=\"#sdk-registerbot\">sdk.registerBot<\/a><\/li>\n<li><a href=\"#sdk-getsaveddata\">sdk.getSavedData<\/a><\/li>\n<li><a href=\"#sdk-getmessages\">sdk.getMessages<\/a><\/li>\n<li><a href=\"#sdk-resetbot\">sdk.resetBot<\/a><\/li>\n<li><a href=\"#sdk-startagentsession\">sdk.startAgentSession<\/a><\/li>\n<li><a href=\"#sdk-clearagentsession\">sdk.clearAgentSession<\/a><\/li>\n<li><a href=\"#sdk-extendRequestId\">sdk.extendRequestId<\/a><\/li>\n<li><a href=\"#sdk-skipUserMessage\">sdk.skipUserMessage<\/a><\/li>\n<li><a href=\"#sdk-skipBotMessage\">sdk.skipBotMessage<\/a><\/li>\n<li><a href=\"#sdkcloseConversationSession\">sdk.closeConversationSession<\/a><\/li>\n<\/ul>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-sendusermessage\"><span class=\"ez-toc-section\" id=\"sdksendUserMessage\"><em>sdk.sendUserMessage<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \ubd07 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0c5\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n<code>on_bot_message<\/code> \uc774\ubca4\ud2b8 \ucf5c\ubc31 \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. <code>on_bot_message<\/code> \uc774\ubca4\ud2b8\ub294 \ubd07\uc774 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc751\ub2f5\uc744 \ubcf4\ub0bc \ub54c \ud638\ucd9c\ub429\ub2c8\ub2e4. SDK\uc5d0\uc11c, <code>message<\/code>\uc640 \uac19\uc740 \ud398\uc774\ub85c\ub4dc \ub370\uc774\ud130\ub294 \uc218\uc815\ud55c \ud6c4 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.sendUserMessage(payload, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &#8211; \ub2e4\uc74c\uacfc \uac19\uc740 JSON \uc751\ub2f5 \ud398\uc774\ub85c\ub4dc.\n<pre class=\"lang:default decode:true\"> {\r\n   \"message\":\"Spell-corrected message sent by bot to the user\",\r\n   \"originalMessage\":\"Original message sent by bot to the user\",\r\n   \"taskId\":\"Dialog task ID\",\r\n   \"nodeId\":\"Current node ID in the dialog flow\",\r\n   \"channel\":\"Channel name\",\r\n   \"context\": &lt;context object&gt;\r\n}\r\n<\/pre>\n<p>\uc704\uc758 \uba54\uc2dc\uc9c0 \ud398\uc774\ub85c\ub4dc\ub294 \uc0ac\uc6a9\uc790 \uc5b8\uc5b4\uac00 \uac10\uc9c0\ub418\uace0 \ucca0\uc790 \uc218\uc815\uc774 \uc644\ub8cc\ub41c \uacbd\uc6b0\uc785\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \uc5b8\uc5b4\uac00 \uac10\uc9c0\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0, \uba54\uc2dc\uc9c0 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4<\/p>\n<pre class=\"lang:default decode:true\"> {\r\n   \"message\":\"Original message sent by bot to the user\",\r\n   \"originalMessage\":\"Original message sent by bot to the user\",\r\n   \"languageInfo\": {\r\n        \"currentLanguage\": \"current user language\",\r\n        \"detectedLanguages\": [\r\n            \"language detected 1\",\r\n            \"language detected 2\"\r\n        ],\r\n        \"spellCorrectedInput\": [\r\n            \"language 1\": \"spell correction in language 1\",\r\n            \"language 2\": \"spell correction in language 2\"\r\n        ]\r\n     }\r\n}<\/pre>\n<\/li>\n<li><code>callback<\/code> &#8211; \uc5c5\ub370\uc774\ud2b8\ub41c \uba54\uc2dc\uc9c0\uc640 \ucee8\ud14d\uc2a4\ud2b8\ub97c \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ub2e4\uc2dc \uc804\uc1a1\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud558\ub294 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\ub2e4\uc74c \ucf54\ub4dc \uc870\uac01\uc740 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc624\ub958\ub97c \ubc18\ud658\ud558\ub294 <code>sdk.sendUserMessage<\/code> \ud568\uc218\uc758 \uc608\uc2dc\ub97c \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">return sdk.sendUserMessage(payload, function(err){\r\n    if(err)\r\n       console.log(\"err\", err);<\/pre>\n<p>\ub2e4\uc74c \ucf54\ub4dc \uc608\uc2dc\uc5d0\uc11c\ub294, \uc0ac\uc6a9\uc790\uac00 \ub77c\uc774\ube0c \uc0c1\ub2f4\uc0ac\ub85c \uc804\ud658\ub420 \ub54c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ucd08\uae30 \uba54\uc2dc\uc9c0\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">    formdata.welcome_message = \"\";\r\n    var visitorId = _.get(payload, 'channel.channelInfos.from');\r\n    if (!visitorId) {\r\n        visitorId = _.get(payload, 'channel.from');\r\n    }\r\n    visitorId = payload.context.session.UserContext._id;\r\n    userDataMap[visitorId] = payload;\r\n    data.message = \"An Agent will be assigned to you shortly!!!\";\r\n    sdk.sendUserMessage(payload, callback);<\/pre>\n<p>\ub2e4\uc74c \ucf54\ub4dc \uc608\uc2dc\uc5d0\uc11c\ub294, <code>sdk.sendUserMessage<\/code> \ud568\uc218\uc640 \ud568\uaed8 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubcf4\ub0b4\ub294 \uba54\uc2dc\uc9c0\ub294 \ud1b5\ud654 \ubcc0\ud658\uc744 \uc704\ud574 \uc0ac\uc6a9\uc790 \uc120\ud0dd\uc5d0 \uae30\ubc18\ud569\ub2c8\ub2e4. <code>isTemplate<\/code> \ub9e4\uac1c\ubcc0\uc218\ub294 \uc0ac\uc6a9\uc790 \uc815\uc758 \ud615\uc2dd \ub610\ub294 \uae30\ubcf8 \uba54\uc2dc\uc9c0 \ud615\uc2dd \uc911 \uc5b4\ub290 \uac83\uc744 \uc0ac\uc6a9\ud560\uc9c0 \uc5ec\ubd80\ub97c \uacb0\uc815\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">    on_user_message : function(requestId, payload, callback) {\r\n\t\tmessage = payload.message.toLowerCase();console.log(\"MESSAGE\",payload.message);\r\n\t\t\/\/payload .context.session.BotContext.currency = \"koko\";\r\n\t\tif ( message == \"Yes\" || message == \"yes\")\r\n\t\t{\r\n\t\t\tvar overrideMessagePayload = {\r\n\t\t\t\tbody : \" Enter the currency code for which the amount will be converted\",\r\n\t\t\t\tisTemplate :false\r\n\t\t\t};\r\n\t\t\tdata.overrideMessagePayload = overrideMessagePayload;\r\n\t\t\tcurrCode = true;\r\n\t\t\treturn sdk.sendUserMessage(payload);\r\n\t\t}\r\n\t\telse if ( message == \"No\" || message == \"no\" )\r\n\t\t{\r\n\t\t\t var overrideMessagePayload = {\r\n\t\t\t\tbody : \"Ok, Enter the country name so that I can fetch it on your behalf\",\r\n\t\t\t\tisTemplate :false\r\n\t\t\t};\r\n\t\t\tpayload.overrideMessagePayload = overrideMessagePayload;\r\n\t\t\tcountryname = true;\r\n\t\t\treturn sdk.sendUserMessage(payload);<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-sendbotmessage\"><span class=\"ez-toc-section\" id=\"sdksendBotMessage\"><em>sdk.sendBotMessage<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 \ubd07\uc5d0\uac8c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0c5\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n<code>on_user_message<\/code> \uc774\ubca4\ud2b8 \ucf5c\ubc31 \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. <code>on_user_message<\/code> \uc774\ubca4\ud2b8\ub294 \uc0ac\uc6a9\uc790\uac00 \ubd07\uc5d0\uac8c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0bc \ub54c \ud638\ucd9c\ub429\ub2c8\ub2e4. SDK\uc5d0\uc11c, <code>message<\/code>\uc640 \uac19\uc740 \ud398\uc774\ub85c\ub4dc \ub370\uc774\ud130\ub294 \uc218\uc815\ud55c \ud6c4 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\uc0ac\uc6a9\uc790 \uba54\uc2dc\uc9c0\uc5d0 \ub300\ud574 \uc720\ud6a8\uc131 \uac80\uc0ac\uac00 \uc218\ud589\ub429\ub2c8\ub2e4. \uba54\uc2dc\uc9c0\ub294 3,000\uc790\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc73c\uba70 \uac01 \ub2e8\uc5b4\ub294 1,200\uc790\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.sendBotMessage(payload, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &#8211; \ub2e4\uc74c\uacfc \uac19\uc740 JSON \uc751\ub2f5 \ud398\uc774\ub85c\ub4dc.\n<pre class=\"lang:default decode:true\">{ \"message\":\"Message sent by the user\", \"channel\":\"Channel name\", \"context\": &lt;context object&gt; }<\/pre>\n<\/li>\n<li><code>callback<\/code> &#8211; \uc5c5\ub370\uc774\ud2b8\ub41c \uba54\uc2dc\uc9c0\uc640 \ucee8\ud14d\uc2a4\ud2b8\ub97c \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ub2e4\uc2dc \uc804\uc1a1\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud558\ub294 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\ub2e4\uc74c \ucf54\ub4dc \uc870\uac01\uc740 \ubd07\uc5d0\uac8c \uc0ac\uc6a9\uc790 \uc751\ub2f5\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\"> {\r\n   \"message\":\"Message sent by the user\",\r\n   \"channel\":\"Channel name\",\r\n   \"context\": &lt;context object&gt;\r\n}\r\n<\/pre>\n<p>\uc774<code>on_user_message<\/code> \ud568\uc218\uc5d0\uc11c, \uba54\uc2dc\uc9c0\ub294 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc9c1\uc811 \ubc18\ud658\ub418\uba70, \ub77c\uc774\ube0c \uc0c1\ub2f4\uc0ac\ub85c \uc804\ud658\ub418\uc9c0 \uc54a\uc73c\uba74, \ubd07\uc73c\ub85c \ubcf4\ub0c5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">    on_user_message: function(requestId, payload, callback) {\r\n        sdk.sendBotMessage(payload, callback);\r\n    },<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">    on_user_message: function(requestId, payload, callback) {\r\n        if (payload.message === \"Hi\") {\r\n            payload.message = \"Hello\";\r\n            \/\/Sends back 'Hello' to user.\r\n            return sdk.sendUserMessage(payload, callback);\r\n        } else if (!payload.agent_transfer) {\r\n            \/\/Forward the message to bot\r\n            return sdk.sendBotMessage(payload, callback);\r\n        } else {\r\n            payload.message = \"Agent Message\";\r\n            return sdk.sendUserMessage(payload, callback);\r\n        }\r\n    };<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-asyncresponse\"><span class=\"ez-toc-section\" id=\"sdkAsyncResponse\"><em>sdk.AsyncResponse<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ubcf4\ub0bc \ube44\ub3d9\uae30\uc2dd \uc751\ub2f5\uc744 \uc900\ube44\ud569\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\ub300\ud654 \uc791\uc5c5 \uc2e4\ud589 \ud750\ub984\uc774 webhook \ub178\ub4dc\uc5d0 \ub3c4\ub2ec\ud558\ub294 \uacbd\uc6b0, \ubd07 \ud50c\ub7ab\ud3fc\uc740 SDK\uc5d0 \ub300\ud55c <code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. <code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc740 \ub450 \uac00\uc9c0 \uc720\ud615\uc758 \uc751\ub2f5\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>\ub3d9\uae30\uc2dd \uc751\ub2f5<\/strong> &#8211; \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc774 \ud5c8\uc6a9 \uac00\ub2a5\ud55c \uc2dc\uac04 \ub0b4\uc5d0 \uc644\ub8cc\ub420 \uc218 \uc788\ub294 \uacbd\uc6b0, SDK\ub294 <code>callback(null, payload)<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uae30\uc801\uc73c\ub85c \uc751\ub2f5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\ube44\ub3d9\uae30\uc2dd \uc751\ub2f5<\/strong> &#8211; \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc5d0 \ub354 \ub9ce\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud55c \uacbd\uc6b0, SDK\ub294 <code>callback(null, new sdk.AsyncResponse())<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud558\uace0 HTTP \ucf54\ub4dc 202\ub97c \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \uc804\uc1a1\ud558\uc5ec \ube44\ub3d9\uae30\uc2dd \uc751\ub2f5\uc744 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc751\ub2f5\uc774 \uc900\ube44\ub418\uba74, SDK\ub294 <code>sdk.respondToHook(payload)<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">sdk.AsyncResponse()\r\ncallback(null, new sdk.AsyncResponse())<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><br \/>\n\uc5c6\uc74c.<br \/>\n<strong>\uc608\uc2dc<\/strong><br \/>\n\uc774 <code>on_webhook<\/code> \ud568\uc218\uc758 \uc608\uc2dc\uc5d0\uc11c\ub294, \ubd07\uc774 \uc0ac\uc6a9\uc790\uac00 \uc120\ud0dd\ud55c \ud0dd\uc2dc\uc758 \uc608\uc57d\uc744 \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \ub300\uae30\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">on_webhook : function(requestId, payload, componentName, callback) {\r\n        var context = payload.context;\r\n        if (componentName === 'FindNearbyCabs') {\r\n            findCabs()\r\n                .then(function(cabList) {\r\n                    context.cabList = cabList;\r\n                    callback(null, data);\r\n                });\r\n        } else if (componentName === 'BookTheCab') {\r\n            sdk.saveData(requestId, payload)\r\n                .then(function() {\r\n                    bookTheCab(requestId, context.entities.selectedCab.id, context.session.UserSession.location, context.entities.whereTo);\r\n                    callback(null, new sdk.AsyncResponse());\r\n                });\r\n        }\r\n    }<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-respondtohook\"><span class=\"ez-toc-section\" id=\"sdkrespondToHook\"><em>sdk.respondToHook<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c webhook \uc751\ub2f5\uc744 \ubcf4\ub0c5\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\ub300\ud654 \uc791\uc5c5 \uc2e4\ud589 \ud750\ub984\uc774 webhook \ub178\ub4dc\uc5d0 \ub3c4\ub2ec\ud558\ub294 \uacbd\uc6b0, \ubd07 \ud50c\ub7ab\ud3fc\uc740 SDK\uc5d0 \ub300\ud55c <code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc744 \uc218\ud589\ud569\ub2c8\ub2e4. <code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc740 \ub450 \uac00\uc9c0 \uc720\ud615\uc758 \uc751\ub2f5\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>\ub3d9\uae30\uc2dd \uc751\ub2f5<\/strong> &#8211; \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc774 \ud5c8\uc6a9 \uac00\ub2a5\ud55c \uc2dc\uac04 \ub0b4\uc5d0 \uc644\ub8cc\ub420 \uc218 \uc788\ub294 \uacbd\uc6b0, SDK\ub294 <code>callback(null, payload)<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uae30\uc801\uc73c\ub85c \uc751\ub2f5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\ube44\ub3d9\uae30\uc2dd \uc751\ub2f5<\/strong> &#8211; \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc5d0 \ub354 \ub9ce\uc740 \uc2dc\uac04\uc774 \ud544\uc694\ud55c \uacbd\uc6b0, SDK\ub294 <code>callback(null, new sdk.AsyncResponse())<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud558\uace0 HTTP \ucf54\ub4dc 202\ub97c \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \uc804\uc1a1\ud558\uc5ec \ube44\ub3d9\uae30\uc2dd \uc751\ub2f5\uc744 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ubcf4\ub0bc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc751\ub2f5\uc774 \uc900\ube44\ub418\uba74, SDK\ub294 <code>sdk.respondToHook(payload)<\/code> \ud568\uc218\ub97c \ud638\ucd9c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p><strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.respondToHook(payload)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &#8211; \ub2e4\uc74c\uacfc \uac19\uc740 JSON \uc751\ub2f5 \ud398\uc774\ub85c\ub4dc.\n<pre class=\"lang:default decode:true\"> {\r\n   \"taskId\":\"Dialog task ID\",\r\n   \"nodeId\":\"Current node ID in the dialog flow\",\r\n   \"channel\":\"Channel name\",\r\n   \"context\": &lt;context object&gt;\r\n}<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\ub2e4\uc74c \ucf54\ub4dc \uc870\uac01\uc5d0\uc11c\ub294, \ud0dd\uc2dc \uc608\uc57d\uc774 \uc2e4\ud328\ud558\uba74, \uc774\ubca4\ud2b8\uac00 \ub3d9\uae30\uc2dd\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. \ubc18\ub300\ub85c, \ud0dd\uc2dc \uc608\uc57d\uc740 webhook\uc744 \ud1b5\ud574 \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">function onBookingFailure(requestId) {\r\n    sdk.getSavedData(requestId)\r\n        .then(function(payload) {\r\n            payload.context.successful = false;\r\n            sdk.respondToHook(payload);\r\n        });\r\n}\r\n\/\/call cabBookingService with the requestId. This service is expected to respond asynchronously.\r\n\/\/'requestId' must be passed along all asynchronous flows, to allow the BotKit to respond\r\n\/\/ back to the hook once the async process is completed.\r\nfunction bookTheCab(requestId, cabId, userLoc, destination) {\r\n    cabBookingService(requestId, cabId, userLoc, destination, {\r\n        on_success: onBookingSuccess,\r\n        on_failure: onBookingFailure\r\n    });\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-registerbot\"><span class=\"ez-toc-section\" id=\"sdkregisterBot\"><em>sdk.registerBot<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 \ubd07\uc744 \ub4f1\ub85d\ud558\uace0 \uc2e4\ud589 \uc2dc \ucf5c\ubc31 \uc774\ubca4\ud2b8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\nBotKit SDK\ub294 \uac01 \ubd07\uc5d0 \ub300\ud574 \ud558\ub098\uc758 <span style=\"color: #0000ff;\">Node.js<\/span> \ud30c\uc77c\uc744 \uc0dd\uc131\ud558\ub3c4\ub85d \uc124\uacc4\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud574\ub2f9 \ubd07\uc758 \ubaa8\ub4e0 \ucf5c\ubc31\uc740 <span style=\"color: #0000ff;\">Node.js<\/span> \ud30c\uc77c\uc5d0\uc11c \uc720\uc9c0 \uad00\ub9ac\ub429\ub2c8\ub2e4. \ubd07\uc744 \ub4f1\ub85d\ud558\ub824\uba74, \ub2e4\uc74c \ubcc0\uc218\uc640 \ud568\uc218\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ub0b4\ubcf4\ub0b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true \">module.exports = {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;botId : \u201cxxxxx\u201d,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;botName : \u201c\u201cxxxxx\u201d,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_user_message : function(requestId, data, callback) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_bot_message : function(requestId, data, componentName, callback) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_webhook : function(requestId, data, componentName, callback) {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\r\n}<\/pre>\n<p><strong>\uad6c\ubb38:<\/strong><br \/>\n\ubd07\uc744 \ub4f1\ub85d\ud558\ub824\uba74, \ub2e4\uc74c\uc744 \ud638\ucd9c\ud569\ub2c8\ub2e4<\/p>\n<pre class=\"lang:default decode:true\">sdk.registerBot(require('.\/&lt;Bot Name&gt;.js'));<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><span style=\"font-family: monospace, serif;\">\ub4f1\ub85d\ud560 \ubd07\uc758 Node.js \ud30c\uc77c<\/span><\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\ub2e4\uc74c \ucf54\ub4dc \uc608\uc2dc\uc5d0\uc11c\ub294 <code>botId<\/code> \ubc0f <code>botName<\/code>\ub97c \uc0ac\uc6a9\ud55c \ubd07\uc758 \ub4f1\ub85d\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">module.exports = {\r\n    botId : botId,\r\n    botName : botName,\r\n    on_user_message : function(requestId, payload, callback) {\r\n        debug('on_user_message');\r\n        onUserMessage(requestId, payload, callback);\r\n    },\r\n    on_bot_message : function(requestId, payload, callback) {\r\n        debug('on_bot_message');\r\n        onBotMessage(requestId, payload, callback);\r\n    },\r\n    on_agent_transfer : function(requestId, payload, callback) { console.log(\"on agent transfer event\");\r\n        debug('on_webhook');\r\n        onAgentTransfer(requestId, payload, callback);\r\n    },\r\n    gethistory: gethistory\r\n};<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-savedata\"><span class=\"ez-toc-section\" id=\"sdksaveData\"><em>sdk.saveData<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 <em>Redis<\/em> \uc778\uba54\ubaa8\ub9ac \ub370\uc774\ud130 \uad6c\uc870 \uc800\uc7a5\uc18c\uc5d0 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n<span style=\"font-weight: 400;\"><code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc5d0 \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \uc751\ub2f5\ud558\ub294 \uacbd\uc6b0, <code>requestId<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec <em>Redis<\/em> \uc800\uc7a5\uc18c\uc5d0 \ud398\uc774\ub85c\ub4dc\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc744 \uc644\ub8cc\ud55c \ud6c4, webhook \uc751\ub2f5\uc744 \uc900\ube44\ud558\ub294 \ub3d9\uc548\u00a0<code>sdk.getSavedData(requestId)function<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc77d\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.saveData(requestId, payload)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestId<\/code> &#8211; \ube44\ub3d9\uae30\uc2dd\u00a0<code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc758 <code>requestId<\/code>.<\/li>\n<li><code>payload<\/code> &#8211; \ub2e4\uc74c\uacfc \uac19\uc740 JSON \uc751\ub2f5 \ud398\uc774\ub85c\ub4dc.\n<pre class=\"lang:default decode:true\"> {\r\n   \"taskId\":\"Dialog task ID\",\r\n   \"nodeId\":\"Current node ID in the dialog flow\",\r\n   \"channel\":\"Channel name\",\r\n   \"context\": &lt;context object&gt;\r\n}<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\uc774\u00a0<code>on_webhook<\/code> \uc774\ubca4\ud2b8\uc5d0\uc11c\ub294, \ud0dd\uc2dc \uc608\uc57d \uc694\uccad\uc774 <em>Redis<\/em> \uc2a4\ud1a0\uc5b4\uc5d0 \uc800\uc7a5\ub418\uace0 \uc608\uc57d\uc758 \ube44\ub3d9\uae30\uc2dd \ucc98\ub9ac\uac00 \uc2dc\uc791\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">on_webhook : function(requestId, payload, componentId, callback) {\r\n        var context = data.context;\r\n        if (componentId === 'FindNearbyCabs') {\r\n            findCabs()\r\n                .then(function(cabList) {\r\n                    context.cabList = cabList;\r\n                    callback(null, payload);\r\n                });\r\n        } else if (componentName === 'BookTheCab') {\r\n            sdk.saveData(requestId, payload)\r\n                .then(function() {\r\n                    \/\/Assuming the cab booking was successful. A mock service to book the cab can be called here.\r\n                    payload.successful = 'true';\r\n                    payload.bookedCab = context.entities.selectedCab || {};\r\n                    callback(null, payload);\r\n                });\r\n        }\r\n    }<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-getsaveddata\"><span class=\"ez-toc-section\" id=\"sdkgetSavedData\"><em>sdk.getSavedData<\/em><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">\uc774 \ud568\uc218\ub294 <em>Redis<\/em> \uc778\uba54\ubaa8\ub9ac \ub370\uc774\ud130 \uad6c\uc870 \uc800\uc7a5\uc18c\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc77d\uc2b5\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n<span style=\"font-weight: 400;\"><code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc5d0 \ube44\ub3d9\uae30\uc2dd\uc73c\ub85c \uc751\ub2f5\ud558\ub294 \uacbd\uc6b0, <code>requestId<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec <em>Redis<\/em> \uc800\uc7a5\uc18c\uc5d0 \ud398\uc774\ub85c\ub4dc\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uc2e4\ud589\uc744 \uc644\ub8cc\ud55c \ud6c4, webhook \uc751\ub2f5\uc744 \uc900\ube44\ud558\ub294 \ub3d9\uc548\u00a0<code>sdk.getSavedData(requestId)function<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \uc77d\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.getSavedData(requestId, payload)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestId<\/code> &#8211; \ube44\ub3d9\uae30\uc2dd\u00a0<code>on_webhook<\/code> \uc774\ubca4\ud2b8 \ud638\ucd9c\uc758 <code>requestId<\/code>.<\/li>\n<li><code>payload<\/code> &#8211; \ub2e4\uc74c\uacfc \uac19\uc740 JSON \uc751\ub2f5 \ud398\uc774\ub85c\ub4dc.\n<pre class=\"lang:default decode:true\"> {\r\n   \"taskId\":\"Dialog task ID\",\r\n   \"nodeId\":\"Current node ID in the dialog flow\",\r\n   \"channel\":\"Channel name\",\r\n   \"context\": &lt;context object&gt;\r\n}<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\uc608\uc2dc<\/strong><br \/>\n\uc774 \ucf54\ub4dc \uc608\uc2dc\uc5d0\uc11c, <code>sdk.getSavedData<\/code> \ud568\uc218\ub294 \uc120\ud0dd\ud55c \ud0dd\uc2dc\uc640 \uc608\uc57d \uc815\ubcf4\ub97c \ubc18\ud658\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\uac70\ub098, \ube44\ub3d9\uae30\uc2dd \uc608\uc57d webhook \uc774\ubca4\ud2b8\uac00 \uc2e4\ud328\ud558\ub294 \uacbd\uc6b0, \uc120\ud0dd\ud55c \uc608\uc57d\uc5d0 \ub300\ud55c \uc2e4\ud328 \uba54\uc2dc\uc9c0\ub97c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubcf4\ub0c5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">\/*\/\r\n * Responds to the webhook asynchronously with the success flag.\r\n *\/\r\nfunction onBookingSuccess(requestId) {\r\n    sdk.getSavedData(requestId)\r\n        .then(function(payload) {\r\n            payload.context.bookedCab = payload.entities.selectedCab;\r\n            payload.context.successful = true;\r\n            sdk.respondToHook(payload);\r\n        });\r\n}\r\nfunction onBookingFailure(requestId) {\r\n    sdk.getSavedData(requestId)\r\n        .then(function(payload) {\r\n            payload.context.successful = false;\r\n            sdk.respondToHook(payload);\r\n        });\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-getmessages\"><span class=\"ez-toc-section\" id=\"sdkgetMessages\"><em>sdk.getMessages<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \ubd07\uacfc \uc0ac\uc6a9\uc790 \uac04\uc5d0 \uc774\uc804 \ub300\ud654 \uae30\ub85d\uc744 \uac00\uc838\uc62c \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uacf5\uc6a9 API \ub300\ud654 \uae30\ub85d(<a href=\"\/?p=21333\">\ub300\ud654 \uae30\ub85d API\ub294 \uc5ec\uae30\ub97c \ucc38\uc870\ud558\uc138\uc694<\/a>)<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\ubd07 \uacfc \uc0ac\uc6a9\uc790 \uac04\uc5d0 \ub300\ud654\ud615 \uba54\uc2dc\uc9c0\ub97c \uc2dc\uac04 \uc5ed\uc21c\uc73c\ub85c \uac00\uc838\uc635\ub2c8\ub2e4. \uc774 API\ub294 \ud398\uc774\uc9d5\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4. \uc624\ud504\uc14b\/\uac74\ub108\ub6f0\uae30 \ubc0f \ud55c \ubc88\uc5d0 \ud2b9\uc815 \uc218\uc758 \uba54\uc2dc\uc9c0\ub97c \uac00\uc838\uc62c \uc218 \uc788\ub3c4\ub85d \uc81c\ud55c\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.getMessages(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n<pre class=\"lang:default decode:true\">requestData.baseUrl + '\/getMessages?' + \"skip=\" + offset + \"&amp;limit=\" + limit + \"&amp;userId=\" + userId+\"&amp;channelType\"=channel-type<\/pre>\n<p>\uc704\uce58<\/p>\n<ul>\n<li><code>stream_id<\/code> &#8211; \ubd07 \ube4c\ub354\uc758 \uad6c\uc131 \uc124\uc815 \ud398\uc774\uc9c0\uc5d0\uc11c \uc811\uadfc\ud560 \uc218 \uc788\ub294 \ubd07 ID<\/li>\n<li><code>user_id<\/code> &#8211; \ub300\ud654 \uae30\ub85d\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub294 \uc0ac\uc6a9\uc790 ID<\/li>\n<li><code>skip<\/code> &#8211; \uac74\ub108\ub6f8 \uba54\uc2dc\uc9c0 \uc218\uc785\ub2c8\ub2e4.<\/li>\n<li><code>limit<\/code> &#8211; \uac01 \ud398\uc774\uc9c0\uc5d0 \ud45c\uc2dc\ud560 \uba54\uc2dc\uc9c0 \uc218.<\/li>\n<li><code>channelType<\/code> &#8211; \uc635\uc158, \ub300\ud654\uac00 \ud638\uc2a4\ud305 \ub41c \ucc44\ub110.<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> &#8211; \uba54\uc2dc\uc9c0 \uae30\ub85d\uc744 \ubd07 \ud50c\ub7ab\ud3fc\uc73c\ub85c \ub2e4\uc2dc \uc804\uc1a1\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud558\ub294 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/this example is from the LiveChat.js\r\n\/\/where the gethistory() function uses getMessage() to extract the messages\r\n    var userId = req.query.userId;\r\n    var data = userDataMap[userId];\r\n    if(data) {\r\n        data.limit = 100;\r\n        return sdk.getMessages(data, function(err, resp){\r\n            if(err){\r\n                res.status(400);\r\n                return res.json(err);\r\n            }\r\n            var messages = resp.messages;\r\n            res.status(200);\r\n            return res.json(messages);\r\n        });<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-clearagentsession\"><span class=\"ez-toc-section\" id=\"sdkclearAgentSession\"><em>sdk.clearAgentSession<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \uc0c1\ub2f4\uc0ac \uc138\uc158\uc744 \uc9c0\uc6b0\uace0 \ubd07\uacfc\uc758 \ub300\ud654\ub97c \ub2e4\uc2dc \uc124\uc815\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc0c1\ub2f4\uc0ac \uc804\ud658 \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c, \uc0c1\ub2f4\uc0ac\uac00 \uc0ac\uc6a9\uc790\uc640\uc758 \ub300\ud654\ub97c \uc885\ub8cc\ud558\uba74, \ud0c0\uc0ac \uacf5\uae09\uc790\ub85c\ubd80\ud130 <code>chat_closed<\/code> \uc774\ubca4\ud2b8\uac00 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacbd\uc6b0, \uc774 \ud568\uc218\ub294 \ubd07\uacfc \ub300\ud654\ub97c \ub2e4\uc2dc \uc124\uc815\ud558\uae30 \uc704\ud574 \ud638\ucd9c\ub429\ub2c8\ub2e4<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.clearAgentSession(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n<pre class=\"lang:default decode:true\">requestData.baseUrl+ '\/clearAgentSession\/' + requestData.requestId<\/pre>\n<p>\uc704\uce58<\/p>\n<ul>\n<li><code>requestId<\/code> &#8211; \uc138\uc158 id<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/this example is from the LiveChat.js\r\n\/\/where the function is invoked to clear agent session when the chat is closed by the user\r\n    if (event.type===\"chat_closed\"){\r\n       console.log('chat_closed');\r\n       delete userResponseDataMap[visitorId];\r\n       delete _map[visitorId];\r\n       sdk.clearAgentSession(data);\r\n    }\r\n<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-startagentsession\"><span class=\"ez-toc-section\" id=\"sdkstartAgentSession\"><em>sdk.startAgentSession<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \uc0c1\ub2f4\uc0ac \uc138\uc158\uc774 \uc2dc\uc791\ub418\uc5c8\uc74c\uc744 \ud50c\ub7ab\ud3fc\uc5d0 \uc54c\ub9ac\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc774 \ud568\uc218\ub294 \uc0c1\ub2f4\uc0ac \uc804\ud658\uc774 \uc2dc\uc791\ub418\uace0 \uc0c1\ub2f4\uc0ac \uc804\ud658\uc774 \uc9c4\ud589 \uc911\uc784\uc744 \ubd07\uc5d0\uac8c \uc54c\ub9ac\ub824\ub294 \uacbd\uc6b0\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \ub2e4\uc74c\uc73c\ub85c, \uc608\ub97c \ub4e4\uc5b4, onMessages()\uc5d0\uc11c BotKit\uc774 \ubc1b\uc740 \ub370\uc774\ud130 \uac1c\uccb4\ub294 \uc0c1\ub2f4\uc0ac \uc138\uc158\uc744 true\ub85c \uac00\uc9d1\ub2c8\ub2e4. \ub610\ud55c, <em>sdk.clearAgentSession<\/em>\uc774 BotKit\uc5d0\uc11c \ud638\ucd9c\ub418\uba74, \ud50c\ub7ab\ud3fc\uc740 \uc0c1\ub2f4\uc0ac \uc138\uc158\uc774 \uc644\ub8cc\ub418\uc5c8\uc74c\uc744 \uc54c\ub9ac\uace0 BotKit\uc774 \ubc1b\uc740 \ub370\uc774\ud130 \uac1c\uccb4\ub294 \uc0c1\ub2f4\uc0ac \uc138\uc158\uc744 false\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.startAgentSession(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n<pre class=\"lang:default decode:true\">requestData.baseUrl + '\/startAgentSession\/' + requestData.requestId<\/pre>\n<p>\uc704\uce58<\/p>\n<ul>\n<li><code>requestId<\/code> &#8211; \uc138\uc158 id<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/The following function call is used in the LiveChat.js for connectToAgent() function\r\n\/\/Invoking the startAgentSession before invoking the initChat function will ensure that\r\n\/\/ the Bot is aware of the Agent transfer in progress\r\nfunction connectToAgent(requestId, data, cb){\r\n    var formdata = {};\r\n    formdata.licence_id = config.liveagentlicense;\r\n    formdata.welcome_message = \"\";\r\n    var visitorId = _.get(data, 'channel.channelInfos.from');\r\n    if(!visitorId){\r\n       visitorId = _.get(data, 'channel.from');\r\n      }\r\n    userDataMap[visitorId] = data;\r\n     data.message=\"An Agent will be assigned to you shortly!!!\";\r\n     sdk.sendUserMessage(data, cb);\r\n     sdk.startAgentSession(data, cb);\r\n    formdata.welcome_message = \"Link for user Chat history with bot: \"+ config.app.url +\"\/history\/index.html?visitorId=\" + visitorId;\r\n    return api.initChat(visitorId, formdata)\r\n     .then(function(res){\r\n     _map[visitorId] = {\r\n     secured_session_id: res.secured_session_id,\r\n     visitorId: visitorId,\r\n     last_message_id: 0\r\n    };\r\n   });\r\n }<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-resetbot\"><span class=\"ez-toc-section\" id=\"sdkresetBot\"><em>sdk.resetBot<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \ucee8\ud14d\uc2a4\ud2b8\ub97c \uc9c0\uc6b0\uace0 \ud604\uc7ac \uc138\uc158\uc744 \ubb35\uc2dc\uc801\uc73c\ub85c \uc0ad\uc81c\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc2e4\ud589 \uc2dc, \ub300\ud654 \uc2e4\ud589 \uc911\uc5d0, \uc0ac\uc6a9\uc790 \uc785\ub825\uc774 &#8220;reset bot&#8221; \uba85\ub839\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubd07\uc744 \uc9c0\uc6b0\ub824\ub294 \uacbd\uc6b0. \ucee8\ud14d\uc2a4\ud2b8\uac00 \uc9c0\uc6cc\uc9c0\uace0 \uc791\uc5c5\uc774 \uc0ad\uc81c\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.resetBot(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.\n<pre class=\"lang:default decode:true\">requestData.resetBotUrl<\/pre>\n<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">on_user_message : function(requestId, data, callback) {\r\n     if (data.message===\"reset bot\"){\r\n\tsdk.resetBot(data, callback);\r\n      }<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-extendRequestId\"><span class=\"ez-toc-section\" id=\"sdkextendRequestId\"><em>sdk.extendRequestId<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 botKit\uc774 \ud50c\ub7ab\ud3fc\uc73c\ub85c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub294 \ub370 \ud560\ub2f9\ub41c \uc2dc\uac04\uc744 \uc5f0\uc7a5\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc774 \ud568\uc218\ub294 \uc0c1\ub2f4\uc0ac \uc804\ud658\uc774 \uc2dc\uc791\ub418\uace0 \uc5bc\ub9c8 \ud6c4 \ud50c\ub7ab\ud3fc\uc774 \uba54\uc2dc\uc9c0\ub97c \uc218\uc2e0\ud558\uc9c0 \ubabb\ud560 \ub54c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc774\uac83\uc740 botKit\uc774 \ud50c\ub7ab\ud3fc\uc73c\ub85c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub294 \ub370 \ud560\ub2f9\ub41c \uc2dc\uac04\uc744 \uc5f0\uc7a5\ud558\uc5ec \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.extendRequestId(requestData, callback)<\/pre>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">function onBotMessage(requestId, data, cb) {\r\n    console.log(\"bot message\",JSON.stringify(data));\r\n    var visitorId = _.get(data, 'channel.from');\r\n     event =  schedular.scheduleJob(\"*\/4 * * * *\", function() {\r\n                pub.get(visitorId+':data',function(err,reply){\r\n                    if(err) throw err;\r\n                    sdk.extendRequestId(data,cb);\r\n                })\r\n    });\r\n\t}<\/pre>\n<pre> on_user_message: function(requestId, data, callback) { \r\n        var visitorId = _.get(data, 'channel.from');\r\n        registerEvent(visitorId, data);\r\n        if(event){\r\n            event.cancel();\r\n        }else{\r\n            console.log(new Date(),'event not found');\r\n        }\r\n        event =  schedular.scheduleJob(\"*\/4 * * * *\", function() {\r\n            pub.get(visitorId+':data',function(err,reply){\r\n                if(err) throw err;\r\n                    sdk.extendRequestId(data,callback);\r\n            })\r\n        });<\/pre>\n<p>\ucc38\uace0: 15\ubd84 \ub3d9\uc548 \ud65c\uc131 \ub300\ud654\uac00 \uc5c6\ub294 \uacbd\uc6b0 \uc2dc\uac04\uc744 \uc5f0\uc7a5\ud558\ub294 \uac83\uc740 \ud6a8\uacfc\uc801\uc774\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc138\uc158\uc774 \ube44\ud65c\uc131\ud654\ub418\uba74 \ubd88\ubb38\ud558\uace0 agent_transfer \ubaa8\ub4dc\uac00 \uc7ac\uc124\uc815\ub429\ub2c8\ub2e4.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-skipBotMessage\"><span class=\"ez-toc-section\" id=\"sdkskipBotMessage\"><em>sdk.skipBotMessage<\/em><\/span><\/h2>\n<p>\uc774 \uae30\ub2a5\uc740 \ud2b9\uc815 \ube44\uc988\ub2c8\uc2a4 \uc0ac\uc6a9 \uc0ac\ub840\uc758 \ud2b9\uc815 \uba54\uc2dc\uc9c0\ub97c \uac74\ub108\ub6f8 \ub54c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc2e4\ud589 \uc2dc, \ub300\ud654 \uc2e4\ud589 \uc911\uc5d0, BotKit\uc774 \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\uace0 \uacc4\uc18d \uc9c4\ud589\ud558\uae30\ub97c \uae30\ub2e4\ub9ac\ub294 \ub300\uc2e0, \uc2dc\uc2a4\ud15c\uc740 \ub2e4\uc74c \ub2e8\uacc4\ub85c \uc9c4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.skipBotMessage(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &#8211; \ub370\uc774\ud130<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === \"skipBotMessage\"){ \/\/ condition for skipping a Bot message\r\n\tsdk.skipBotMessage(data, cb);\r\n}<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-skipUserMessage\"><span class=\"ez-toc-section\" id=\"sdkskipUserMessage\"><em>sdk.skipUserMessage<\/em><\/span><\/h2>\n<p>\uc774 \uae30\ub2a5\uc740 \ud2b9\uc815 \ube44\uc988\ub2c8\uc2a4 \uc0ac\uc6a9 \uc0ac\ub840\uc758 \ud2b9\uc815 \uba54\uc2dc\uc9c0\ub97c \uac74\ub108\ub6f8 \ub54c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n\uc2e4\ud589 \uc2dc, \ub300\ud654 \uc2e4\ud589 \uc911\uc5d0, BotKit\uc774 \ud655\uc778 \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\uace0 \uacc4\uc18d \uc9c4\ud589\ud558\uae30\ub97c \uae30\ub2e4\ub9ac\ub294 \ub300\uc2e0, \uc2dc\uc2a4\ud15c\uc740 \ub2e4\uc74c \ub2e8\uacc4\ub85c \uc9c4\ud589\ud569\ub2c8\ub2e4.<br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.skipUserMessage(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &#8211; \ub370\uc774\ud130<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === \"skipUserMessage\"){ \/\/ condition for skipping a user message\r\n\tsdk.skipUserMessage(data, cb);\r\n}\r\n<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div>\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h2 id=\"sdk-skipUserMessage\"><span class=\"ez-toc-section\" id=\"sdkcloseConversationSession\"><em>sdk.closeConversationSession<\/em><\/span><\/h2>\n<p>\uc774 \ud568\uc218\ub294 \ub300\ud654 \uc138\uc158\uc744 \uc885\ub8cc\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<br \/>\n<strong>\uc0ac\uc6a9\ubc95<\/strong><br \/>\n<strong>\uad6c\ubb38:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.closeConversationSession(requestData, callback)<\/pre>\n<p><strong>\ub9e4\uac1c\ubcc0\uc218:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &#8211; \ub370\uc774\ud130<\/li>\n<li><code>callback<\/code> &#8211; \uc774\ubca4\ud2b8 \uc644\ub8cc \uc2dc \ud638\ucd9c\ud560 \ud568\uc218.<\/li>\n<\/ul>\n<p><strong>\uc608<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === \"closeConversationSession\"){ \/\/ condition for skipping a user message\r\n\tsdk.closeConversationSession(data, cb);\r\n}<\/pre>\n<p>\ud50c\ub7ab\ud3fc \ubc84\uc804 8.0 \ub9b4\ub9ac\uc2a4 \ud6c4, User Meta Tags, Message Meta Tags \ubc0f Session Meta Tags\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ud544\uc694\ud55c \ud398\uc774\ub85c\ub4dc\uc5d0 \ub300\ud55c \uad6c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<pre>metaTags\":{\r\n     \"userMetaTags\":[\r\n        {\r\n            \"name\":\"&lt;string&gt;\",\r\n           \"value\":\"&lt;string&gt;\"\r\n       }\r\n    ],\r\n   \"sessionMetaTags\":[\r\n      {\r\n         \"name\":\"&lt;string&gt;\",\r\n         \"value\":\"&lt;string&gt;\"\r\n      }\r\n    ],\r\n \"messageMetaTags\":[\r\n     {\r\n          \"name\":\"&lt;string&gt;\",\r\n          \"value\":\"&lt;string&gt;\"\r\n     }\r\n  ]\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-separator size_small with_line width_default thick_1 style_solid color_border align_center\"><div class=\"w-separator-h\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"Kore.ai BotKit SDK\ub294 \ubd07\uc744 \ub354 \uc798 \uc81c\uc5b4\ud558\uace0 \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uac1c\uc120\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ud568\uc218\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. BotKit SDK\ub294 \ub2e4\uc74c \ud568\uc218\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. sdk.sendUserMessage sdk.sendBotMessage sdk.AsyncResponse sdk.respondToHook sdk.saveData sdk.registerBot sdk.getSavedData sdk.getMessages sdk.resetBot sdk.startAgentSession sdk.clearAgentSession sdk.extendRequestId sdk.skipUserMessage sdk.skipBotMessage sdk.closeConversationSession sdk.sendUserMessage \uc774 \ud568\uc218\ub294 \ubd07 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0c5\ub2c8\ub2e4. \uc0ac\uc6a9\ubc95 on_bot_message \uc774\ubca4\ud2b8 \ucf5c\ubc31 \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4. on_bot_message \uc774\ubca4\ud2b8\ub294 \ubd07\uc774 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc751\ub2f5\uc744 \ubcf4\ub0bc...","protected":false},"author":22,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-41302","post","type-post","status-publish","format-standard","hentry","category-sdks"],"_links":{"self":[{"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/posts\/41302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/comments?post=41302"}],"version-history":[{"count":1,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/posts\/41302\/revisions"}],"predecessor-version":[{"id":41303,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/posts\/41302\/revisions\/41303"}],"wp:attachment":[{"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/media?parent=41302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/categories?post=41302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developer.kore.ai\/v10-1\/wp-json\/wp\/v2\/tags?post=41302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}