<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Aura – aura-groot</title>
    <link>/tags/aura-groot/</link>
    <description>Recent content in aura-groot on Aura</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="/tags/aura-groot/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-middlewares/channeldata-validator-middleware/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-middlewares/channeldata-validator-middleware/</guid>
      <description>
        
        
        &lt;h1 id=&#34;channeldata-validator-middleware&#34;&gt;Channeldata validator middleware&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;channeldata-validator-middleware&lt;/strong&gt;&lt;/em&gt;, in charge of the validation of the request &lt;code&gt;channelData&lt;/code&gt; for normalized versions&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The source code of this middleware is included in this &lt;a href=&#34;https://github.com/Telefonica/aura-distributed-bot/tree/master/packages/aura-groot/src/modules/middlewares/channeldata-validator-middleware.ts&#34;&gt;Github repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This middleware will check if the &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;&lt;code&gt;channelData&lt;/code&gt;&lt;/a&gt; of the incoming request is valid or not. This validation is made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If the environment variable &lt;code&gt;AURA_CHANNELDATA_VALIDATION&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the incoming &lt;code&gt;channelData&lt;/code&gt; version is greater or equal than &lt;code&gt;AURA_CHANNELDATA_VALIDATION_MIN_VERSION&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If a validator for this version exists. Validators are loaded using schemas stored in &lt;a href=&#34;https://github.com/Telefonica/aura-common-utilities/tree/master/packages/aura-utilities/src/aura-models/resources/channel-data&#34;&gt;aura-models package&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the validation is ok or is not executed because one or more of the previous conditions are not satisfied, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; continues the normal flow, executing the rest of middlewares.&lt;/p&gt;
&lt;p&gt;If the validation fails, the error message &lt;code&gt;core:core.model-validation.request.error&lt;/code&gt; will be returned to the user and no more middlewares will be executed.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/aura-assistant/development-architecture/architecture/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/aura-assistant/development-architecture/architecture/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-development-architecture&#34;&gt;Aura development architecture&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; development architecture, its operation and main components&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;A bot is an application, particularly an HTTP server, that allows &lt;strong&gt;interaction with users in a conversational way&lt;/strong&gt;. Different means of interaction are available, such as text, cards with images, video or audio and speech.&lt;/p&gt;
&lt;p&gt;Users interact with the bot through a given channel, that is the final application used directly by the users. For instance, the bot can be accessible from &lt;strong&gt;Facebook&lt;/strong&gt;, &lt;strong&gt;WhatsApp&lt;/strong&gt; or from any private application, such as My O2 or Mi Movistar. Every message exchanged between the user and the bot is called an &lt;strong&gt;activity&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In Aura distributed architecture, the user interacts directly with the root bot, here named &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;, and the root bot delegates some of its conversational logic to the skill &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Skills and root bot communicate over HTTP using the Bot Framework protocol.&lt;/p&gt;
&lt;p&gt;Both &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; are separate bots and are published independently.&lt;/p&gt;
&lt;h3 id=&#34;main-technical-components&#34;&gt;Main technical components&lt;/h3&gt;
&lt;p&gt;The key Aura technical components that executes all the functionalities of &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; are defined below.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-circle-info fa-xl&#34; style=&#34;color: #3267c3;&#34;&gt;&lt;/i&gt; Take into account the &lt;a href=&#34;../../docs/aura-assistant/development-architecture/#mapping-functional-architecture-with-development-architecture&#34;&gt;mapping between the functional architecture with development architecture&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; is the main component in charge of handling the assistant. It is responsible for the communication between each channel and its corresponding skill, keeping track of all the communication process, but introducing a minimal interference on it.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-file-lines fa-xl&#34; style=&#34;color: #0d5de7;&#34;&gt;&lt;/i&gt; Access detailed technical documentation regarding &lt;a href=&#34;../../docs/components/aura-groot/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; component&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is a skill based on Microsoft Bot Framework that constitutes Aura&amp;rsquo;s neuronal network. It handles the requests received from &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and interacts with every Aura system or component in order to provide Aura users with the intended answer or requested service.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-file-lines fa-xl&#34; style=&#34;color: #0d5de7;&#34;&gt;&lt;/i&gt; Access detailed technical documentation regarding &lt;a href=&#34;../../docs/components/aura-bot-platform/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; component&lt;/a&gt;&lt;/p&gt;
  &lt;!-- LINK!!!!!!! --&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;operational-flow&#34;&gt;Operational flow&lt;/h3&gt;
&lt;p&gt;The main stages in tasks in &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; conversational process are described below and shown in the following flowchart.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; adapter receives activities from the user and forwards them to the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; activity handler. (Activities from the user are received at the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; messaging endpoint.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; uses a skill HTTP client to send an activity to the skill. The client gets the consumer-skill conversation information from a skill definition and a skill conversation ID factory. This includes the service URL that the skill will use to reply to the activity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; adapter receives activities from &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and forwards them to the skill&amp;rsquo;s activity handler. (Activities from the consumer are received at the skill bot&amp;rsquo;s messaging endpoint).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; responds, the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;s skill handler receives the activity. It gets the root-user conversation information from the skill conversation ID factory. It then forwards the activity to the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&amp;rsquo;s adapter. (Activities from the skill are received at the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&amp;rsquo;s skill host endpoint).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; adapter sends messages from the skill to the user.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-groot/full-flows-only-main-blocks.svg&#34; alt=&#34;Aura Groot conversational process&#34;&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-recognizers/domain-recognizers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-recognizers/domain-recognizers/</guid>
      <description>
        
        
        &lt;h1 id=&#34;domain-recognizer&#34;&gt;Domain recognizer&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;domain-recognizer&lt;/strong&gt;&lt;/em&gt; in charge of recognizing the user&amp;rsquo;s domain&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;domain-recognizer&lt;/strong&gt;&lt;/em&gt; is the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; recognizer in charge of identifying the domain in the user&amp;rsquo;s input request.&lt;/p&gt;
&lt;p&gt;This is possible thanks to the mapping of the list of channels and skills that is done at server start-up. A skill can have several associated channels, but a channel can only have one associated skill.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;GOOD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel3&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;BAD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;channel2&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;skill1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;This&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;not&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;possible&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When a user writes through a channel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The domain to which the channel belongs is identified&lt;/li&gt;
&lt;li&gt;The skill associated with that domain is executed&lt;/li&gt;
&lt;li&gt;The domain is registered in KPIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the recognition of the domain fails, the user will be returned the error message &lt;code&gt;root:skill.not.found&lt;/code&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/environment-variables/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/environment-variables/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot-environment-variables&#34;&gt;Aura Groot environment variables&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Updated list of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Properties marked in &lt;strong&gt;bold&lt;/strong&gt; are mandatory.&lt;/li&gt;
&lt;li&gt;Properties marked in &lt;em&gt;italics&lt;/em&gt; are optional.&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Modifiable by OB?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_ACTIVATE_MINI_BOT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to activate minibot mode. By default: &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO. Only valid during development to run Aura minibot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_ALLOWED_CALLERS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;List of allowed callers separated by commas. By default: [&lt;code&gt;*&lt;/code&gt;]&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_AUTHORIZATION_APIKEY_PATH&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Path to validate channel APIKey authorization&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_AUTHORIZATION_ENDPOINT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; base endpoint.&lt;/td&gt;
&lt;td&gt;NO. In any case, it must be the internal k8s URL pointing to the &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_AUTHORIZATION_HEADER&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Complete authorization header to be sent to &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;, with the following format: &lt;code&gt;APIKEY xxxxxx&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, but only if the previous APIKey was deprecated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_CURRENT_VERSION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;channelData&lt;/code&gt; version used internally by &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;3&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_DEFAULT_VERSION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;channelData&lt;/code&gt; version returned by default in all messages. By default, &lt;code&gt;1.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_RESPONSE_VALIDATION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to indicate that response validation should be done. By default, &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_VALIDATION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to indicate that request validation should be done. By default, &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_VALIDATION_VERSIONS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;&lt;code&gt;channelData&lt;/code&gt; versions that will be validated. By default, &lt;code&gt;3&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CHANNELDATA_VALIDATION_MIN_VERSION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Minimal version to validate. By default, &lt;code&gt;3&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_CHANNELS_CONFIGURATION_API_ENDPOINT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Endpoint for &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_DEFAULT_LOCALE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Culture code to be used by default in the current deployment: &lt;code&gt;de-de&lt;/code&gt;, &lt;code&gt;en-gb&lt;/code&gt;, &lt;code&gt;es-es&lt;/code&gt;, &lt;code&gt;pt-br&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_DEFAULT_TIME_ZONE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default time zone. For example: &lt;code&gt;Europe/Madrid&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_ENCRYPTION_ALGORITHM&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Encryption algorithm used to validate the APIKey&lt;/td&gt;
&lt;td&gt;NO. It would break database encrypted data and APIKey validation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_ENCRYPTION_IV_LENGTH&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Size for the initialization vector used by the encryption algorithm that validates the APIKey&lt;/td&gt;
&lt;td&gt;NO. It would break database encrypted data and APIKey validation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_ENCRYPTION_IV_POSITION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Position where to insert the initialization vector in the final string with the encrypted payload. Future use.&lt;/td&gt;
&lt;td&gt;NO. It would break database encrypted data and APIKey validation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_ENCRYPTION_KEY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Encryption key or comma-separated list of encryption keys to be used in the environment. It is mainly used to decrypt the APIKeys.&lt;/td&gt;
&lt;td&gt;NO. It would break database encrypted data and APIKey validation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_ENVIRONMENT_NAME&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Name of the environment where the &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; is deployed. For example: &lt;code&gt;ap-next&lt;/code&gt;, &lt;code&gt;es-dev&lt;/code&gt; or &lt;code&gt;de-pre&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_EXTERNAL_HOST_SERVICE_URL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of the external host service.&lt;/td&gt;
&lt;td&gt;NO. In any case, it must be the internal k8s URL pointing to the &lt;code&gt;host-service&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_HOST_SERVICE_URL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of the host service.&lt;/td&gt;
&lt;td&gt;NO. In any case, it must be the internal k8s URL pointing to the &lt;code&gt;host-service&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_PATHS_DISABLED_FOR_LOGS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;stringArray&lt;/td&gt;
&lt;td&gt;Paths which will be filtered in logs. Used in HTTPMonkeyPatcher module.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_KEEP_ALIVE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Use of keep-alive in HTTP connections. Used in HTTPMonkeyPatcher module.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_KEEP_ALIVE_MSECS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of milliseconds to keep alive HTTP connections. Used in HTTPMonkeyPatcher module.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_MONKEY_PATCHER_ENABLED&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Enable or disable the monkey patching of the HTTP and HTTPs modules. By default, &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_REQUEST_MAX_SOCKETS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum number of HTTP sockets open in the server. By default, &lt;code&gt;100&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO. Only if indicated by Aura Global Team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_IGNORE_LOGGING_PATH&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Comma-separated string with all the incoming paths which requests should not be logged. By default, &lt;code&gt;/healthz&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_INTERNAL_DELAY_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;The time in milliseconds between retries. By default, &lt;code&gt;10000&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO, except if requested&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_INTERNAL_RETRIES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of retries for internal calls. By default, &lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO, except if requested&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_ENABLED&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;td&gt;Boolean value, indicating whether &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; writes entity files or not. By default: &lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO, excepting if requested by Product or Operations teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_FILE_PREFIX&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;String with the prefix used in the KPIs entities files of this service. By default, &lt;code&gt;groot/GROOT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_REMOVE_SPECIAL_CHARACTERS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Regular expression for removing special characters Default:&lt;code&gt;\n\r&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_STORE_MODE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;It indicates which is the destination of the KPIs entities files. Default: &lt;code&gt;blob&lt;/code&gt;. If &lt;code&gt;file&lt;/code&gt;, they will be stored locally to the instance, in the folder shown in &lt;code&gt;KPI_TO_DSV_LOCAL_FILES_DIRECTORY&lt;/code&gt;. For development purposes. If &lt;code&gt;blob&lt;/code&gt;, they will be stored remotely in the Azure blob container shown in &lt;code&gt;KPIS_STORE_CONTAINER&lt;/code&gt;. Mandatory in environments running on k8s.&lt;/td&gt;
&lt;td&gt;NO, only configurable when running &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; locally.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_TO_DSV_CACHE_TTL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number with the amount of milliseconds to cache existing requests to calculate their duration. Default: 1800.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_TO_DSV_DELIMITER&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Field delimiter to be used in KPIs entities files. Default: |&lt;/td&gt;
&lt;td&gt;NO. It will break all the analysis and processes running on top of these files.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPI_TO_DSV_EXTENSION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Extension to be used in KPIs entities files.Default: &lt;code&gt;txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO. If changed without changing &lt;em&gt;&lt;strong&gt;aura-kpi-uploader&lt;/strong&gt;&lt;/em&gt;, the files will not be uploaded to &lt;strong&gt;Kernel&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPIS_BLOB_STORE_INTERVAL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Time interval in milliseconds to upload asyncrhonously logs to the &lt;code&gt;KPIS_STORE_CONTAINER&lt;/code&gt;. Default: &lt;code&gt;60000&lt;/code&gt;. Only needed if &lt;code&gt;KPI_STORE_MODE==blob&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO. In pre/production, it must be blob so the files will be uploaded to &lt;strong&gt;Kernel&lt;/strong&gt; instance afterwards. Setting file for development is recommended.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPIS_LOG_API_REQUEST_BODY&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to log or not the request body of the API calls. Default: &lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YES. Once disabled, to enable run performance tests to validate if it is possible to write them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPIS_LOG_API_RESPONSE_BODY&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to log or not the response body of the API calls. Default: &lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YES. Once disabled, to enable run performance tests to validate if it is possible to write them.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_KPIS_STORE_CONTAINER&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;The name of the Azure Blob container to store KPIs entities files. By default, &lt;code&gt;aura-kpis&lt;/code&gt;. It MUST be the same than the one configured in &lt;code&gt;KPIS_UPLOADER&lt;/code&gt; module. Only needed if &lt;code&gt;KPI_STORE_MODE==blob&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO. If changed without changing &lt;em&gt;&lt;strong&gt;aura-kpi-uploader&lt;/strong&gt;&lt;/em&gt;, the files will not be uploaded to &lt;strong&gt;Kernel&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOCALE_FOLDER&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Full path to the local folder where locale files are stored. By default, &lt;code&gt;./locale&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOCALE_FORCE_IMPORT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if locale remote loading must be carried out although there were validation errors. By default, &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOCALE_REMOTE_CONTAINER&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Name of the Azure Storage Blob Container where the locale files will be stored. By default, &lt;code&gt;static-resources&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOCALE_REMOTE_CONTAINER_PREFIX&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Path within &lt;code&gt;AURA_LOCALE_REMOTE_CONTAINER&lt;/code&gt; where the locale files are stored. By default, &lt;code&gt;locale&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOGGING_FORMAT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Format to be used in monitoring logs: &lt;code&gt;json&lt;/code&gt; or &lt;code&gt;dev&lt;/code&gt;(more visual format). By default, &lt;code&gt;json&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO. Only for development, set it to &lt;code&gt;dev&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_LOGGING_LEVEL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Level to be used in monitoring logs, from more to less verbose: &lt;code&gt;&#39;TRACE&#39;, &#39;DEBUG&#39;, &#39;INFO&#39;, &#39;WARN&#39;, &#39;ERROR&#39;, &#39;FATAL&#39;, &#39;OFF&#39;&lt;/code&gt;. By default, &lt;code&gt;INFO&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, for development set it to &lt;code&gt;DEBUG&lt;/code&gt;. In pre/production should be &lt;code&gt;INFO&lt;/code&gt; or &lt;code&gt;ERROR&lt;/code&gt;. For analysis of an issue in pre/production it may be changed to &lt;code&gt;DEBUG&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MAKEUP_MODE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Allow dev mode of the make-up with the value &lt;code&gt;local&lt;/code&gt;. By default, &lt;code&gt;full&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO, only for development, set it to &lt;code&gt;local&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MAX_HISTORY_CHAT_ITERATIONS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of history chat iterations saved in conversation history. By default, &lt;code&gt;6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MESSAGES_REQUEST_PATH&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Path exposed to receive incoming messages. By default, &lt;code&gt;/api/messages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_APP_ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;ID of the Microsoft bot application to be used in the deployment.&lt;/td&gt;
&lt;td&gt;NO. Only if Operations Team changes it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_APP_PASSWORD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Password of the Microsoft bot application to be used in the deployment.&lt;/td&gt;
&lt;td&gt;NO. It must be changed by Operations Team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MICROSOFT_APP_TYPE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Type of the Microsoft bot application to be used in the deployment. By default: &lt;code&gt;MultiTenant&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;NO. Only if Operations Team changes it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_APP_TENANT_ID&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Tenant ID of the Microsoft bot application to be used in the deployment.&lt;/td&gt;
&lt;td&gt;NO. Only if operations team changes it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_AZURE_STORAGE_COMMON_ACCESS_KEY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Microsoft Storage password of the common storage. Currently used for KPI storing.&lt;/td&gt;
&lt;td&gt;NO. Only if Operations Team changes it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_AZURE_STORAGE_COMMON_ACCOUNT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Microsoft Storage account of the common storage. Currently used for KPI storing.&lt;/td&gt;
&lt;td&gt;NO. Only if Operations Team changes it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_AZURE_STORAGE_ACCESS_KEY&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Microsoft Storage password of the deployment.&lt;/td&gt;
&lt;td&gt;NO. It must be changed by Operations Team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MICROSOFT_AZURE_STORAGE_ACCOUNT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Microsoft Storage account of the environment.&lt;/td&gt;
&lt;td&gt;NO. It must be changed by Operations Team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MICROSOFT_AZURE_STORAGE_CONFIGURATION_CONTAINER&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Name of the container where basic bot configuration files are stored: Mongo indexes descriptor, &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt; configuration, etc. By default, &lt;code&gt;aura-configuration&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MIDDLEWARE_SPEAK_PROCESSOR&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Used to enable speak property text substitution on the outgoing messages, to produce speakable text. Regular expression of substitution format example: &lt;code&gt;[[&amp;quot;\\*&amp;quot;,&amp;quot; asterisk &amp;quot;],[&amp;quot;\\#&amp;quot;,&amp;quot; hash &amp;quot;]]&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YES. It includes all the needed changes to be done automatically between the written and the spoken text.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT_INDEX_TTL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of seconds to keep the context data available in &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; context cache. By default, &lt;code&gt;3600&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;MongoDB collection name where &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; will store the context of the users. By default, &lt;code&gt;aura-context&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_BOT_DATABASE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;MongoDB database name where &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; will store all the data needed to handle requests. By default, &lt;code&gt;aura-groot&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_TTL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Lifetime of cache used by &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt;. It MUST be disabled in PRE and PRO environments. By default, &lt;code&gt;3600&lt;/code&gt; seconds (1h).&lt;/td&gt;
&lt;td&gt;YES, only for development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_DATABASE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Database used in cache of &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;aura-groot-caches&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, only for development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_COLLECTION_DL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Collection used in cache of &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;dev-cache&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, only for development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_INDEX_DL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Index used in TwoLevelsCache of &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;id&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, only for development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_METRIC_TTL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Lifetime of metric cache. By default, &lt;code&gt;60&lt;/code&gt; seconds (1 minute).&lt;/td&gt;
&lt;td&gt;YES.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_METRIC_COLLECTION&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Collection used in metric-cache. By default, &lt;code&gt;metric-cache&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_CACHE_METRIC_INDEX&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Index used in TwoLevelsCache of metric-cache. By default, &lt;code&gt;correlator&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MONGODB_PASSWORD&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;MongoDB password to access &lt;code&gt;AURA_MONGODB_BOT_DATABASE&lt;/code&gt; in &lt;code&gt;AURA_MONGODB_URI&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_POOL_SIZE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of connections available in MongoDB pool. By default, &lt;code&gt;60&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_SSL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if access to &lt;code&gt;AURA_MONGODB_URI&lt;/code&gt; is &lt;code&gt;SSL&lt;/code&gt;. By default, &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MONGODB_URI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;MongoDB URI of the server handling. &lt;code&gt;AURA_MONGODB_BOT_DATABASE&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_MONGODB_USERNAME&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;MongoDB username to access &lt;code&gt;AURA_MONGODB_BOT_DATABASE&lt;/code&gt; in &lt;code&gt;AURA_MONGODB_URI&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_MAX_POOL_SIZE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum number of connections in the MongoDB pool. By default, &lt;code&gt;60&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_MIN_POOL_SIZE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Minimum number of connections in the MongoDB pool. By default, &lt;code&gt;2&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_MAX_IDLE_TIME_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Maximum idle time in milliseconds for connections in the MongoDB pool. By default, &lt;code&gt;30000&lt;/code&gt; (30 seconds).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_RETRY_WRITES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if retry writes are enabled in the MongoDB connection. By default, &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_RETRY_READS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt; if retry reads are enabled in the MongoDB connection. By default, &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_HEARTBEAT_FREQUENCY_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Frequency in milliseconds of the heartbeat in the MongoDB connection. By default, &lt;code&gt;2000&lt;/code&gt; (2 seconds).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_SERVER_SELECTION_TIMEOUT_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Timeout in milliseconds for server selection in the MongoDB connection. By default, &lt;code&gt;5000&lt;/code&gt; (5 seconds).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_SOCKET_TIMEOUT_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Timeout in milliseconds for socket operations in the MongoDB connection. By default, &lt;code&gt;45000&lt;/code&gt; (45 seconds).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_CONNECTION_TIMEOUT_MS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Timeout in milliseconds for establishing a connection to the MongoDB server. By default, &lt;code&gt;10000&lt;/code&gt; (10 seconds).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_MONGODB_READ_PREFERENCE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Read preference for the MongoDB connection. By default, &lt;code&gt;primaryPreferred&lt;/code&gt;. Possible values: &lt;code&gt;primary&lt;/code&gt;, &lt;code&gt;primaryPreferred&lt;/code&gt;, &lt;code&gt;secondary&lt;/code&gt;, &lt;code&gt;secondaryPreferred&lt;/code&gt;, &lt;code&gt;nearest&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_REQUEST_ENABLE_NAGLE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Boolean to enable Nagle. By default: &lt;code&gt;false&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_REQUEST_TIMEOUT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of milliseconds to wait a request. By default: &lt;code&gt;30000&lt;/code&gt;, 30 seconds.&lt;/td&gt;
&lt;td&gt;YES, in case of network issues.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SERVER_BODY_LIMIT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Maximum size in bytes of the request body. It is a string because the allowed values must indicate the units: 10 mb, 200 kb, etc. By default, &lt;code&gt;20 mb&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;YES, in order to decrease it, if it is considered too high. To increase it, both local and global Operational Teams must review it, because it could lead to DDoS attacks easily.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SERVER_PORT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Port where &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; will be listening to requests. By default, &lt;code&gt;8080&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SERVICE_ENVIRONMENT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Type of environment: &lt;code&gt;&#39;DEV&#39;, &#39;PRE&#39;, &#39;PRO&#39;&lt;/code&gt;. By default, &lt;code&gt;DEV&lt;/code&gt;. It is used during locale translation, to get the correct text reference and, in development environments, to allow &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt; execution.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SERVICE_URL_DIRECTLINE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default URL for Direct Line services. By default, &lt;code&gt;https://directline.botframework.com/&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SHUTDOWN_GRACEFUL_TTL&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of milliseconds to wait until all &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; tasks are done before shutting each pod down. By default &lt;code&gt;25000&lt;/code&gt; (25 seconds)&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SKILLS_BLOCKED_TIMEOUT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of seconds to block a skill after a timeout. By default, &lt;code&gt;600&lt;/code&gt; (10 minutes).&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SKILLS_RESPONSE_PATH&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Path where the skills will return the answers. By default, &lt;code&gt;/api/skills&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SUPERAGENT_DEADLINE_TIMEOUT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of milliseconds to wait until the &lt;code&gt;superagent&lt;/code&gt; deadline timeout, as specified &lt;a href=&#34;https://ladjs.github.io/superagent/#timeouts&#34;&gt;here&lt;/a&gt;. It is optional and, by default, is not configured.&lt;/td&gt;
&lt;td&gt;No, only changed if the Global Team or the LCDO Dev Team requires it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SUPERAGENT_RESPONSE_TIMEOUT&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of milliseconds to wait until the &lt;code&gt;superagent&lt;/code&gt; response timeout, as specified &lt;a href=&#34;https://ladjs.github.io/superagent/#timeouts&#34;&gt;here&lt;/a&gt;. It is optional and, by default, it is not configured.&lt;/td&gt;
&lt;td&gt;No, only changed if the Global Team or the LCDO Dev Team requires it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_SUPERAGENT_RETRY_ATTEMPTS&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Number of retry attempts (not counting the first attempt) to be applied on &lt;code&gt;superagent&lt;/code&gt; requests, as specified &lt;a href=&#34;https://ladjs.github.io/superagent/#retrying-requests&#34;&gt;here&lt;/a&gt;. It is optional and, by default, it is not configured.&lt;/td&gt;
&lt;td&gt;No, only changed if the Global Team or the LCDO Dev Team requires it.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_RETRIES_CODES&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string[]&lt;/td&gt;
&lt;td&gt;Array of strings with error codes. By default, [&amp;lsquo;ECONNRESET&amp;rsquo;]&lt;/td&gt;
&lt;td&gt;NO, except if requested&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AURA_VERSION&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Number of the Aura release being executed.&lt;/td&gt;
&lt;td&gt;NO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;AURA_HTTP_PATHS_LOG_DISABLED&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;HTTP paths separated by commas which requests would not be logged. By default: &lt;code&gt;aura-kpis,static-resources&lt;/code&gt;. Used in http-monkey-patcher.&lt;/td&gt;
&lt;td&gt;YES, if there is a path that is not wanted to be logged. The default values are always added to the provided list.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;DEV_AURA_BEHAVIOR_MANAGER_ACTIVE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;Flag to indicate whether or not &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt; module should be activated in the current deployment. It is only valid for development environments.&lt;/td&gt;
&lt;td&gt;YES, in development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;DEV_AURA_GROOT_BEHAVIOR_CRON_PATTERN&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Cron pattern to set the refresh time of &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt; configuration. By default, &lt;code&gt;*/5 * * * *&lt;/code&gt; (every 5 minutes).  It is only valid for development environments.&lt;/td&gt;
&lt;td&gt;YES, in development environments.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;DEV_AURA_GROOT_BEHAVIOR_MICROSOFT_AZURE_STORAGE_SETTINGS_FILE&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Name of the configuration file route used by &lt;em&gt;&lt;strong&gt;aura-behavior-manager&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;aura-groot/aura-groot-behavior-manager.json&lt;/code&gt;. It is only valid for development environments.&lt;/td&gt;
&lt;td&gt;YES, in development environments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-recognizers/intent-result-recognizers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-recognizers/intent-result-recognizers/</guid>
      <description>
        
        
        &lt;h1 id=&#34;intent-result-recognizer&#34;&gt;Intent result recognizer&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;intent-result-recognizer&lt;/strong&gt;&lt;/em&gt; in charge of registering the intent result&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;intent-result-recognizer&lt;/strong&gt;&lt;/em&gt; is the recognizer in charge of the registration of the intent result.&lt;/p&gt;
&lt;p&gt;This recognizer is executed after the execution of the middlewares and before sending a message to user. It is also in charge of registering the result of the intent in KPIs.&lt;/p&gt;
&lt;p&gt;It receives information from the skill in the following way:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;activity&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;channelData&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;payload&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;skill&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000&#34;&gt;intentResult&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000&#34;&gt;name&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000&#34;&gt;entities&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000&#34;&gt;entity&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-middlewares/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-middlewares/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot-middlewares&#34;&gt;Aura Groot middlewares&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of middlewares included in &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The current document describes the different middlewares that are part of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;init-middleware&#34;&gt;init-middleware&lt;/h2&gt;
&lt;p&gt;This middleware is in charge of setting the initial context values (&lt;code&gt;userData&lt;/code&gt; accessor, &lt;code&gt;conversationData&lt;/code&gt; accessor, &lt;code&gt;correlator&lt;/code&gt;)
for the rest of the middlewares/handlers.&lt;/p&gt;
&lt;h2 id=&#34;user-middleware&#34;&gt;user-middleware&lt;/h2&gt;
&lt;p&gt;In this middleware, the user is checked and stored in context for the following middlewares/handlers.&lt;/p&gt;
&lt;p&gt;Find detailed information in &lt;a href=&#34;../../docs/components/aura-groot/aura-groot-middlewares/user-middleware/&#34;&gt;&lt;em&gt;&lt;strong&gt;user-middleware&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; documentation.&lt;/p&gt;
&lt;h2 id=&#34;channeldata-validator-middleware&#34;&gt;channeldata-validator-middleware&lt;/h2&gt;
&lt;p&gt;This middleware validates input &lt;code&gt;channelData&lt;/code&gt; activities and throws an error if something is wrong.&lt;/p&gt;
&lt;p&gt;Find more information in &lt;a href=&#34;../../docs/components/aura-groot/aura-groot-middlewares/channeldata-validator-middleware/&#34;&gt;&lt;em&gt;&lt;strong&gt;channeldata-validator-middleware&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; documentation.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-middlewares/user-middleware/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-middlewares/user-middleware/</guid>
      <description>
        
        
        &lt;h1 id=&#34;user-middleware&#34;&gt;User middleware&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;user-middleware&lt;/strong&gt;&lt;/em&gt; in charge of the validation of the user&amp;rsquo;s data&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;user-middleware&lt;/strong&gt;&lt;/em&gt; is the middleware in charge of validating auraId and channel.&lt;/p&gt;
&lt;p&gt;This is needed in &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; because routing is currently done by channel, so if the request does not include channelId (mandatory only in &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;&lt;code&gt;channelData&lt;/code&gt; v3&lt;/a&gt;), the user must be checked in &lt;a href=&#34;../../docs/components/aura-authentication-api/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; to obtain the channel of this user.&lt;/p&gt;
&lt;p&gt;This middleware throws an error if there is not &lt;code&gt;activity.from.id&lt;/code&gt; or if some error is returned by &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;
(except &lt;code&gt;404&lt;/code&gt;, because anonymous users should continue the flow).&lt;/p&gt;
&lt;p&gt;This middleware also handles a basic user&amp;rsquo;s cache to avoid unnecessary calls to &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; with every user&amp;rsquo;s request.
This cache is implemented using bot &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-concept-state?view=azure-bot-service-4.0&#34;&gt;UserState&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot&#34;&gt;Aura Groot&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; is the router bot that manages the behavior of &lt;em&gt;&lt;strong&gt;Aura Root&lt;/strong&gt;&lt;/em&gt; ecosystem functionalities acting as a router for the request to a specific skill.&lt;br&gt;
Find in the current documents the description of this component, its architecture, components and processes.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-bullseye fa-xl&#34; style=&#34;color: #3a13fb;&#34;&gt;&lt;/i&gt; &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; component&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; is the main component in charge of handling the distributed architecture of Aura. It is responsible for the communication between each channel and its corresponding skill, keeping track of all the communication process, but introducing a minimal interference on it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; main role includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It is the component in charge of making the decision about what is the best bot to answer the user’s request and routing the request to the corresponding skill (bot).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is able to map configurable input parameters such as the channel that sent the request, user type, previous requests stored in the context, utterance, etc. with a specific domain. The OB will be able to configure the parameters used for the routing process.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Currently, routing is done only by channels or group of channels (no configuration options are available).&lt;/p&gt;
&lt;h2 id=&#34;aura-groot-components&#34;&gt;Aura Groot components&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; contains two main components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-groot/aura-groot-middlewares/&#34;&gt;Middlewares&lt;/a&gt;: software components in charge of the message flow.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-groot/aura-groot-recognizers/&#34;&gt;Recognizers&lt;/a&gt;: specific type of middlewares that are executed in a certain stage of the message flow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Access to the corresponding sections to find detailed information regarding these components.&lt;/p&gt;
&lt;h2 id=&#34;aura-groot-architecture&#34;&gt;Aura Groot architecture&lt;/h2&gt;
&lt;p&gt;The first diagram shows all the components running in &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-groot/groot-arch-diagrams-components.svg&#34; alt=&#34;Aura Groot architecture&#34;&gt;&lt;/p&gt;
&lt;p&gt;The following diagram includes the messages flow through &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-groot/groot-arch-diagrams-message-flow.svg&#34; alt=&#34;Aura Groot message flow&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-groot-configuration-and-operation&#34;&gt;Aura Groot configuration and operation&lt;/h2&gt;
&lt;p&gt;Find out the environment variables included in the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; component &lt;a href=&#34;../../docs/components/aura-groot/environment-variables/&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The operation of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; is described in the document &lt;a href=&#34;../../docs/components/aura-groot/operational-flows/&#34;&gt;Aura Groot operational flows&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;conversationid-handling&#34;&gt;ConversationId handling&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; uses &lt;code&gt;groot-channel&lt;/code&gt; conversation identifier to track the conversation with the user and the use case with the skill. It is a string generated by the channel and is unique for each conversation. The &lt;code&gt;groot-channel&lt;/code&gt; is sent in the incoming request to &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; in the &lt;code&gt;conversationId&lt;/code&gt; field of the message object.&lt;/p&gt;
&lt;p&gt;Additionally, it adds &lt;code&gt;conversationReference&lt;/code&gt; inside. In this way, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; only has to manage a single conversation and avoids synchronizing two different conversations. Doing so, accesses from &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; to the database are reduced.&lt;/p&gt;
&lt;p&gt;This change implies a modification in the process the BotFramework works with a conversation, in two different documents which are updated separately. But, on the contrary, the advantage is a most efficient and secure way of working.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
title: BEFORE-DIRE-STRAITS

    actor Channel
    participant AuraGroot #ebdff7
    participant AuraBot #ebdff7

    Channel -&amp;gt;&amp;gt; AuraGroot: request message1
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create targetSkill in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: save conversationReference in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraBot: request message1
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response message1
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: load conversationReference in groot-channel
    AuraGroot --&amp;gt;&amp;gt; Channel: response message1
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: load conversationReference in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill

    Channel -&amp;gt;&amp;gt; AuraGroot: request message2
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create targetSkill in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: save conversationReference in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraBot: request message2
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response message2
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: load conversationReference in groot-channel
    AuraGroot --&amp;gt;&amp;gt; Channel: response message2
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: load conversationReference in groot-channel
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill&lt;/pre&gt;
&lt;h2 id=&#34;aura-groot-endpoints&#34;&gt;Aura Groot endpoints&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;/api/messages/&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Incoming requests of channels or &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/refresh/&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Update skills and channels. Data: &lt;code&gt;{&amp;quot;changes&amp;quot;: [&amp;quot;skills&amp;quot;, &amp;quot;channels&amp;quot;]}&lt;/code&gt;. You can use &amp;ldquo;skills&amp;rdquo; and/or &amp;ldquo;channels&amp;rdquo; or neither of them. In the last case, all will be updated.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/api/skills/*&lt;/td&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;Endpoints of Direct Line API for skills can exchange messages with &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;. The path where the skills will return the answers is configured in the environment variable &lt;code&gt;AURA_SKILLS_RESPONSE_PATH&lt;/code&gt;, by default, &lt;code&gt;/api/skills&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/healthz&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Monitoring endpoint. Healthcheck endpoint to validate if the server is up and running, only available from local network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/shutdown&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Monitoring endpoint. Wait until shutdown (Kubernetes lifecycle).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/heapSnapshot&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Endpoint that must be called internally directly accessing to the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; pod. It stores in Aura Azure Storage Account a copy of the heap memory of the pod. It is useful to debug memory leaks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/heapStatistics&lt;/td&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;Endpoint that must be called internally directly accessing to the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; pod. It returns the heap memory statistics of the pod.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-triangle-exclamation fa-xl&#34; style=&#34;color: #f45815;&#34;&gt;&lt;/i&gt; These endpoints do not need to be defined in the plugin swagger, since they are supplied by the  &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; core. Specific routes are defined in &lt;a href=&#34;https://github.com/Telefonica/aura-distributed-bot/blob/main/master/packages/aura-groot/src/modules/server/routes.ts&#34;&gt;https://github.com/Telefonica/aura-distributed-bot/blob/main/master/packages/aura-groot/src/modules/server/routes.ts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;postman-collection&#34;&gt;Postman collection&lt;/h2&gt;
&lt;p&gt;Aura Platform Team has generated a Postman collection for simulations over Aura distributed architecture: &lt;a href=&#34;../../docs/developers-workspace/test-aura/postman-collections/distributed-postman/&#34;&gt;Aura distributed Postman collection&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-recognizers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-recognizers/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot-recognizers&#34;&gt;Aura Groot recognizers&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of recognizers included in &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The current documents describe the different recognizers that are part of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;They are listed below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/aura-bot-service/aura-groot/aura-groot-recognizers/domain-recognizers/&#34;&gt;&lt;em&gt;&lt;strong&gt;domain-recognizer&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;br&gt;
This recognizer is in charge of identifying the domain of the user&amp;rsquo;s input.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/aura-bot-service/aura-groot/aura-groot-recognizers/intent-result-recognizers/&#34;&gt;&lt;em&gt;&lt;strong&gt;intent-result-recognizer&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;br&gt;
This recognizer is in charge of registering of intent result.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/aura-assistant/development-architecture/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/aura-assistant/development-architecture/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-virtual-assistant-development-architecture-and-operation&#34;&gt;Aura Virtual Assistant development architecture and operation&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Documents from this point forward contain &lt;strong&gt;low-level technical information&lt;/strong&gt; regarding &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt;, aimed at technical profiles.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-file-lines fa-xl&#34; style=&#34;color: #0d5de7;&#34;&gt;&lt;/i&gt; We highly recommend reading these basic &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; documents first to have a clear overview of its foundation, benefits and functional behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/aura-assistant/introduction/&#34;&gt;Introduction to Aura Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/&#34;&gt;Aura Assistant functional description&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p align=&#34;left&#34;&gt;
  &lt;img width=&#34;250&#34; height=&#34;250&#34; src=&#34;../../images/technical-complex-3.png&#34;&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; architecture is conceived as a multi-bot system based on &lt;strong&gt;Microsoft skills architecture&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this framework, Aura is divided into isolated modules (skill-based bots) that, currently, are &lt;strong&gt;independent domain bots&lt;/strong&gt; able to provide a specific function or capability in a coordinated and efficient manner.&lt;/p&gt;
&lt;p&gt;These self-supported skills work with an &lt;strong&gt;orchestrator at the top&lt;/strong&gt;, responsible for connecting channels with bots and managing the conversational flow with the customer.&lt;/p&gt;
&lt;h2 id=&#34;mapping-functional-architecture-with-development-architecture&#34;&gt;Mapping functional architecture with development architecture&lt;/h2&gt;
&lt;p&gt;As explained before, &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; documentation contains both:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Low-level technical documents, aimed at not-technical profiles, that describe the functional behavior of our assistant&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;High-level technical documents, for highly-skilled technical profiles, that include detailed technical information, system architecture and technical processes&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to ease comprehension for readers, take as a basis the &lt;a href=&#34;../../docs/aura-assistant/functional-description/#aura-assistant-functional-overview&#34;&gt;Aura Virtual Assistant functional flowchart&lt;/a&gt; and check the mapping between functional and technical components.&lt;/p&gt;
&lt;table&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td colspan=&#34;2&#34;&gt;&lt;b&gt;Functional component&lt;/b&gt;&lt;/td&gt;
			&lt;td&gt;&lt;b&gt;Technical component&lt;/b&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td colspan=&#34;2&#34;&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/channels-overview/&#34;&gt;&lt;b&gt;Channel&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Channel&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td rowspan=&#34;2&#34;&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/aura-root-overview/&#34;&gt;&lt;b&gt;Aura Root&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/aura-root-overview/#routing&#34;&gt;Routing &lt;br&gt; module&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-groot/&#34;&gt;aura-groot&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/aura-root-overview/#channel-adapter&#34;&gt;Channel &lt;br&gt;adapter&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-bridge/&#34;&gt;aura-bridge&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td colspan=&#34;2&#34;&gt;&lt;a href=&#34;../../docs/aura-assistant/functional-description/skills-overview/&#34;&gt;&lt;b&gt;Skill&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;
			&lt;td&gt;Skill&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td colspan=&#34;3&#34;&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/deployment/troubleshooting/migrate-groot-context-linkinpark/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/deployment/troubleshooting/migrate-groot-context-linkinpark/</guid>
      <description>
        
        
        &lt;h1 id=&#34;migrate-aura-bot-and-aura-groot-context-to-linkin-park&#34;&gt;Migrate Aura Bot and Aura Groot context to Linkin Park&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Guidelines for the migration of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; database context schemas from releases previous to Linkin Park to Linkin Park onwards. Additionally, the rollback procedure is included.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mandatory requisite: A valid kubeconfig for the environment must be available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recommendation: Create a snapshot/backup of the current DB data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;process-for-context-db-migration&#34;&gt;Process for context DB migration&lt;/h2&gt;
&lt;h3 id=&#34;access-mongodb-console&#34;&gt;Access MongoDB console&lt;/h3&gt;
&lt;p&gt;To access and open MongoDB console we can use the &lt;code&gt;kubectl&lt;/code&gt; command below to export the intended environment, with MongoDB adminuser password. Use the right environment and database name in the commands.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DEPLOYMENT_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-br-pro-70 &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Get from kubectl get -n aura-system atlasdeployments.atlas.mongodb.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-groot-br-pro &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Set with the correct DB of your deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdatabaseusers.atlas.mongodb.com mongodb-adminuser-password -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.spec.username}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system secret mongodb-adminuser-password -o go-template&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{{ .data.password | base64decode }}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdeployments.atlas.mongodb.com &lt;span style=&#34;color:#000&#34;&gt;$ATLAS_DEPLOYMENT_NAME&lt;/span&gt; -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.status.connectionStrings.standardSrv}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|srv://|srv://&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;@|g&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl -n aura-system run fix-script -i -q --rm --restart&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;Never --image&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;mongo:latest --command mongosh &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;migrate-aura-bot-context-collection-to-new-schema&#34;&gt;Migrate aura-bot context collection to new schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update documents to the new format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.updateMany&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        document: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: &lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            eTag: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.eTag&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            conversationData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            dialogState: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$dialogState&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.dialogState&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            userData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$userData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.userData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            userAuthData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$userAuthData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.userAuthData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$unset&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;migrate-aura-groot-context-collection-to-new-schema&#34;&gt;Migrate aura-groot context collection to new schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update documents to the new format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.updateMany&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        document: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: &lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            eTag: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.eTag&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            activeSkill: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$activeSkill&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.activeSkill&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            conversationHistory: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$concatArrays&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationHistory&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationHistory&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            conversationDataProperty: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationDataProperty&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationDataProperty&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            dialogContext: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$concatArrays&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$dialogContext&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.dialogContext&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            skillConversationReference: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$skillConversationReference&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$unset&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rollback-aura-bot-to-the-previous-schema&#34;&gt;Rollback aura-bot to the previous schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If a rollback is needed, documents should be modified to have the previous schema and maintain the users&amp;rsquo; context data:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.updateMany&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            document: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              eTag: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$eTag&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              conversationData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationData&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              dialogState: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.dialogState&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$dialogState&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              userData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.userData&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$userData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              userAuthData: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.userAuthData&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$userAuthData&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$unset&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;eTag&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;conversationData&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;dialogState&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;userData&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;userAuthData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rollback-aura-groot-to-the-previous-schema&#34;&gt;Rollback aura-groot to the previous schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If a rollback is needed, documents should be modified to have the previous schema and maintain the users&amp;rsquo; context data:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.updateMany&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            document: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              eTag: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$eTag&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              activeSkill: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.activeSkill&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$activeSkill&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              conversationHistory: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$concatArrays&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationHistory&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationHistory&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              conversationDataProperty: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.conversationDataProperty&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$conversationDataProperty&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              dialogContext: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$concatArrays&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.dialogContext&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$ifNull&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$dialogContext&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[]]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              skillConversationReference: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$mergeObjects&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$skillConversationReference&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000&#34;&gt;$unset&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;eTag&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;activeSkill&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;conversationHistory&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;conversationDataProperty&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;dialogContext&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;skillConversationReference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/operational-flows/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/operational-flows/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot-operational-flows&#34;&gt;Aura Groot operational flows&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; main operational flows&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The current document includes the main operational flows in the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; component.&lt;/p&gt;
&lt;h2 id=&#34;blocked-skill&#34;&gt;Blocked skill&lt;/h2&gt;
&lt;p&gt;This flow describes the control of the messages received by &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; from the skill and the sending of the error message to the user in case the skill does not respond.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
title: BLOCKED-SKILL

    actor Channel
    participant AuraGroot #ebdff7
    participant AuraBot #ebdff7

    Channel -&amp;gt;&amp;gt; AuraGroot: request message1
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation1, begin timeout in targetSkill
    AuraGroot -&amp;gt;&amp;gt; AuraBot: request message1
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response message1
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout, update targetSkill
    AuraGroot --&amp;gt;&amp;gt; Channel: response message1
    AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill

    Channel -&amp;gt;&amp;gt; AuraGroot: request message2
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation2, begin timeout in targetSkill
    AuraGroot -&amp;gt;&amp;gt; AuraBot: request message2
    Channel --&amp;gt;&amp;gt; AuraGroot: request message3
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: control timeout (active targetSkill)

    alt timeout targetSkill &amp;lt; TIMEOUT
        AuraGroot -&amp;gt;&amp;gt; AuraBot: request message3
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response message2
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout, update targetSkill
        AuraGroot --&amp;gt;&amp;gt; Channel: response message2

        AuraBot --&amp;gt;&amp;gt; AuraGroot: response message3
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout, update targetSkill
        AuraGroot --&amp;gt;&amp;gt; Channel: response message3
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation message2
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation message3
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: discard endOfConversation in conversation2
    end

    alt timeout targetSkill &amp;gt; TIMEOUT
        AuraGroot --&amp;gt;&amp;gt; Channel: Error
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: begin timeout, in targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraBot: request message3
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response message2
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout, update targetSkill
        AuraGroot --&amp;gt;&amp;gt; Channel: response message2
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation message2
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response message3
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: discard delete timeout in targetSkill
        AuraGroot --&amp;gt;&amp;gt; Channel: response message3
        AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation message3
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: discard endOfConversation in targetSkill
    end&lt;/pre&gt;
&lt;h2 id=&#34;use-case-with-asynchronous-calls&#34;&gt;Use case with asynchronous calls&lt;/h2&gt;
&lt;p&gt;This diagram describes the flow of a user&amp;rsquo;s request that is resolved through a dialog with asynchronous calls.&lt;/p&gt;
&lt;p&gt;Further information regarding how asynchronous APIs are handled by Aura can be found in the &lt;a href=&#34;../../docs/experiences-builder/development-use-cases/bot-uc-development/build-dialog/dialog-async-api/&#34;&gt;Guidelines for building a dialog that uses async APIs&lt;/a&gt;.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
title: MESSAGE_ASYNC_USECASE
    actor User
    User -&amp;gt;&amp;gt; WA: User request
    WA -&amp;gt;&amp;gt; 4P: User request
    4P -&amp;gt;&amp;gt; AuraBridge: User request
    AuraBridge -&amp;gt;&amp;gt; 4P: 200 OK
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: User request
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: 200 OK
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation1, begin timeout in targetSkill
    AuraGroot -&amp;gt;&amp;gt; AuraSkill: User request
    AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
    AuraSkill -&amp;gt;&amp;gt; AuraSkill: basic whatsapp flow
    AuraSkill -&amp;gt;&amp;gt; LocalDialog: message
    LocalDialog -&amp;gt;&amp;gt; 4P: request async &amp;#43; callback bridge
    4P -&amp;gt;&amp;gt; LocalDialog: 200 OK
    Note right of 4P: when 4p finishes the request sends the response to the indicated callback (AuraBridge)
    4P -&amp;gt;&amp;gt; AuraBridge: response request async
    AuraBridge -&amp;gt;&amp;gt; 4P: 200 OK
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: response request async
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: 200 OK
    Note right of AuraBridge: the response is sent as payload
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: control timeout
    alt targetSkill.timeout &amp;lt; TIMEOUT
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: response request async
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraSkill -&amp;gt;&amp;gt; LocalDialog: response request async
        LocalDialog -&amp;gt;&amp;gt; LocalDialog: process response
        LocalDialog -&amp;gt;&amp;gt; AuraSkill: response processing
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: async response processed
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: response endOfConversation
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: 200 OK
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete skillConversation1
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: async response processed
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: async response processed
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: async response processed
        WA -&amp;gt;&amp;gt; User: async response processed
    else
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: error
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: async error
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: error
        WA -&amp;gt;&amp;gt; User: error
        AuraGroot -&amp;gt; AuraSkill: request async endOfConversation
        AuraGroot -&amp;gt; AuraGroot: delete skillConversation1
        AuraGroot -&amp;gt; AuraGroot: create skillConversation2, begin timeout in targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: response request async
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraSkill -&amp;gt;&amp;gt; AuraSkill: Not recognize
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: none
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: response endOfConversation
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: 200 OK
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete skillConversation2
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: none
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: none
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: none
        WA -&amp;gt;&amp;gt; User: none
    end&lt;/pre&gt;
&lt;h2 id=&#34;use-case-with-files-sending-by-the-user&#34;&gt;Use case with files sending by the user&lt;/h2&gt;
&lt;p&gt;This diagram describes the flow of a use case that includes sending a file by the user (WhatsApp channel).&lt;/p&gt;
&lt;p&gt;Further information regarding how to receive a file from the user can be found in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/recognizers/file-manager-recognizer/&#34;&gt;&lt;em&gt;&lt;strong&gt;file-manager&lt;/strong&gt;&lt;/em&gt; recognizer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/experiences-builder/development-use-cases/whatsapp-channel/whatsapp-files/#how-to-configure-a-use-case-to-receive-a-file-from-the-user&#34;&gt;How to configure a use case to receive a file from the user&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
title: MESSAGE_FILE_USECASE
    User -&amp;gt;&amp;gt; WA: Phrase to init UC file dialog
    WA -&amp;gt;&amp;gt; 4P: Phrase to init UC file dialog
    4P -&amp;gt;&amp;gt; AuraBridge:Phrase to init UC file dialog
    AuraBridge -&amp;gt;&amp;gt; 4P: 200 OK
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: Phrase to init UC file dialog
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: 200 OK
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation1, begin timeout in targetSkill
    AuraGroot -&amp;gt;&amp;gt; AuraSkill: Phrase to init UC file dialog
    AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
    AuraSkill -&amp;gt;&amp;gt; AuraSkill: Basic whatsapp flow for authenticated user
    AuraSkill -&amp;gt;&amp;gt; FileDialog: Start UC file dialog
    FileDialog -&amp;gt;&amp;gt; AuraSkill: Send me a file
    AuraSkill -&amp;gt;&amp;gt; AuraGroot:  Send me a file
    AuraGroot -&amp;gt;&amp;gt; AuraSkill: 200 OK
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout in targetSkill
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: Send me a file
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
    AuraBridge -&amp;gt;&amp;gt; 4P: Send me a file
    4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
    4P -&amp;gt;&amp;gt; WA: Send a file
    WA -&amp;gt;&amp;gt; User: Send a file
    User -&amp;gt;&amp;gt; WA: Send the attachment
    WA -&amp;gt;&amp;gt; 4P: Send the attachment
    4P -&amp;gt;&amp;gt; AuraBridge: Send the attachment
    AuraBridge -&amp;gt;&amp;gt; 4P: 200 OK
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: Send the attachment
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: 200 OK
    AuraGroot -&amp;gt;&amp;gt; AuraSkill: Send the attachment
    AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
    AuraSkill -&amp;gt;&amp;gt; FileApi: Validate / process the attachment
    FileApi -&amp;gt;&amp;gt; AuraBot: 200 OK
    FileApi -&amp;gt;&amp;gt; AuraBridge: Attachment processed, validated and ready (async-callback)
    AuraBridge -&amp;gt;&amp;gt; FileApi: 200 OK
    AuraBridge -&amp;gt;&amp;gt; AuraGroot: Send attachment processed
    AuraGroot -&amp;gt;&amp;gt; AuraBridge: 200 OK
    AuraGroot -&amp;gt;&amp;gt; AuraGroot: control timeout
    Note right of AuraSkill: we could control that it is a system message, but the case would be the same if a message from the user arrives before the asynchronous response
    alt targetSkill.timeout &amp;lt; TIMEOUT
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: Send attachment processed
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraGroot -&amp;gt;&amp;gt; FileDialog: Send attachment processed
        FileDialog -&amp;gt;&amp;gt; FileDialog: process attachment
        FileDialog -&amp;gt;&amp;gt; AuraSkill: response processed attachment
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: response processed attachment
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: response endOfConversation
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: 200 OK
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete skillConversation1
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: response processed attachment
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: response processed attachment
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: response processed attachment
        WA -&amp;gt;&amp;gt; User: response processed attachment
    else
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: error
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: async error
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: error
        WA -&amp;gt;&amp;gt; User: error
        AuraGroot -&amp;gt; AuraSkill: request endOfConversation
        AuraGroot -&amp;gt; AuraGroot: delete skillConversation1
        AuraGroot -&amp;gt; AuraGroot: create skillConversation2, begin timeout in targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: response processed attachment
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraSkill -&amp;gt;&amp;gt; AuraSkill: UnexpectedFile
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: UnexpectedFile
        AuraSkill -&amp;gt;&amp;gt; AuraGroot: response endOfConversation
        AuraGroot -&amp;gt;&amp;gt; AuraSkill: 200 OK
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
        AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete skillConversation2
        AuraGroot -&amp;gt;&amp;gt; AuraBridge: UnexpectedFile
        AuraBridge -&amp;gt;&amp;gt; AuraGroot: 200 OK
        AuraBridge -&amp;gt;&amp;gt; 4P: UnexpectedFile
        4P -&amp;gt;&amp;gt; AuraBridge: 200 OK
        4P -&amp;gt;&amp;gt; WA: UnexpectedFile
        WA -&amp;gt;&amp;gt; User: UnexpectedFile
    end&lt;/pre&gt;
&lt;h2 id=&#34;handover-use-case&#34;&gt;Handover use case&lt;/h2&gt;
&lt;p&gt;This diagram describes the flow of the handover use case.&lt;/p&gt;
&lt;p&gt;Further information regarding about handover use case &lt;a href=&#34;../../docs/components/global-use-cases/testing-use-cases/handover-genesys-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;handover-genesys&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram

title: handover
actor Channel
participant Bridge #ebdff7
participant AuraGroot #ebdff7
participant AuraBot #ebdff7
participant Genesys #ebdff7

Channel -&amp;gt;&amp;gt; AuraGroot: request message1
AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation1, begin timeout in targetSkill
AuraGroot -&amp;gt;&amp;gt; AuraBot: request message1
AuraBot --&amp;gt;&amp;gt; AuraGroot: response message1
AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout in targetSkill
AuraGroot --&amp;gt;&amp;gt; Channel: response message1
AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation
AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill
AuraBot -&amp;gt;&amp;gt; Genesys: request chat &amp;#34;init&amp;#34;
Genesys -&amp;gt;&amp;gt; AuraBot: response chat &amp;#34;init&amp;#34;
AuraBot -&amp;gt;&amp;gt; Genesys: message history
Genesys -&amp;gt;&amp;gt; AuraBot: response message history
Genesys --&amp;gt;&amp;gt; Bridge: pushNotification: starter messages with genesys

Bridge -&amp;gt;&amp;gt; AuraGroot: request message2
AuraGroot -&amp;gt;&amp;gt; AuraGroot: create skillConversation2, begin timeout in targetSkill
AuraGroot -&amp;gt;&amp;gt; AuraBot: request message2
AuraBot --&amp;gt;&amp;gt; AuraGroot: response message2
AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete timeout in targetSkill
AuraGroot --&amp;gt;&amp;gt; Bridge: response message2
Bridge --&amp;gt;&amp;gt; Channel: response message2
AuraBot --&amp;gt;&amp;gt; AuraGroot: response endOfConversation
AuraGroot -&amp;gt;&amp;gt; AuraGroot: delete targetSkill&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/deployment/troubleshooting/migrate-groot-context-direstraits/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/deployment/troubleshooting/migrate-groot-context-direstraits/</guid>
      <description>
        
        
        &lt;h1 id=&#34;migrate-aura-groot-context-dire-straits&#34;&gt;Migrate Aura Groot context (Dire Straits)&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Guidelines for the migration of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; database context schema from releases previous to Dire Straits to Dorian release onwards. Additionally, the rollback procedure is included.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mandatory requisite: A valid kubeconfig for the environment must be available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recommendation: Create a snapshot/backup of the current DB data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;process-for-context-db-migration&#34;&gt;Process for context DB migration&lt;/h2&gt;
&lt;h3 id=&#34;access-mongodb-console&#34;&gt;Access MongoDB console&lt;/h3&gt;
&lt;p&gt;To access and open MongoDB console we can use the &lt;code&gt;kubectl&lt;/code&gt; command below to export the intended environment, with MongoDB adminuser password. Use the right environment and database name in the commands.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DEPLOYMENT_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-br-pro-70 &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Get from kubectl get -n aura-system atlasdeployments.atlas.mongodb.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-groot-br-pro &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Set with the correct DB of your deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdatabaseusers.atlas.mongodb.com mongodb-adminuser-password -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.spec.username}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system secret mongodb-adminuser-password -o go-template&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{{ .data.password | base64decode }}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdeployments.atlas.mongodb.com &lt;span style=&#34;color:#000&#34;&gt;$ATLAS_DEPLOYMENT_NAME&lt;/span&gt; -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.status.connectionStrings.standardSrv}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|srv://|srv://&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;@|g&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl -n aura-system run fix-script -i -q --rm --restart&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;Never --image&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;mongo:latest --command mongosh &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;migrate-context-collection-to-new-schema&#34;&gt;Migrate context collection to new schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update documents to the new format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.aggregate&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$match&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          _id: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$regex&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/conversations/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$lookup&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            from: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            localField:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            foreignField: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            as: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$arrayElemAt&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              0,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference.document&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$merge&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check if changes have been applied. The following query should return n documents:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.find&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;({&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: &lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rollback-to-the-previous-schema&#34;&gt;Rollback to the previous schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If a rollback is needed, documents should be modified to have the previous schema and maintain the users&amp;rsquo; context data:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.aggregate&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$match&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$project&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          _id: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.activeSkill.conversationId&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          document:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          expiresAt: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$expiresAt&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$merge&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/developers-workspace/general-operation-system/migrate-groot-context/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/developers-workspace/general-operation-system/migrate-groot-context/</guid>
      <description>
        
        
        &lt;h1 id=&#34;migrate-aura-groot-context-dire-straits&#34;&gt;Migrate Aura Groot context (Dire Straits)&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Guidelines for the migration of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; database context schema from releases previous to Dire Straits to Dorian release onwards. Additionally, the rollback procedure is included.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Mandatory requisite: A valid kubeconfig for the environment must be available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recommendation: Create a snapshot/backup of the current DB data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;process-for-context-db-migration&#34;&gt;Process for context DB migration&lt;/h2&gt;
&lt;h3 id=&#34;access-mongodb-console&#34;&gt;Access MongoDB console&lt;/h3&gt;
&lt;p&gt;To access and open MongoDB console we can use the &lt;code&gt;kubectl&lt;/code&gt; command below to export the intended environment, with MongoDB adminuser password. Use the right environment and database name in the commands.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DEPLOYMENT_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-br-pro-70 &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Get from kubectl get -n aura-system atlasdeployments.atlas.mongodb.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;aura-groot-br-pro &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Set with the correct DB of your deployment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdatabaseusers.atlas.mongodb.com mongodb-adminuser-password -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.spec.username}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system secret mongodb-adminuser-password -o go-template&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{{ .data.password | base64decode }}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ &lt;span style=&#34;color:#204a87&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;kubectl get -n aura-system atlasdeployments.atlas.mongodb.com &lt;span style=&#34;color:#000&#34;&gt;$ATLAS_DEPLOYMENT_NAME&lt;/span&gt; -o &lt;span style=&#34;color:#000&#34;&gt;jsonpath&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{.status.connectionStrings.standardSrv}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt;sed &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;s|srv://|srv://&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_USER&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$MONGODB_PASSWORD&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;@|g&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ATLAS_DATABASE_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ kubectl -n aura-system run fix-script -i -q --rm --restart&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;Never --image&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;mongo:latest --command mongosh &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;MONGODB_URI&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;migrate-context-collection-to-new-schema&#34;&gt;Migrate context collection to new schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update documents to the new format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.aggregate&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$match&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          _id: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$regex&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/conversations/&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$lookup&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            from: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            localField:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            foreignField: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            as: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$arrayElemAt&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              0,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$set&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference.document&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000&#34;&gt;$merge&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check if changes have been applied. The following query should return n documents:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.find&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;({&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: &lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rollback-to-the-previous-schema&#34;&gt;Rollback to the previous schema&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If a rollback is needed, documents should be modified to have the previous schema and maintain the users&amp;rsquo; context data:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; db&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.aggregate&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$match&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.activeSkill.conversationId&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;document.skillConversationReference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000&#34;&gt;$exists&lt;/span&gt;: true,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$project&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          _id: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.activeSkill.conversationId&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          document:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$document&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;.skillConversationReference&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          expiresAt: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$expiresAt&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000&#34;&gt;$merge&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;aura-context&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-groot/aura-groot-databases/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-groot/aura-groot-databases/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-groot-databases&#34;&gt;Aura Groot databases&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of databases used by Aura Groot&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Currently, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; uses two databases, described below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mongo DB&lt;/li&gt;
&lt;li&gt;Redis + MongoDB&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;mongodb&#34;&gt;MongoDB&lt;/h2&gt;
&lt;p&gt;In order to reuse the code and clarify the development, all classes related with MongoDB storage are stored in the &lt;a href=&#34;https://github.com/Telefonica/aura-bot-common/blob/master/src/storage/mongodb-storage.ts&#34;&gt;&lt;code&gt;mongodb-storage.ts&lt;/code&gt;&lt;/a&gt; file within &lt;code&gt;aura-bot-common&lt;/code&gt; repository.&lt;/p&gt;
&lt;h3 id=&#34;mongodbstorage&#34;&gt;MongoDbStorage&lt;/h3&gt;
&lt;p&gt;This storage class will be used by &lt;strong&gt;Bot Builder v4&lt;/strong&gt; to store the conversation and user&amp;rsquo;s data. An index is created to delete documents older than 24 hours (specified by config var &lt;code&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT_INDEX_TTL&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;The following &lt;a href=&#34;../../docs/components/aura-groot/environment-variables/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/a&gt; are used to initialize this class:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Var name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Required/Optional&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_DATABASE&lt;/td&gt;
&lt;td&gt;Database name where the documents will be stored&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT&lt;/td&gt;
&lt;td&gt;Collection name where the documents will be stored&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT_INDEX_TTL&lt;/td&gt;
&lt;td&gt;Duration (in seconds) for which the documents will exist without updates before being deleted. By default, &lt;code&gt;86440&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;To create and initialize a &lt;code&gt;MongoDbStorage&lt;/code&gt;, a code like the following below could be used:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;storage&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;MongoDbStorage&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;create&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;AURA_MONGODB_BOT_DATABASE&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;this&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ConfigurationManager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;get&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;AURA_MONGODB_BOT_COLLECTION_CONTEXT_INDEX_TTL&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;aura-groot-cache-module&#34;&gt;Aura Groot cache module&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;aura groot cache module&lt;/strong&gt;&lt;/em&gt; allows the generation of different types of cache:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MetricCache&lt;/code&gt;: used for remote and local data. Is a TwoLevelsCache.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;how-to-use-cache-module&#34;&gt;How to use cache module&lt;/h4&gt;
&lt;p&gt;This cache stores the timestamp when a request from the channel arrives at the &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and is retrieved after the skill&amp;rsquo;s response to calculate the duration in the KPI &lt;code&gt;GrootMessageEntity&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;variables-for-auragrootcache&#34;&gt;Variables for AuraGrootCache&lt;/h4&gt;
&lt;p&gt;The following &lt;a href=&#34;../../docs/components/aura-groot/environment-variables/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/a&gt; are used to initialize this class:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Var name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Required/Optional&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_DATABASE&lt;/td&gt;
&lt;td&gt;Database name where the documents will be stored&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_CACHE_METRIC_COLLECTION&lt;/td&gt;
&lt;td&gt;Collection name where the documents will be stored. By default, &lt;code&gt;metric-cache&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_CACHE_METRIC_TTL&lt;/td&gt;
&lt;td&gt;Duration (in seconds) for which the documents will exist in local cache before being deleted. By default, &lt;code&gt;60&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_CACHE_METRIC_INDEX&lt;/td&gt;
&lt;td&gt;Index used in TwoLevelsCache of &lt;em&gt;&lt;strong&gt;metric-cache&lt;/strong&gt;&lt;/em&gt;. By default, &lt;code&gt;correlator&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Example of data storage:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;_id&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;64d0e9608a473f63c8bda87b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;correlator&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;6eea808b-30f8-4358-9859-cd42892a962b&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;data&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2339137&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;419794024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;lastAccess&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2023-08-07T12:53:52.370Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;redis--mongodb&#34;&gt;Redis + MongoDB&lt;/h2&gt;
&lt;p&gt;If the configuration variable &lt;code&gt;AURA_BOT_CONTEXT_DATABASE&lt;/code&gt; is set to &lt;code&gt;REDIS-MONGODB&lt;/code&gt;, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; uses a two-level cache to store the context &lt;a href=&#34;../../docs/components/aura-redis-mongo-sync/&#34;&gt;Aura Redis Mongo Sync&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following environment variables must be set for the two databases.&lt;/p&gt;
&lt;h3 id=&#34;variables&#34;&gt;Variables&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Var name&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Required/Optional&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_COLLECTION_CONTEXT&lt;/td&gt;
&lt;td&gt;Name of the collection where the context is stored. By default: &lt;code&gt;aura-context&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_BOT_DATABASE&lt;/td&gt;
&lt;td&gt;Name of the database where the bot collections are stored. By default: &lt;code&gt;aura-bot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_PASSWORD&lt;/td&gt;
&lt;td&gt;Password of the MongoDB. Required&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_POOL_SIZE&lt;/td&gt;
&lt;td&gt;Pool size of the MongoDB. By default: &lt;code&gt;60&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_SSL&lt;/td&gt;
&lt;td&gt;Boolean value indicating if MongoDB connection uses SSL or not. By default: &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_URI&lt;/td&gt;
&lt;td&gt;URI of the MongoDB&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_MONGODB_USERNAME&lt;/td&gt;
&lt;td&gt;Username of the MongoDB&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONFIGURATION_PREFIX&lt;/td&gt;
&lt;td&gt;Prefix for Redis configuration keys. By default: &lt;code&gt;aura-config:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONTEXT_CACHE_PREFIX&lt;/td&gt;
&lt;td&gt;Prefix for Redis context cache keys. By default: &lt;code&gt;context:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONTEXT_CACHE_SHADOW_KEY_PREFIX&lt;/td&gt;
&lt;td&gt;Prefix for Redis shadow key cache keys. By default: &lt;code&gt;shadow-key:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONTEXT_CACHE_ACTIVE_CONTEXT_PREFIX&lt;/td&gt;
&lt;td&gt;Prefix for Redis active context cache keys. By default: &lt;code&gt;active-context:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/td&gt;
&lt;td&gt;Number of shards to generate lists for storing unprocessed context.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONTEXT_CACHE_TTL&lt;/td&gt;
&lt;td&gt;Time in seconds to store a context in cache. By default: &lt;code&gt;60&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_MODE&lt;/td&gt;
&lt;td&gt;Mode of Redis distribution (&lt;code&gt;Cluster&lt;/code&gt;, &lt;code&gt;Sentinel&lt;/code&gt; or &lt;code&gt;Single&lt;/code&gt;). By default: &lt;code&gt;Single&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_PREFIX&lt;/td&gt;
&lt;td&gt;Prefix that will be used by all redis keys when using redis-connector. This allow mixing in a single redis service messages coming from different environments in the same Azure subscription.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_SENTINEL_INSTANCE_NAME&lt;/td&gt;
&lt;td&gt;Name of the Redis instance. Use in sentinel mode.&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_HOSTS&lt;/td&gt;
&lt;td&gt;A string with list of nodes (host:port) separate by comma. For example: &amp;ldquo;localhost:port,localhost2:port2&amp;rdquo;. Default: &amp;lsquo;127.0.0.0:6379&amp;rsquo;&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_DATABASE Database number for &lt;code&gt;Single&lt;/code&gt; or &lt;code&gt;Sentinel&lt;/code&gt; mode. By default: &lt;code&gt;0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_PASSWORD&lt;/td&gt;
&lt;td&gt;A string with the password of Redis.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_MAX_RECONNECT_RETRIES&lt;/td&gt;
&lt;td&gt;Number of retries to connect to Redis. By default: &lt;code&gt;25&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_MAX_RECONNECT_INTERVAL&lt;/td&gt;
&lt;td&gt;Time in milliseconds to wait before reconnecting to Redis. By default: &lt;code&gt;5000&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_USE_CONNECTION_POOL&lt;/td&gt;
&lt;td&gt;Used connection pool for Redis connections. Default: &lt;code&gt;true&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONNECTION_POOL_MIN&lt;/td&gt;
&lt;td&gt;Minimum number of connections in the pool. Default: &lt;code&gt;2&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_REDIS_CONNECTION_POOL_MAX&lt;/td&gt;
&lt;td&gt;Maximum number of connections in the pool. Default: &lt;code&gt;100&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-microfrontend-base/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-microfrontend-base/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-microfrontend-base&#34;&gt;Aura microfrontend base&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of &lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt;, foundational component for the development of user interfaces in Aura ecosystem&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-bullseye fa-xl&#34; style=&#34;color: #3a13fb;&#34;&gt;&lt;/i&gt; &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; component&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; is a foundational component that provides a common structure and libraries for the development of user interfaces in Aura ecosystem (&lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Its microfrontend component is a small, self-contained element that is part of a larger microfrontend architecture. It follows the same principles as microservices, but for the frontend, allowing independent development, deployment and scaling of different parts of a web application.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-triangle-exclamation fa-xl&#34; style=&#34;color: #f45815;&#34;&gt;&lt;/i&gt; As defined before, this is a base component over which certain interfaces will be developed, but it will not be directly productized.&lt;/p&gt;
&lt;h2 id=&#34;technical-foundations&#34;&gt;Technical foundations&lt;/h2&gt;
&lt;p&gt;This is a &lt;a href=&#34;https://nextjs.org/&#34;&gt;Next.js&lt;/a&gt; project bootstrapped with &lt;a href=&#34;https://nextjs.org/docs/app/api-reference/cli/create-next-app&#34;&gt;create-next-app&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The project leverages the following technologies and tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;React&lt;/strong&gt;: A JavaScript library for building user interfaces, used as the core framework for component development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@telefonica/mistica&lt;/strong&gt;: A design system and component library that provides a set of reusable UI components and styles, ensuring consistency and best practices in UI development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;: A utility-first CSS framework for styling components and layouts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;: A strongly typed programming language that builds on JavaScript, ensuring type safety and better developer experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microfrontend Architecture&lt;/strong&gt;: Enables independent development, deployment, and scaling of frontend components.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic Imports&lt;/strong&gt;: Used to load microfrontend components at runtime, improving modularity and performance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment Variables&lt;/strong&gt;: Configuration is managed through environment variables like &lt;code&gt;AURA_SITE_CONFIG_PATH&lt;/code&gt; to ensure flexibility and adaptability across environments.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These foundations ensure scalability, maintainability, and a seamless developer experience.&lt;/p&gt;
&lt;h2 id=&#34;architecture-and-components&#34;&gt;Architecture and components&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; is composed of two main components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Core Framework&lt;/strong&gt;: The foundational Next.js structure that handles routing, rendering, and component lifecycle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic Component Loader&lt;/strong&gt;: The system responsible for loading and rendering components based on the site configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;basic-architecture-diagram&#34;&gt;Basic architecture diagram&lt;/h3&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    participant Project as user request
    participant Config as site-config.json
    participant Pages as Page Manager
    participant Layout as Layout Engine
    participant ComponentLoader as Component Loader
    participant DOM as Browser DOM

    Project-&amp;gt;&amp;gt;Config: read site configuration
    Config--&amp;gt;&amp;gt;Project: return site structure
    
    Note over Project: site path or default page
    Project-&amp;gt;&amp;gt;Pages: setup page routes from config
    
    Pages-&amp;gt;&amp;gt;Layout: process page layout configuration
    
    Layout-&amp;gt;&amp;gt;Layout: setup container with containerClass
    Layout-&amp;gt;&amp;gt;Layout: create grid with gridClass
    
    Note over Layout: process components by position
    
    loop for each component
        Layout-&amp;gt;&amp;gt;ComponentLoader: request component by importType
        
        alt importType is &amp;#34;internal&amp;#34;
            ComponentLoader-&amp;gt;&amp;gt;ComponentLoader: load from local components folder
        else importType is &amp;#34;external&amp;#34;
            ComponentLoader-&amp;gt;&amp;gt;ComponentLoader: load from library dependency
        else importType is &amp;#34;microfrontend&amp;#34;
            ComponentLoader-&amp;gt;&amp;gt;ComponentLoader: load dynamically from remote source
        end
        
        ComponentLoader--&amp;gt;&amp;gt;Layout: Return component
        Layout-&amp;gt;&amp;gt;Layout: Apply className and position
        Layout-&amp;gt;&amp;gt;Layout: Inject attributes and props
        Layout-&amp;gt;&amp;gt;DOM: Render component in grid position
        DOM--&amp;gt;&amp;gt;Layout: Component rendered
    end
    
    Layout--&amp;gt;&amp;gt;Pages: Page layout rendered

    
    Pages--&amp;gt;&amp;gt;Project: page configured and route ready
    Project-&amp;gt;&amp;gt;Project: start listening for navigation&lt;/pre&gt;
&lt;h3 id=&#34;server-features&#34;&gt;Server features&lt;/h3&gt;
&lt;p&gt;The server component of &lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; provides:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dynamic Routing: Routes are generated based on the configuration file and mapped to corresponding components.&lt;/li&gt;
&lt;li&gt;Server-Side Rendering (SSR): Components can be rendered on the server for improved performance and SEO.&lt;/li&gt;
&lt;li&gt;API Integration: Built-in capabilities for connecting to backend services and APIs.&lt;/li&gt;
&lt;li&gt;Environment Variable Management: Configuration is handled through environment variables for different deployment environments.&lt;/li&gt;
&lt;li&gt;Development Server: Local development environment with hot-reloading for a smooth development experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;AURA_SITE_CONFIG_PATH&lt;/code&gt; environment variable must be set to point to your project&amp;rsquo;s configuration file, as in the example below:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AURA_SITE_CONFIG_PATH=site-config.json npm run dev&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; configuration file must be a valid JSON that defines the structure of the site, including the layout of the pages and the components to render.&lt;/p&gt;
&lt;p&gt;The configuration file must follow this structure:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;mainPage&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;home&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;pages&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;home&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Home&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;/home&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;layout&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;containerClass&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;min-h-screen flex flex-col container mx-auto&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;gridClass&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;grid grid-cols-1 grid-rows-[200px_1fr] flex-1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;components&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;library&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;@telefonica/example-library&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;componentName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Header&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;position&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;importType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;external&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;className&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;col-span-2 row-span-1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;componentName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;TestComponent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;position&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;importType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;internal&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;className&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;h-full col-span-1 row-span-2&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;componentName&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;TestPlugin&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;position&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;importType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;microfrontend&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;className&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;h-full col-span-1 row-span-2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;attributes&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;API_ENDPOINT&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;${AURA_MICROFRONTENDS_SERVER_HOST}/api/plugin-test&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;REFRESH_INTERVAL&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;configuration-fields&#34;&gt;Configuration fields&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mainPage&lt;/code&gt;: Default page ID to load when accessing the root path&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pages&lt;/code&gt;: Array of page configurations
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;id&lt;/code&gt;: Unique identifier for the page&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Display name of the page&lt;/li&gt;
&lt;li&gt;&lt;code&gt;path&lt;/code&gt;: URL path for the page&lt;/li&gt;
&lt;li&gt;&lt;code&gt;layout&lt;/code&gt;: Container configuration
- &lt;code&gt;containerClass&lt;/code&gt;: Tailwind classes for the main container
- &lt;code&gt;gridClass&lt;/code&gt;: Tailwind classes for the grid layout
- &lt;code&gt;components&lt;/code&gt;: Array of component configurations
- &lt;code&gt;library&lt;/code&gt;: (Optional) External library name
- &lt;code&gt;componentName&lt;/code&gt;: Name of the component to render
- &lt;code&gt;position&lt;/code&gt;: Order in the layout
- &lt;code&gt;importType&lt;/code&gt;: Type of component (internal, external, or microfrontend)
- &lt;code&gt;internal&lt;/code&gt;: Components that are part of the current project and are located in the components directory
- &lt;code&gt;external&lt;/code&gt;: Components from external libraries (like @telefonica packages) that are installed as dependencies
- &lt;code&gt;microfrontend&lt;/code&gt;: Components that are loaded dynamically from a remote server, allowing for runtime integration of independent applications
- &lt;code&gt;className&lt;/code&gt;: Tailwind classes for the component
- &lt;code&gt;attributes&lt;/code&gt;: (Optional) Additional component properties&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;technical-guidelines&#34;&gt;Technical guidelines&lt;/h2&gt;
&lt;p&gt;Guides to manage the &lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; component:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-manager/blob/master/packages/aura-mf-base/README.md&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-microfrontend-base&lt;/strong&gt;&lt;/em&gt; Readme&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-manager/blob/master/packages/aura-mf-base/doc/add-components.md&#34;&gt;How to add a new component to use in your project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-manager/blob/master/packages/aura-mf-base/doc/add-providers.md&#34;&gt;How to add a new provider to use in your project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-manager/blob/master/packages/aura-mf-base/doc/correlator.md&#34;&gt;Correlator Implementation in the Project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
  </channel>
</rss>
