{"id":30312,"date":"2021-08-24T10:17:51","date_gmt":"2021-08-24T09:17:51","guid":{"rendered":"https:\/\/multisite.korebots.com\/v9-0\/uncategorised-ja\/functions-for-the-botkit-sdk\/"},"modified":"2021-08-24T10:18:33","modified_gmt":"2021-08-24T09:18:33","slug":"functions-for-the-botkit-sdk","status":"publish","type":"post","link":"https:\/\/multisite.korebots.com\/v9-0\/uncategorised-ja\/functions-for-the-botkit-sdk\/","title":{"rendered":"BotKit SDK \u306e\u95a2\u6570"},"content":{"rendered":"<section class=\"l-section wpb_row height_auto\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_grid cols_1 laptops-cols_inherit tablets-cols_inherit mobiles-cols_1 valign_top type_default stacking_default\"><div class=\"wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>Kore.ai BotKit SDK \u306f\u3001\u30dc\u30c3\u30c8\u306e\u5236\u5fa1\u3092\u5f37\u5316\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u95a2\u6570\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<br \/>BotKit SDK\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u95a2\u6570\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/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<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-sendusermessage\"><span class=\"ez-toc-section\" id=\"sdksendUserMessage\"><\/span><em>sdk.sendUserMessage<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30dc\u30c3\u30c8 \u30e6\u30fc\u30b6\u30fc\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/>  <code>on_bot_message<\/code> \u30a4\u30d9\u30f3\u30c8 \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5185\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002<code>on_bot_message<\/code> \u30a4\u30d9\u30f3\u30c8\u306f\u3001\u30dc\u30c3\u30c8\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u9001\u4fe1\u3059\u308b\u3068\u3001\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002SDK \u3067\u306f\u3001 <code>message<\/code> \u306e\u3088\u3046\u306a\u30da\u30a4\u30ed\u30fc\u30c9 \u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/><strong>\u69cb\u6587<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.sendUserMessage(payload, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &mdash; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059:\n<pre class=\"lang:default decode:true\">{ &quot;message&quot;:&quot;Spell-corrected message sent by bot to the user&quot;, &quot;originalMessage&quot;:&quot;Original message sent by bot to the user&quot;, &quot;taskId&quot;:&quot;Dialog task ID&quot;, &quot;nodeId&quot;:&quot;Current node ID in the dialog flow&quot;, &quot;channel&quot;:&quot;Channel name&quot;, &quot;context&quot;: &lt;context object&gt; }<\/pre>\n<p>\u4e0a\u8a18\u306e\u30e1\u30c3\u30bb\u30fc\u30b8 \u30da\u30a4\u30ed\u30fc\u30c9\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u8a00\u8a9e\u304c\u691c\u51fa\u3055\u308c\u3001\u30b9\u30da\u30eb\u306e\u4fee\u6b63\u304c\u884c\u308f\u308c\u305f\u3068\u304d\u306e\u3082\u306e\u3067\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306e\u8a00\u8a9e\u304c\u691c\u51fa\u3055\u308c\u306a\u3044\u5834\u5408\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u69cb\u6210\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">{ &quot;message&quot;:&quot;Original message sent by bot to the user&quot;, &quot;originalMessage&quot;:&quot;Original message sent by bot to the user&quot;, &quot;languageInfo&quot;: { &quot;currentLanguage&quot;: &quot;current user language&quot;, &quot;detectedLanguages&quot;: [ &quot;language detected 1&quot;, &quot;language detected 2&quot; ], &quot;spellCorrectedInput&quot;: [ &quot;language 1&quot;: &quot;spell correction in language 1&quot;, &quot;language 2&quot;: &quot;spell correction in language 2&quot; ] } }<\/pre>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3001\u66f4\u65b0\u3055\u308c\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092 \u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u6b21\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001 <code>sdk.sendUserMessage<\/code> \u95a2\u6570\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30a8\u30e9\u30fc\u3092\u8fd4\u3059\u30b5\u30f3\u30d7\u30eb\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">return sdk.sendUserMessage(payload, function(err){ if(err) console.log(&quot;err&quot;, err);<\/pre>\n<p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9 \u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30e9\u30a4\u30d6 \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306b\u5207\u308a\u66ff\u308f\u3063\u305f\u3068\u304d\u306e\u30e6\u30fc\u30b6\u30fc\u3078\u306e\u521d\u671f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">formdata.welcome_message = &quot;&quot;; var visitorId = _.get(payload, &apos;channel.channelInfos.from&apos;); if (!visitorId) { visitorId = _.get(payload, &apos;channel.from&apos;); } visitorId = payload.context.session.UserContext._id; userDataMap[visitorId] = payload; data.message = &quot;An Agent will be assigned to you shortly!!!&quot;; sdk.sendUserMessage(payload, callback);<\/pre>\n<p>\u6b21\u306e\u30b3\u30fc\u30c9 \u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001 <code>sdk.sendUserMessage<\/code>  \u95a2\u6570\u3067\u30e6\u30fc\u30b6\u30fc\u306b\u9001\u4fe1\u3055\u308c\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3057\u305f\u901a\u8ca8\u5909\u63db\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002<code>isTemplate<\/code> \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u30ab\u30b9\u30bf\u30e0 \u30e1\u30c3\u30bb\u30fc\u30b8 \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u30c7\u30d5\u30a9\u30eb\u30c8 \u30e1\u30c3\u30bb\u30fc\u30b8 \u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u304b\u3092\u6c7a\u5b9a\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">on_user_message : function(requestId, payload, callback) { message = payload.message.toLowerCase();console.log(&quot;MESSAGE&quot;,payload.message); \/\/payload .context.session.BotContext.currency = &quot;koko&quot;; if ( message == &quot;Yes&quot; || message == &quot;yes&quot;) { var overrideMessagePayload = { body : &quot; Enter the currency code for which the amount will be converted&quot;, isTemplate :false }; data.overrideMessagePayload = overrideMessagePayload; currCode = true; return sdk.sendUserMessage(payload); } else if ( message == &quot;No&quot; || message == &quot;no&quot; ) { var overrideMessagePayload = { body : &quot;Ok, Enter the country name so that I can fetch it on your behalf&quot;, isTemplate :false }; payload.overrideMessagePayload = overrideMessagePayload; countryname = true; return sdk.sendUserMessage(payload);<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-sendbotmessage\"><span class=\"ez-toc-section\" id=\"sdksendBotMessage\"><\/span><em>sdk.sendBotMessage<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>&lt;span style=&quot;font-weight: 400&quot;&gt;\u3053\u306e\u95a2\u6570\u306f\u3001\u30dc\u30c3\u30c8\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002&lt;\/span&gt;&lt;br \/&gt;&lt;strong&gt;\u4f7f\u7528\u65b9\u6cd5<span style=\"font-weight: 400\"><\/span><br \/><strong>\u4f7f\u7528\u6cd5<\/strong><br \/> <code>on_user_message<\/code> \u30a4\u30d9\u30f3\u30c8\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5185\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u304c\u30dc\u30c3\u30c8\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u3068 <code>on_user_message<\/code> \u30a4\u30d9\u30f3\u30c8\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002SDK \u3067\u306f\u3001 <code>message<\/code> \u306e\u3088\u3046\u306a\u30da\u30a4\u30ed\u30fc\u30c9 \u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3066\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\u30e6\u30fc\u30b6\u30fc \u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\u304c\u884c\u308f\u308c\u307e\u3059\u3002\u30e1\u30c3\u30bb\u30fc\u30b8\u306f 3,000 \u6587\u5b57\u4ee5\u4e0b\u3067\u3001\u5404\u5358\u8a9e\u306f 1,200 \u6587\u5b57\u4ee5\u4e0b\u3067\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.sendBotMessage(payload, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &mdash; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059:\n<pre class=\"lang:default decode:true\">{ &quot;message&quot;:&quot;Message sent by the user&quot;, &quot;channel&quot;:&quot;Channel name&quot;, &quot;context&quot;: &lt;context object&gt; }<\/pre>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3001\u66f4\u65b0\u3055\u308c\u305f\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092 \u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30dc\u30c3\u30c8\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">on_user_message: function(requestId, payload, callback) { sdk.sendBotMessage(payload, callback); },<\/pre>\n<p>\u3053\u306e <code>on_user_message<\/code> \u306e\u95a2\u6570\u3067\u306f\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u30e6\u30fc\u30b6\u30fc\u306b\u76f4\u63a5\u8fd4\u3055\u308c\u3001\u30e9\u30a4\u30d6 \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3078\u306e\u8ee2\u9001\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u30dc\u30c3\u30c8\u306b\u9001\u3089\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">on_user_message: function(requestId, payload, callback) { if (payload.message === &quot;Hi&quot;) { payload.message = &quot;Hello&quot;; \/\/Sends back &apos;Hello&apos; to user. return sdk.sendUserMessage(payload, callback); } else if (!payload.agent_transfer) { \/\/Forward the message to bot return sdk.sendBotMessage(payload, callback); } else { payload.message = &quot;Agent Message&quot;; return sdk.sendUserMessage(payload, callback); } };<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-asyncresponse\"><span class=\"ez-toc-section\" id=\"sdkAsyncResponse\"><\/span><em>sdk.AsyncResponse<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">\u3053\u306e\u95a2\u6570\u306f\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u975e\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u7528\u610f\u3057\u307e\u3059\u3002<\/span><br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u30c0\u30a4\u30a2\u30ed\u30b0 \u30bf\u30b9\u30af\u306e\u5b9f\u884c\u30d5\u30ed\u30fc\u304c Webhook \u30ce\u30fc\u30c9\u306b\u5230\u9054\u3057\u305f\u5834\u5408\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306f SDK \u306b\u5bfe\u3057\u3066 <code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u3092\u884c\u3044\u307e\u3059\u3002<code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u306f\u30012 \u7a2e\u985e\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059:<\/p>\n<ul>\n<li><strong>\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong> \u30fc \u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u304c\u8a31\u5bb9\u6642\u9593\u5185\u306b\u5b8c\u4e86\u3067\u304d\u308b\u5834\u5408\u3001SDK\u306f <code>callback(null, payload)<\/code> \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<li><strong>\u975e\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong> \u30fc \u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u306b\u6642\u9593\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001SDK\u306f <code>callback(null, new sdk.AsyncResponse())<\/code> \u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3001HTTP\u30b3\u30fc\u30c9202 \u3092 \u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u3067\u3001\u975e\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u6e96\u5099\u304c\u3067\u304d\u308b\u3068\u3001SDK \u306f <code>sdk.respondToHook(payload)<\/code> \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">sdk.AsyncResponse() callback(null, new sdk.AsyncResponse())<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><br \/> \u306a\u3057\u3002<br \/><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u3053\u306e <code>on_webhook<\/code> \u95a2\u6570\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001\u30dc\u30c3\u30c8\u306f\u30e6\u30fc\u30b6\u30fc\u304c\u9078\u629e\u3057\u305f\u30bf\u30af\u30b7\u30fc\u306e\u4e88\u7d04\u3092\u975e\u540c\u671f\u7684\u306b\u5f85\u6a5f\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">on_webhook : function(requestId, payload, componentName, callback) { var context = payload.context; if (componentName === &apos;FindNearbyCabs&apos;) { findCabs() .then(function(cabList) { context.cabList = cabList; callback(null, data); }); } else if (componentName === &apos;BookTheCab&apos;) { sdk.saveData(requestId, payload) .then(function() { bookTheCab(requestId, context.entities.selectedCab.id, context.session.UserSession.location, context.entities.whereTo); callback(null, new sdk.AsyncResponse()); }); } }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-respondtohook\"><span class=\"ez-toc-section\" id=\"sdkrespondToHook\"><\/span><em>sdk.respondToHook<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">\u3053\u306e\u95a2\u6570\u306f\u3001Webhook \u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b \u9001\u4fe1\u3057\u307e\u3059\u3002<\/span><br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u30c0\u30a4\u30a2\u30ed\u30b0 \u30bf\u30b9\u30af\u306e\u5b9f\u884c\u30d5\u30ed\u30fc\u304c Webhook \u30ce\u30fc\u30c9\u306b\u5230\u9054\u3057\u305f\u5834\u5408\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306f SDK \u306b\u5bfe\u3057\u3066 <code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u3092\u884c\u3044\u307e\u3059\u3002<code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u3067\u306f\u30012 \u7a2e\u985e\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<ul>\n<li><strong>\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong> \u30fc \u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u304c\u8a31\u5bb9\u6642\u9593\u5185\u306b\u5b8c\u4e86\u3067\u304d\u308b\u5834\u5408\u3001SDK\u306f <code>callback(null, payload)<\/code> \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<li><strong>\u975e\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9<\/strong> \u30fc \u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u306b\u6642\u9593\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001SDK\u306f <code>callback(null, new sdk.AsyncResponse())<\/code> \u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3001HTTP\u30b3\u30fc\u30c9202 \u3092\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u3067\u3001\u975e\u540c\u671f\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u5fdc\u7b54\u306e\u6e96\u5099\u304c\u3067\u304d\u308b\u3068\u3001SDK \u306f <code>sdk.respondToHook(payload)<\/code> \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.respondToHook(payload)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>payload<\/code> &#8211; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059:\n<pre class=\"lang:default decode:true\">{ &quot;taskId&quot;:&quot;Dialog task ID&quot;, &quot;nodeId&quot;:&quot;Current node ID in the dialog flow&quot;, &quot;channel&quot;:&quot;Channel name&quot;, &quot;context&quot;: &lt;context object&gt; }<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u3067\u306f\u3001\u30bf\u30af\u30b7\u30fc\u306e\u4e88\u7d04\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30a4\u30d9\u30f3\u30c8\u304c\u540c\u671f\u7684\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002\u9006\u306b\u3001\u30bf\u30af\u30b7\u30fc\u306e\u4e88\u7d04\u306f Webhook \u3067\u975e\u540c\u671f\u306b\u51e6\u7406\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">function onBookingFailure(requestId) { sdk.getSavedData(requestId) .then(function(payload) { payload.context.successful = false; sdk.respondToHook(payload); }); } \/\/call cabBookingService with the requestId.\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u975e\u540c\u671f\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3059\u308b\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u3066\u3044\u307e\u3059\u3002\/\/&apos;requestId&apos; must be passed along all asynchronous flows, to allow the BotKit to respond \/\/ back to the hook once the async process is completed. function bookTheCab(requestId, cabId, userLoc, destination) { cabBookingService(requestId, cabId, userLoc, destination, { on_success: onBookingSuccess, on_failure: onBookingFailure }); }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-registerbot\"><span class=\"ez-toc-section\" id=\"sdkregisterBot\"><\/span><em>sdk.registerBot<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">\u3053\u306e\u95a2\u6570\u306f\u3001\u30dc\u30c3\u30c8\u3092\u767b\u9332\u3057\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u306b\u30b3\u30fc\u30eb\u30d0\u30c3\u30af \u30a4\u30d9\u30f3\u30c8\u3092\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<\/span><br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> BotKit SDK \u306f\u3001\u5404\u30dc\u30c3\u30c8\u306b\u5bfe\u3057\u3066 1 \u3064\u306e <span style=\"color: #0000ff\">Node.js<\/span> \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30dc\u30c3\u30c8\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u306f\u3059\u3079\u3066\u3001\u3053\u306e <span style=\"color: #0000ff\">Node.js<\/span> \u30d5\u30a1\u30a4\u30eb\u3067\u7ba1\u7406\u3055\u308c\u307e\u3059\u3002\u30dc\u30c3\u30c8\u3092\u767b\u9332\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5909\u6570\u3084\u95a2\u6570\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059:<\/p>\n<pre class=\"lang:default decode:true \">module.exports = { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;botId : &ldquo;xxxxx&rdquo;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;botName : &ldquo;&ldquo;xxxxx&rdquo;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_user_message : function(requestId, data, callback) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_bot_message : function(requestId, data, componentName, callback) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on_webhook : function(requestId, data, componentName, callback) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/code goes here &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, }<\/pre>\n<p><strong>\u69cb\u6587\uff1a<\/strong><br \/>\u30dc\u30c3\u30c8\u3092\u767b\u9332\u3059\u308b\u306b\u306f\u3001\u6b21\u3092\u547c\u3073\u51fa\u3057\u307e\u3059<\/p>\n<pre class=\"lang:default decode:true\">sdk.registerBot(require(&apos;.\/&lt;Bot Name&gt;.js&apos;));<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><span style=\"font-family: monospace, serif\">\u30dc\u30c3\u30c8\u304c\u767b\u9332\u3059\u308b\u305f\u3081\u306e Node.js \u30d5\u30a1\u30a4\u30eb<\/span><\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9 \u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001 <code>botId<\/code> \u3068 <code>botName<\/code>\u306b\u3088\u308b\u30dc\u30c3\u30c8\u306e\u767b\u9332\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">module.exports = { botId : botId, botName : botName, on_user_message : function(requestId, payload, callback) { debug(&apos;on_user_message&apos;); onUserMessage(requestId, payload, callback); }, on_bot_message : function(requestId, payload, callback) { debug(&apos;on_bot_message&apos;); onBotMessage(requestId, payload, callback); }, on_agent_transfer : function(requestId, payload, callback) { console.log(&quot;on agent transfer event&quot;); debug(&apos;on_webhook&apos;); onAgentTransfer(requestId, payload, callback); }, gethistory: gethistory };<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-savedata\"><span class=\"ez-toc-section\" id=\"sdksaveData\"><\/span><em>sdk.saveData<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">\u3053\u306e\u95a2\u6570\u306f\u3001\u30c7\u30fc\u30bf\u3092 <em>Redis<\/em> \u30a4\u30f3\u30e1\u30e2\u30ea \u30c7\u30fc\u30bf\u69cb\u9020\u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/span><br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> <span style=\"font-weight: 400\"><code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u306b\u975e\u540c\u671f\u306b\u5fdc\u7b54\u3059\u308b\u5834\u5408\u3001<code>requestId<\/code>\u3067\u30da\u30a4\u30ed\u30fc\u30c9\u3092 <em>Redis<\/em> \u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3067\u304d\u307e\u3059\u3002\u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001Webhook \u306e\u5fdc\u7b54\u3092\u6e96\u5099\u3057\u306a\u304c\u3089\u3001&nbsp;<code>sdk.getSavedData(requestId)function<\/code>&nbsp;\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/span><br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.saveData(requestId, payload)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestId<\/code> \u30fc \u975e\u540c\u671f\u306e&nbsp;<code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u304b\u3089\u306e&nbsp;<code>requestId<\/code>&nbsp;\u3002<\/li>\n<li><code>payload<\/code> &mdash; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059:\n<pre class=\"lang:default decode:true\">{ &quot;taskId&quot;:&quot;Dialog task ID&quot;, &quot;nodeId&quot;:&quot;Current node ID in the dialog flow&quot;, &quot;channel&quot;:&quot;Channel name&quot;, &quot;context&quot;: &lt;context object&gt; }<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u3053\u306e&nbsp;<code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u3067\u306f\u3001\u30bf\u30af\u30b7\u30fc\u3092\u4e88\u7d04\u3057\u305f\u3044\u3068\u3044\u3046\u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c<em>Redis<\/em> \u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3055\u308c\u3001\u4e88\u7d04\u306e\u975e\u540c\u671f\u51e6\u7406\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">on_webhook : function(requestId, payload, componentId, callback) { var context = data.context; if (componentId === &apos;FindNearbyCabs&apos;) { findCabs() .then(function(cabList) { context.cabList = cabList; callback(null, payload); }); } else if (componentName === &apos;BookTheCab&apos;) { sdk.saveData(requestId, payload) .then(function() { \/\/Assuming the cab booking was successful.A mock service to book the cab can be called here. payload.successful = &apos;true&apos;; payload.bookedCab = context.entities.selectedCab || {}; callback(null, payload); }); } }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-getsaveddata\"><span class=\"ez-toc-section\" id=\"sdkgetSavedData\"><\/span><em>sdk.getSavedData<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400\">\u3053\u306e\u95a2\u6570\u306f\u3001<em>Redis<\/em> \u30a4\u30f3\u30e1\u30e2\u30ea\u30c7\u30fc\u30bf\u69cb\u9020\u30b9\u30c8\u30a2\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002<\/span><br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> <span style=\"font-weight: 400\"> <code>on_webhook<\/code> \u30a4\u30d9\u30f3\u30c8\u547c\u3073\u305f\u3057\u306b\u975e\u540c\u671f\u3067\u5fdc\u7b54\u3059\u308b\u5834\u5408\u3001&nbsp;<code>requestId<\/code>\u3067\u30da\u30a4\u30ed\u30fc\u30c9\u3092 <em>Redis<\/em> \u30b9\u30c8\u30a2\u306b\u4fdd\u5b58\u3067\u304d\u307e\u3059\u3002\u30d3\u30b8\u30cd\u30b9 \u30ed\u30b8\u30c3\u30af\u306e\u5b9f\u884c\u304c\u5b8c\u4e86\u3059\u308b\u3068\u3001Webhook \u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u6e96\u5099\u3057\u306a\u304c\u3089\u3001&nbsp;<code>sdk.getSavedData(requestId)function<\/code>&nbsp;\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/span><br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.getSavedData(requestId, payload)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestId<\/code> &#8211; <code>requestId<\/code>&nbsp;&nbsp;\u975e\u540c\u671f\u306e<code>on_webhook<\/code>\u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057 \u3002\uff08\u975e\u540c\u671f\u306e &lt;on_webhook&gt; \u30a4\u30d9\u30f3\u30c8\u547c\u51fa\u3057\u304b\u3089\u306e &lt;requestId\/&gt;\u3002<\/li>\n<li><code>payload<\/code> &mdash; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059:\n<pre class=\"lang:default decode:true\">{{ &quot;taskId&quot;:&quot;Dialog task ID&quot;, &quot;nodeId&quot;:&quot;Current node ID in the dialog flow&quot;, &quot;channel&quot;:&quot;Channel name&quot;, &quot;context&quot;: &lt;context object&gt; }<\/pre>\n<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><br \/> \u3053\u306e\u30b3\u30fc\u30c9 \u30b5\u30f3\u30d7\u30eb\u3067\u306f\u3001 <code>sdk.getSavedData<\/code> \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u9078\u629e\u3057\u305f\u30bf\u30af\u30b7\u30fc\u3068\u4e88\u7d04\u60c5\u5831\u3092\u8fd4\u3057\u305f\u308a\u3001\u975e\u540c\u671f\u4e88\u7d04 webhook \u30a4\u30d9\u30f3\u30c8\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306b\u3001\u9078\u629e\u3057\u305f\u4e88\u7d04\u306e\u5931\u6557\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30e6\u30fc\u30b6\u30fc\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\">\/*\/ * Webhook \u306b\u6210\u529f\u30d5\u30e9\u30b0\u3067\u975e\u540c\u671f\u306b\u5fdc\u7b54\u3057\u307e\u3059\u3002*\/ function onBookingSuccess(requestId) { sdk.getSavedData(requestId) .then(function(payload) { payload.context.bookedCab = payload.entities.selectedCab; payload.context.successful = true; sdk.respondToHook(payload); }); } function onBookingFailure(requestId) { sdk.getSavedData(requestId) .then(function(payload) { payload.context.successful = false; sdk.respondToHook(payload); }); }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-getmessages\"><span class=\"ez-toc-section\" id=\"sdkgetMessages\"><\/span><em>sdk.getMessages<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u30dc\u30c3\u30c8\u3068\u30e6\u30fc\u30b6\u30fc\u306e\u904e\u53bb\u306e\u4f1a\u8a71\u306e\u30c8\u30e9\u30f3\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u516c\u958b API \u306e\u4f1a\u8a71\u5c65\u6b74\u3068\u540c\u69d8\u306b\u52d5\u4f5c\u3092\u3057\u307e\u3059 (<a href=\"\/?p=21333\">\u4f1a\u8a71\u5c65\u6b74 API \u306b\u3064\u3044\u3066\u306f\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044<\/a>)<br \/> <strong>\u4f7f\u3044\u65b9<\/strong><br \/> \u30dc\u30c3\u30c8\u3068\u30e6\u30fc\u30b6\u30fc\u306e\u9593\u3067\u4ea4\u308f\u3055\u308c\u305f\u4f1a\u8a71\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9006\u306e\u6642\u7cfb\u5217\u3067\u53d6\u5f97\u3057\u307e\u3059\u3002\u3053\u306e API \u306f\u3001\u6539\u30da\u30fc\u30b8\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u30aa\u30d5\u30bb\u30c3\u30c8\/\u30b9\u30ad\u30c3\u30d7\u3084\u3001\u4e00\u5ea6\u306b\u7279\u5b9a\u306e\u6570\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d6\u5f97\u3059\u308b\u5236\u9650\u3092\u8a2d\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.getMessages(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &mdash; \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3057\u307e\u3059:\n<pre class=\"lang:default decode:true\">requestData.baseUrl + &apos;\/getMessages?&apos;+ &quot;skip=&quot; + offset + &quot;&amp;limit=&quot; + limit + &quot;&amp;userId=&quot; + userId+&quot;&amp;channelType&quot;=channel-type<\/pre>\n<p>\u4f4d\u7f6e?<\/p>\n<ul>\n<li><code>stream_id<\/code> \u30fc Bot \u30d3\u30eb\u30c0\u30fc\u306e\u300c\u8a2d\u5b9a\u300d\u30da\u30fc\u30b8\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u30dc\u30c3\u30c8 ID<\/li>\n<li><code>user_id<\/code> \u30fc \u4f1a\u8a71\u5c65\u6b74\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u30e6\u30fc\u30b6\u30fc\u306e ID<\/li>\n<li><code>skip<\/code> \u30fc \u30b9\u30ad\u30c3\u30d7\u3059\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6570\u3002<\/li>\n<li><code>limit<\/code> \u30fc \u5404\u30da\u30fc\u30b8\u306b\u8868\u793a\u3055\u308c\u308b\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6570\u3002<\/li>\n<li><code>channelType<\/code> \u30fc \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u3001\u4f1a\u8a71\u3092\u30db\u30b9\u30c8\u3059\u308b\u30c1\u30e3\u30cd\u30eb\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3059\u95a2\u6570\u3067\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5c65\u6b74\u3092\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u308a\u8fd4\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/this example is from the LiveChat.js \/\/where the gethistory() function uses getMessage() to extract the messages var userId = req.query.userId; var data = userDataMap[userId]; if(data) { data.limit = 100; return sdk.getMessages(data, function(err, resp){ if(err){ res.status(400); return res.json(err); } var messages = resp.messages; res.status(200); return res.json(messages); });<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-clearagentsession\"><span class=\"ez-toc-section\" id=\"sdkclearAgentSession\"><\/span><em>sdk.clearAgentSession<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u30af\u30ea\u30a2\u3057\u3001\u30dc\u30c3\u30c8\u3068\u306e\u4f1a\u8a71\u3092\u518d\u69cb\u7bc9\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u8ee2\u9001\u306e\u30b7\u30ca\u30ea\u30aa\u3067\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u304c\u30e6\u30fc\u30b6\u30fc\u3068\u306e\u4f1a\u8a71\u3092\u7d42\u4e86\u3059\u308b\u3068\u3001\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u30d7\u30ed\u30d0\u30a4\u30c0\u304b\u3089 <code>chat_closed<\/code> \u30a4\u30d9\u30f3\u30c8\u304c\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u3001\u30dc\u30c3\u30c8\u3068\u306e\u4f1a\u8a71\u3092\u518d\u78ba\u7acb\u3059\u308b\u305f\u3081\u306b\u3001\u3053\u306e\u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u307e\u3059<br \/> <strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.clearAgentSession(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &mdash; \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3057\u307e\u3059:\n<pre class=\"lang:default decode:true\">requestData.baseUrl+ &apos;\/clearAgentSession\/&apos; + requestData.requestId<\/pre>\n<p>\u4f4d\u7f6e?<\/p>\n<ul>\n<li><code>requestId<\/code> \u30fc \u30bb\u30c3\u30b7\u30e7\u30f3 ID<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/this example is from the LiveChat.js \/\/where the function is invoked to clear agent session when the chat is closed by the user if (event.type===&quot;chat_closed&quot;){ console.log(&apos;chat_closed&apos;); delete userResponseDataMap[visitorId]; delete _map[visitorId]; sdk.clearAgentSession(data); }<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-startagentsession\"><span class=\"ez-toc-section\" id=\"sdkstartAgentSession\"><\/span><em>sdk.startAgentSession<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u958b\u59cb\u3055\u308c\u305f\u3053\u3068\u3092\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u901a\u77e5\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u3053\u306e\u95a2\u6570\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u8ee2\u9001\u304c\u958b\u59cb\u3055\u308c\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u8ee2\u9001\u304c\u9032\u884c\u4e2d\u3067\u3042\u308b\u3053\u3068\u3092\u30dc\u30c3\u30c8\u306b\u8868\u793a\u3057\u305f\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u5f93\u3046\u3068\u3001\u305f\u3068\u3048\u3070 onMessages() \u3067 BotKit \u304c\u53d7\u3051\u53d6\u308b\u30c7\u30fc\u30bf \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30bb\u30c3\u30b7\u30e7\u30f3\u304c true \u306b\u306a\u308a\u307e\u3059\u3002\u3055\u3089\u306b\u3001BotKit \u304b\u3089 <em>sdk.clearAgentSession<\/em> \u304c\u547c\u3073\u51fa\u3055\u308c\u308b\u3068\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u5b8c\u4e86\u3057\u305f\u3053\u3068\u304c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u901a\u77e5\u3055\u308c\u3001BotKit \u304c\u53d7\u4fe1\u3057\u305f\u30c7\u30fc\u30bf \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8 \u30bb\u30c3\u30b7\u30e7\u30f3\u304c false \u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.startAgentSession(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &mdash; \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3057\u307e\u3059:\n<pre class=\"lang:default decode:true\">requestData.baseUrl + &apos;\/startAgentSession\/&apos; + requestData.requestId<\/pre>\n<p>\u4f4d\u7f6e?<\/p>\n<ul>\n<li><code>requestId<\/code> \u30fc \u30bb\u30c3\u30b7\u30e7\u30f3 ID<\/li>\n<\/ul>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">\/\/The following function call is used in the LiveChat.js for connectToAgent() function \/\/Invoking the startAgentSession before invoking the initChat function will ensure that \/\/ the Bot is aware of the Agent transfer in progress function connectToAgent(requestId, data, cb){ var formdata = {}; formdata.licence_id = config.liveagentlicense; formdata.welcome_message = &quot;&quot;; var visitorId = _.get(data, &apos;channel.channelInfos.from&apos;); if(!visitorId){ visitorId = _.get(data, &apos;channel.from&apos;); } userDataMap[visitorId] = data; data.message=&quot;An Agent will be assigned to you shortly!!!&quot;; sdk.sendUserMessage(data, cb); sdk.startAgentSession(data, cb); formdata.welcome_message = &quot;Link for user Chat history with bot: &quot;+ config.app.url +&quot;\/history\/index.html?visitorId=&quot; + visitorId; return api.initChat(visitorId, formdata) .then(function(res){ _map[visitorId] = { secured_session_id: res.secured_session_id, visitorId: visitorId, last_message_id: 0 }; }); }<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-resetbot\"><span class=\"ez-toc-section\" id=\"sdkresetBot\"><\/span><em>sdk.resetBot<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6d88\u53bb\u3057\u3066\u3001\u73fe\u5728\u306e\u30bf\u30b9\u30af\u3092\u8868\u793a\u305b\u305a\u306b\u7834\u68c4\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u5b9f\u884c\u6642\u3001\u30c0\u30a4\u30a2\u30ed\u30b0\u306e\u5b9f\u884c\u4e2d\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u304c\u300c\u30dc\u30c3\u30c8\u306e\u30ea\u30bb\u30c3\u30c8\u300d\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30dc\u30c3\u30c8\u3092\u6d88\u53bb\u3057\u305f\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6d88\u53bb\u3057\u3066\u3001\u30bf\u30b9\u30af\u3092\u7834\u68c4\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.resetBot(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> &mdash; \u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8a18\u8ff0\u3057\u307e\u3059:\n<pre class=\"lang:default decode:true\">requestData.resetBotUrl<\/pre>\n<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">on_user_message : function(requestId, data, callback) { if (data.message===&quot;reset bot&quot;){ sdk.resetBot(data, callback); }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-extendRequestId\"><span class=\"ez-toc-section\" id=\"sdkextendRequestId\"><\/span><em>sdk.extendRequestId<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001BotKit \u304c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u6642\u9593\u3092\u5ef6\u9577\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u3053\u306e\u95a2\u6570\u306f\u3001\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u8ee2\u9001\u304c\u958b\u59cb\u3055\u308c\u3001\u3057\u3070\u3089\u304f\u3059\u308b\u3068\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u304c\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u53d7\u4fe1\u3067\u304d\u306a\u304f\u306a\u308b\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001BotKit \u304c\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u6642\u9593\u3092\u5ef6\u9577\u3059\u308b\u3053\u3068\u3067\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.extendRequestId(requestData, callback)<\/pre>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">function onBotMessage(requestId, data, cb) { console.log(&quot;bot message&quot;,JSON.stringify(data)); var visitorId = _.get(data, &apos;channel.from&apos;); event = schedular.scheduleJob(&quot;*\/4 * * * *&quot;, function() { pub.get(visitorId+&apos;:data&apos;,function(err,reply){ if(err) throw err; sdk.extendRequestId(data, cb); })}); }<\/pre>\n<pre>on_user_message: function(requestId, data, callback) { var visitorId = _.get(data, &apos;channel.from&apos;); registerEvent(visitorId, data); if(event){ event.cancel(); }else{ console.log(new Date(),&apos;event not found&apos;); } event = schedular.schedular.scheduleJob(&quot;*\/4 * * * *&quot;, function() { pub.get(visitorId+&apos;:data&apos;,function(err,reply){ if(err) throw err; sdk.extendRequestId(data,callback); })});<\/pre>\n<p>\u30e1\u30e2: 15 \u5206\u9593\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u4f1a\u8a71\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u6642\u9593\u5ef6\u9577\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u975e\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30bb\u30c3\u30b7\u30e7\u30f3\u3067\u306f\u3001\u305d\u308c\u3068\u306f\u7121\u95a2\u4fc2\u306b agent_transfer \u30e2\u30fc\u30c9\u304c\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3059\u3002<\/p>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-skipBotMessage\"><span class=\"ez-toc-section\" id=\"sdkskipBotMessage\"><\/span><em>sdk.skipBotMessage<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u7279\u5b9a\u306e\u30d3\u30b8\u30cd\u30b9 \u30e6\u30fc\u30b9 \u30b1\u30fc\u30b9\u306b\u304a\u3044\u3066\u3001\u7279\u5b9a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u5b9f\u884c\u6642\u3001\u30c0\u30a4\u30a2\u30ed\u30b0\u306e\u5b9f\u884c\u4e2d\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306f BotKit \u304c\u9032\u884c\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u306e\u3092\u5f85\u305f\u305a\u306b\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u307f\u307e\u3059\u3002\u3002<\/p>\n<p><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.skipBotMessage(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \u30fc \u30c7\u30fc\u30bf<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === &quot;skipBotMessage&quot;){ \/\/ condition for skipping a Bot message sdk.skipBotMessage(data, cb); }<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-skipUserMessage\"><span class=\"ez-toc-section\" id=\"sdkskipUserMessage\"><\/span><em>sdk.skipUserMessage<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u7279\u5b9a\u306e\u30d3\u30b8\u30cd\u30b9 \u30e6\u30fc\u30b9 \u30b1\u30fc\u30b9\u306b\u304a\u3044\u3066\u3001\u7279\u5b9a\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30b9\u30ad\u30c3\u30d7\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> \u5b9f\u884c\u6642\u3001\u30c0\u30a4\u30a2\u30ed\u30b0\u306e\u5b9f\u884c\u4e2d\u306b\u3001\u30b7\u30b9\u30c6\u30e0\u306f BotKit \u304c\u78ba\u8a8d\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u306e\u3092\u5f85\u305f\u305a\u306b\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u9032\u307f\u307e\u3059\u3002<br \/><strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.skipUserMessage(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \u30fc \u30c7\u30fc\u30bf<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === &quot;closeConversationSession&quot;){ \/\/ condition for skipping a user message sdk.closeConversationSession(data, cb); }<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver 8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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 class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2 id=\"sdk-skipUserMessage\"><span class=\"ez-toc-section\" id=\"sdkcloseConversationSession\"><\/span><em>sdk.closeConversationSession<\/em><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u3053\u306e\u95a2\u6570\u306f\u3001\u4f1a\u8a71\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u9589\u3058\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<br \/><strong>\u4f7f\u7528\u65b9\u6cd5<\/strong><br \/> <strong>\u69cb\u6587:<\/strong><\/p>\n<pre class=\"lang:default decode:true\">sdk.closeConversationSession(requestData, callback)<\/pre>\n<p><strong>\u30d1\u30e9\u30e1\u30fc\u30bf:<\/strong><\/p>\n<ul>\n<li><code>requestData<\/code> \u30fc \u30c7\u30fc\u30bf<\/li>\n<li><code>callback<\/code> \u30fc \u30a4\u30d9\u30f3\u30c8\u5b8c\u4e86\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3067\u3059\u3002<\/li>\n<\/ul>\n<p><strong>\u30b5\u30f3\u30d7\u30eb<\/strong><\/p>\n<pre class=\"lang:default decode:true \">if(data.message === &quot;closeConversationSession&quot;){ \/\/ condition for skipping a user message sdk.closeConversationSession(data, cb); }<\/pre>\n<p>\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e Ver8.0 \u306e\u30ea\u30ea\u30fc\u30b9\u5f8c\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3001\u304a\u3088\u3073\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u30e1\u30bf\u30bf\u30b0\u3092\u8ffd\u52a0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u5fc5\u8981\u306a\u30da\u30a4\u30ed\u30fc\u30c9\u306e\u69cb\u6587\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059:<\/p>\n<pre>metaTags&quot;:{ &quot;userMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;sessionMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ], &quot;messageMetaTags&quot;:[ { &quot;name&quot;:&quot;&lt;string&gt;&quot;, &quot;value&quot;:&quot;&lt;string&gt;&quot; } ] }<\/pre>\n<\/div><\/div><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><\/section>\n","protected":false},"excerpt":{"rendered":"Kore.ai BotKit SDK \u306f\u3001\u30dc\u30c3\u30c8\u306e\u5236\u5fa1\u3092\u5f37\u5316\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u4f53\u9a13\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u95a2\u6570\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002BotKit SDK\u3067\u306f\u3001\u4ee5\u4e0b\u306e\u95a2\u6570\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 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 \u3053\u306e\u95a2\u6570\u306f\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u30dc\u30c3\u30c8 \u30e6\u30fc\u30b6\u30fc\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002\u4f7f\u7528\u65b9\u6cd5 on_bot_message \u30a4\u30d9\u30f3\u30c8 \u30b3\u30fc\u30eb\u30d0\u30c3\u30af\u5185\u3067\u4f7f\u7528\u3057\u307e\u3059\u3002on_bot_message \u30a4\u30d9\u30f3\u30c8\u306f\u3001\u30dc\u30c3\u30c8\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u9001\u4fe1\u3059\u308b\u3068\u3001\u547c\u3073\u51fa\u3055\u308c\u307e\u3059\u3002SDK \u3067\u306f\u3001 message \u306e\u3088\u3046\u306a\u30da\u30a4\u30ed\u30fc\u30c9 \u30c7\u30fc\u30bf\u3092\u5909\u66f4\u3057\u3001\u30dc\u30c3\u30c8 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306b\u9001\u4fe1\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u69cb\u6587 sdk.sendUserMessage(payload, callback) \u30d1\u30e9\u30e1\u30fc\u30bf: payload &mdash; \u4ee5\u4e0b\u306b\u793a\u3059\u3088\u3046\u306a\u3001JSON \u306e\u30ec\u30b9\u30dd\u30f3\u30b9 \u30da\u30a4\u30ed\u30fc\u30c9\u3067\u3059: { &quot;message&quot;:&quot;Spell-corrected message sent by bot to the user&quot;, &quot;originalMessage&quot;:&quot;Original message sent by bot to...","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/posts\/30312"}],"collection":[{"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/comments?post=30312"}],"version-history":[{"count":1,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/posts\/30312\/revisions"}],"predecessor-version":[{"id":30315,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/posts\/30312\/revisions\/30315"}],"wp:attachment":[{"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/media?parent=30312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/categories?post=30312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multisite.korebots.com\/v9-0\/wp-json\/wp\/v2\/tags?post=30312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}