{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/en/JS_API/variables/response/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"ddbc4ab0-4da8-57e6-b157-cc90770f0ee9","excerpt":"This object is used for filling in system responses.  is a list of responses made while processing chatbot reactions. It is an array containing strictly typed…","html":"<h1><code class=\"language-text\">$response</code></h1>\n<hr>\n<p>This object is used for filling in system responses.</p>\n<p><code class=\"language-text\">$response.replies</code> is a list of responses made while processing chatbot reactions. It is an array containing strictly typed elements and utilized in order to transfer chatbot replies to platform-specific chat adapters, such as Telegram, Facebook, etc.</p>\n<p><code class=\"language-text\">replies</code> supports objects of the following types:</p>\n<ul>\n<li><code class=\"language-text\">text</code> is a regular text response. Every element of this type is printed out as a separate message. The <code class=\"language-text\">tts</code> parameter should contain the same text with special markup rendered by speech synthesis systems. The <code class=\"language-text\">markup</code> parameter determines text formatting style.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\":\"text\",\n  \"text\":\"....\",\n  \"tts\":\"....\",\n  \"markup\":\n    \"html|markdown|plain\"\n}\n</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">buttons</code> — renders a regular button.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">    \"type\": \"buttons\",\n    \"buttons\": [\n        {\n            \"text\": \"button\"\n            // all the remaining attributes will be\n            // directly passed on to the messenger\n        }\n    ]\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">inlineButtons</code> —  renders an inline button. If a <code class=\"language-text\">url</code> attribute is present, then the specified link will be opened upon pressing the button.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n    \"type\": \"inlineButtons\",\n    \"buttons\": [\n        {\n            \"text\": \"button\",\n            \"url\": \"https://www.google.com\"\n        }\n    ]\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">image</code> — renders an image.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\":\"image\",\n  \"imageUrl\":\"http://...\"\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">link</code> —  prints out a link.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\":\"link\",\n  \"url\":\"http://...\"\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">raw</code> — is used for passing on methods specific to a particular channel. The mandatory <code class=\"language-text\">body</code> parameter contains the response body transferred into the chat system. Parameters used for user identification are set up automatically.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n    \"type\": \"raw\",\n    \"body\": {\n        ...\n    },\n    \"method\": \"sendMessage\"\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">switch</code> — switches the dialogue from the bot to a customer service agent. It supports the following additional attributes:</li>\n</ul>\n<p><code class=\"language-text\">firstMessage</code>:is the message that will be shown in the live chat. It is the last client response by default.</p>\n<p><code class=\"language-text\">closeChatPhrases</code>: is a string array of commands which the user can type in himself in order to close the live chat and get back to the bot.</p>\n<p><code class=\"language-text\">ignoreOffline</code>: is a flag indicating whether or not the transfer to a customer service agent should be made despite the lack of agents available. <code class=\"language-text\">false</code> by default.</p>\n<p><code class=\"language-text\">oneTimeMessage</code>:  indicates if the value of <code class=\"language-text\">firstMessage</code> should be sent to a customer service agent without making the switch. It enables the agent to receive information on the dialogue without initiating a live chat. <code class=\"language-text\">false</code> by default.</p>\n<p><code class=\"language-text\">destination</code>:  is a group of customer service agents that the client should be transferred to.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\":\"switch\",\n  \"firstMessage\":\"...\",\n  \"closeChatPhrases\": [\"..\"],\n  \"ignoreOffline\":true|false,\n\"oneTimeMessage\": true|false\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">location</code> —  prints out geographic coordinates. Its attributes are <code class=\"language-text\">lat</code> and <code class=\"language-text\">lon</code>.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\": \"location\",\n  \"lat\": 59.934280,\n  \"lon\": 30.335099\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">timeout</code> — makes a transition to a specified state if the user gives no response.</li>\n</ul>\n<p><code class=\"language-text\">interval</code>: is the time limit (in seconds) for the user to make his response.</p>\n<p><code class=\"language-text\">targetState</code>: is the state transitioned into if there is no response from the user.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">{\n  \"type\":\"timeout\",\n  \"interval\":10,\n  \"targetState\":\"/timedout\"\n}</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">dtmf</code> — is a DTMF message signal (containing figures and characters typed on a touch-tone keypad). Intended for calls only.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$response.replies.push({type:\"dtmf\"});</code></pre></div>\n</br>\n<ul>\n<li><code class=\"language-text\">hangup</code> — cuts off the call. Intended for calls only.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">$response.replies.push({type:\"hangup\"});</code></pre></div>\n</br>\n<h4>How to use</h4>\n<ul>\n<li>Image rendering.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">  <span class=\"token literal-property property\">script</span><span class=\"token operator\">:</span>\n     $response<span class=\"token punctuation\">.</span>replies<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span> <span class=\"token punctuation\">{</span>\n          <span class=\"token literal-property property\">type</span><span class=\"token operator\">:</span> <span class=\"token string\">\"image\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token literal-property property\">imageUrl</span><span class=\"token operator\">:</span> <span class=\"token string\">\" https://testimageurl.jpg\"</span><span class=\"token punctuation\">,</span>\n          <span class=\"token literal-property property\">text</span><span class=\"token operator\">:</span> <span class=\"token string\">\"Image\"</span> <span class=\"token comment\">// this field is optional</span>\n      <span class=\"token punctuation\">}</span> <span class=\"token punctuation\">)</span></code></pre></div>\n</br>\n<ul>\n<li>Switching to a customer service agent.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\">$response<span class=\"token punctuation\">.</span>replies <span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n     <span class=\"token literal-property property\">type</span><span class=\"token operator\">:</span><span class=\"token string\">\"switch\"</span><span class=\"token punctuation\">,</span>\n     <span class=\"token literal-property property\">phoneNumber</span><span class=\"token operator\">:</span><span class=\"token number\">74155</span><span class=\"token punctuation\">,</span>\n     <span class=\"token literal-property property\">closeChatPhrases</span><span class=\"token operator\">:</span> catchAll<span class=\"token punctuation\">.</span>closeChatPhrases<span class=\"token punctuation\">,</span>\n     <span class=\"token literal-property property\">firstMessage</span><span class=\"token operator\">:</span> $client<span class=\"token punctuation\">.</span>history<span class=\"token punctuation\">,</span>\n     <span class=\"token literal-property property\">destination</span><span class=\"token operator\">:</span> catchAll<span class=\"token punctuation\">.</span>operatorGroup<span class=\"token punctuation\">,</span>\n                    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n</br>\n<ul>\n<li>Changing the reply in the post-process if the bot tries to give the same reply for the third time in a row.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token literal-property property\">init</span><span class=\"token operator\">:</span>\n    <span class=\"token function\">bind</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"postProcess\"</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">var</span> $session <span class=\"token operator\">=</span> $jsapi<span class=\"token punctuation\">.</span><span class=\"token function\">context</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>session<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">var</span> $response <span class=\"token operator\">=</span> $jsapi<span class=\"token punctuation\">.</span><span class=\"token function\">context</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>response<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">var</span> answer <span class=\"token operator\">=</span> $response<span class=\"token punctuation\">.</span>replies <span class=\"token operator\">?</span> $response<span class=\"token punctuation\">.</span>replies<span class=\"token punctuation\">.</span><span class=\"token function\">reduce</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">answers<span class=\"token punctuation\">,</span> current</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            answers <span class=\"token operator\">+=</span> <span class=\"token string\">\" \"</span> <span class=\"token operator\">+</span> current<span class=\"token punctuation\">.</span>text<span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span> answers<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>  <span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>$session<span class=\"token punctuation\">.</span>lastAnswer <span class=\"token operator\">&amp;&amp;</span> <span class=\"token punctuation\">(</span>answer <span class=\"token operator\">==</span> $session<span class=\"token punctuation\">.</span>lastAnswer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            $session<span class=\"token punctuation\">.</span>answerRepetition <span class=\"token operator\">=</span> $session<span class=\"token punctuation\">.</span>answerRepetition <span class=\"token operator\">||</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            $session<span class=\"token punctuation\">.</span>answerRepetition <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n            $session<span class=\"token punctuation\">.</span>answerRepetition <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>$session<span class=\"token punctuation\">.</span>answerRepetition <span class=\"token operator\">==</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            $response<span class=\"token punctuation\">.</span>replies <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">{</span>\n                <span class=\"token string-property property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"text\"</span><span class=\"token punctuation\">,</span>\n                <span class=\"token string-property property\">\"text\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"We are going in circles. Could you ask me something else?\"</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        $session<span class=\"token punctuation\">.</span>lastAnswer <span class=\"token operator\">=</span> answer<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>","frontmatter":{"title":"","description":null},"headings":[{"value":"<code class=\"language-text\">$response</code>"}]}},"pageContext":{"slug":"/docs/en/JS_API/variables/response/","previous":{"fields":{"slug":"/docs/en/JS_API/variables/session/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/en/JS_API/variables/parseTree/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}