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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;DRAFT DOCUMENT&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This document summarizes the &lt;strong&gt;core technologies&lt;/strong&gt; used in both &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;, that support their different functionalities and services&lt;/p&gt;
&lt;p&gt;Other technologies used for specific issues are referenced in the corresponding documentation&lt;/p&gt;

&lt;/div&gt;

&lt;div class=&#34;td-card-group card-group p-0 mb-4&#34;&gt;

&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Aura deployment&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-rocket&#34;&gt;&lt;/i&gt; Aura is deployed in &lt;a href=&#34;https://azure.microsoft.com/en-us/&#34;&gt;Microsoft Azure&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-rocket&#34;&gt;&lt;/i&gt; Components packaging is done using &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt; &lt;br&gt;
&lt;i class=&#34;fa-solid fa-rocket&#34;&gt;&lt;/i&gt; Deployment is hosted on &lt;a href=&#34;https://kubernetes.io/&#34;&gt;Azure Kubernetes&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-rocket&#34;&gt;&lt;/i&gt; Deployment is orchestrated using &lt;a href=&#34;https://www.ansible.com/&#34;&gt;Ansible&lt;/a&gt;&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Security and privacy&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-lock&#34;&gt;&lt;/i&gt; Aura ensures compliance with &lt;a href=&#34;https://gdpr-info.eu/&#34;&gt;GDPR regulations&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-lock&#34;&gt;&lt;/i&gt; Aura installer relies in &lt;b&gt;Python security practices&lt;/b&gt;&lt;br&gt; 
&lt;i class=&#34;fa-solid fa-lock&#34;&gt;&lt;/i&gt; The use of &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/overview&#34;&gt;ARM templates&lt;/a&gt; enhance security of our Azure resources
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Operational foundations&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fab fa-windows&#34;&gt;&lt;/i&gt; Aura Virtual Assistant is based on &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/bot-service/skills-conceptual?view=azure-bot-service-4.0&#34;&gt;Microsoft Bot skills architecture&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fab fa-windows&#34;&gt;&lt;/i&gt; Aura Bot is built over &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-basics?view=azure-bot-service-4.0&#34;&gt;Microsoft BotFramework&lt;/a&gt;&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;/div&gt;

&lt;div class=&#34;td-card-group card-group p-0 mb-4&#34;&gt;

&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Data management&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-database&#34;&gt;&lt;/i&gt; We use &lt;a href=&#34;https://www.mongodb.com/&#34;&gt;MongoDB&lt;/a&gt; and &lt;a href=&#34;https://redis.io/&#34;&gt;Redis&lt;/a&gt; as service databases &lt;br&gt;
&lt;i class=&#34;fa-solid fa-database&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://www.databricks.com/&#34;&gt;Databricks&lt;/a&gt; handles the optimization of data processing&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Languages&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-code&#34;&gt;&lt;/i&gt; Aura backend is developed using &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;Typescript&lt;/a&gt; and &lt;a href=&#34;https://www.python.org/&#34;&gt;Python&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-code&#34;&gt;&lt;/i&gt; iOS development is based on &lt;a href=&#34;https://developer.apple.com/swift/&#34;&gt;Swift&lt;/a&gt;  &lt;br&gt;
&lt;i class=&#34;fa-solid fa-code&#34;&gt;&lt;/i&gt; Certain scripts are made with &lt;a href=&#34;https://www.gnu.org/software/bash/&#34;&gt;Bash&lt;/a&gt; &lt;br&gt;
&lt;i class=&#34;fa-solid fa-code&#34;&gt;&lt;/i&gt; ATRIA aura-manager web interface is built with &lt;a href=&#34;https://react.dev/&#34;&gt;React and &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;Typescript&lt;/a&gt;&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Monitoring tools&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-chart-line&#34;&gt;&lt;/i&gt; Aura metrics are generated in &lt;a href=&#34;https://prometheus.io/&#34;&gt;Prometheus&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-chart-line&#34;&gt;&lt;/i&gt; Aura monitoring stack includes &lt;a href=&#34;https://www.elastic.co/elasticsearch&#34;&gt;Elasticsearch&lt;/a&gt;, &lt;a href=&#34;https://grafana.com/&#34;&gt;Grafana&lt;/a&gt; and &lt;a href=&#34;https://www.elastic.co/kibana&#34;&gt;Kibana&lt;/a&gt; &lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;/div&gt;

&lt;div class=&#34;td-card-group card-group p-0 mb-4&#34;&gt;

&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Testing tools&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
Functional tests implemented in Python using: &lt;br&gt; &lt;i class=&#34;fa-solid fa-check-to-slot&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://github.com/Telefonica/toolium&#34;&gt;Toolium&lt;/a&gt; &lt;br&gt; &lt;i class=&#34;fa-solid fa-check-to-slot&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://behave.readthedocs.io/&#34;&gt;Behave&lt;/a&gt; &lt;br&gt; &lt;i class=&#34;fa-solid fa-check-to-slot&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://selenium-python.readthedocs.io/&#34;&gt;Selenium&lt;/a&gt; &lt;br&gt; &lt;i class=&#34;fa-solid fa-check-to-slot&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://appium.io/&#34;&gt;Appium&lt;/a&gt;&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;AI-driven technologies&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-brain&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=global-standard%2Cstandard-chat-completions&#34;&gt; Azure OpenAI: Embeddings, GPT models &lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-brain&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://huggingface.co/models&#34;&gt; Hugging Face models &lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-brain&#34;&gt;&lt;/i&gt; &lt;a href=&#34;https://learn.microsoft.com/en-us/azure/ai-services/language-service/conversational-language-understanding/&#34;&gt; Microsoft Conversational Language Understanding (CLU)  &lt;/a&gt;&lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;


&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      &lt;h4&gt;Releases management&lt;/h4&gt;
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;p class=&#34;card-text&#34;&gt;
        
&lt;i class=&#34;fa-solid fa-code-branch&#34;&gt;&lt;/i&gt; We apply the Release Train Manager methodology&lt;br&gt;
&lt;i class=&#34;fa-solid fa-code-branch&#34;&gt;&lt;/i&gt; Github &lt;a href=&#34;https://github.com/Telefonica&#34;&gt; is used as the orchestrator for the RTM&lt;/a&gt;&lt;br&gt;
&lt;i class=&#34;fa-solid fa-code-branch&#34;&gt;&lt;/i&gt; All our CI processes run in &lt;a href=&#34;https://www.jenkins.io/&#34;&gt;Jenkins&lt;/a&gt; &lt;br&gt;
&lt;br/&gt;
&lt;/p&gt;
      &lt;/div&gt;
  &lt;/div&gt;



&lt;/div&gt;


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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is Aura&amp;rsquo;s neuronal network in charge of core features in &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&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-bot&lt;/strong&gt;&lt;/em&gt; is an HTTP server, based on &lt;strong&gt;Microsoft Bot Framework&lt;/strong&gt;. It is built in Typescript using the &lt;code&gt;node.js&lt;/code&gt; SDK of Bot Framework. As an HTTP server, it uses &lt;strong&gt;Express.js&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is Aura&amp;rsquo;s neuronal network, where it can be considered as a Bot Development Platform itself. In the recent distributed architecture, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is the only skill on the system that handles all requests, although the new entry point to the system is now the root bot called &lt;a href=&#34;../../docs/components/aura-groot/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;, that redirects all requests to the only skill in order to access Aura through diverse communication channels 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;The following flowchart shows the complete conversational process executed by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-bot/full-flows-full-blocks.svg&#34; alt=&#34;Aura Bot conversational process&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-functionalities&#34;&gt;Aura Bot functionalities&lt;/h2&gt;
&lt;p&gt;The main functionalities in charge of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; are &lt;strong&gt;users&amp;rsquo; sign up&lt;/strong&gt;, &lt;strong&gt;authentication validation process&lt;/strong&gt; and &lt;strong&gt;conversational process&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Apart from them, there are other processes managed by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; that can be executed in order to customize the bot, activate other components, etc.&lt;/p&gt;
&lt;p&gt;Find here all the information related to &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-processes/&#34;&gt;Aura Bot processes&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-components&#34;&gt;Aura Bot components&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; components can be classified into different categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aura Bot Platform components, which are components &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; has as a BotFramework bot: dialogs, middlewares, recognizers, Bot framework adapter, Activity Handler, etc.&lt;/li&gt;
&lt;li&gt;Other components that have been developed within &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; to provide it with a specific functionality, such as plugin manager or routing manager.&lt;/li&gt;
&lt;li&gt;Moreover, the databases used by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Find detailed information of all of them in &lt;a href=&#34;../../docs/components/aura-bot-platform/aura-bot-components/&#34;&gt;Aura Bot components&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-platform-repository&#34;&gt;Aura Bot Platform repository&lt;/h2&gt;
&lt;p&gt;The repository &lt;a href=&#34;https://github.com/Telefonica/aura-bot-platform&#34;&gt;aura-bot-platform&lt;/a&gt; has a folder layout inside the &lt;em&gt;src&lt;/em&gt; folder, to organize the code according to functionality groups.&lt;/p&gt;
&lt;p&gt;In the &lt;em&gt;src&lt;/em&gt; root folder, only main files should be placed, such as &lt;code&gt;index.ts&lt;/code&gt;, or main server file &lt;code&gt;server.ts&lt;/code&gt; (it was &lt;code&gt;app.ts&lt;/code&gt; in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;).&lt;/p&gt;
&lt;h3 id=&#34;srcbots&#34;&gt;src/bots&lt;/h3&gt;
&lt;p&gt;At the beginning, only the file &lt;code&gt;aura-bot.ts&lt;/code&gt; is hold here, that is the main &lt;code&gt;ActivityHandler&lt;/code&gt; (a kind of replace of previous &lt;code&gt;UniversalBot&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;In a near future, more Bot Builder adapters could be located here.&lt;/p&gt;
&lt;h3 id=&#34;srcconfig&#34;&gt;src/config&lt;/h3&gt;
&lt;p&gt;This folder contains files that load configurations and that are required in other places, such as channel configuration, environment variables, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcdb&#34;&gt;src/db&lt;/h3&gt;
&lt;p&gt;This folder contains files that manage and connect to databases, such as MongoDB.&lt;/p&gt;
&lt;h3 id=&#34;srcevents&#34;&gt;src/events&lt;/h3&gt;
&lt;p&gt;The files handling events (such as &lt;code&gt;ModuleObserver&lt;/code&gt; subclasses) should be placed in this folder.&lt;/p&gt;
&lt;h3 id=&#34;srcdialogs&#34;&gt;src/dialogs&lt;/h3&gt;
&lt;p&gt;This folder contains the &lt;em&gt;&lt;strong&gt;main&lt;/strong&gt;&lt;/em&gt; dialog (&lt;code&gt;main.ts&lt;/code&gt;) and custom prompts, as use case dialogs will be located in libraries, loaded as dependencies.&lt;/p&gt;
&lt;h3 id=&#34;srcmake&#34;&gt;src/make&lt;/h3&gt;
&lt;p&gt;This folder contains the code related with joining all the library-specific data with global one during the make-up process.&lt;/p&gt;
&lt;h3 id=&#34;srcmiddlewares&#34;&gt;src/middlewares&lt;/h3&gt;
&lt;p&gt;This folder contains abstract middleware base classes, and specific middleware implementation (final classes).&lt;/p&gt;
&lt;h3 id=&#34;srcmiddlewaresrecognizers&#34;&gt;src/middlewares/recognizers&lt;/h3&gt;
&lt;p&gt;This folder contains all the recognizers, such as NLP recognizer, Aura Command recognizer, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcmodels&#34;&gt;src/models&lt;/h3&gt;
&lt;p&gt;Files located within this folder will have exported types and interfaces required in different parts of the code (types and interfaces required only within a file could be self contained).&lt;/p&gt;
&lt;h3 id=&#34;srcmodules&#34;&gt;src/modules&lt;/h3&gt;
&lt;p&gt;This folder contains independent code blocks, that could be exported as a reusable packages if required in different components, such as cache manager, locale manager, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcplugin&#34;&gt;src/plugin&lt;/h3&gt;
&lt;p&gt;This folder contains the modules in charge of loading plugins: charging dialogs, middlewares, delivery configuration for these components, etc.&lt;/p&gt;
&lt;h3 id=&#34;srcrouting&#34;&gt;src/routing&lt;/h3&gt;
&lt;p&gt;This folder contains the code related with intent-to-dialog routing, as this is not part of Bot Builder anymore.&lt;/p&gt;
&lt;h3 id=&#34;srcutils&#34;&gt;src/utils&lt;/h3&gt;
&lt;p&gt;This folder contains utility classes and methods that are not part or any other block. We should maintain this folder organized and tidy, to avoid lots of unspecific files.&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-bridge/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-bridge/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-bridge&#34;&gt;Aura Bridge&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; is the component in charge of the communication protocol between &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and certain external channels that cannot implement the Direct Line protocol.  &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-to-aura-bridge&#34;&gt;Introduction to Aura Bridge&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; is the component of Aura in charge of adapting the communication protocol, both message format and API calls, between &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and certain external channels, such as Whatsapp, that cannot implement Direct Line protocol (&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; native language). It is designed to be extensible, i.e., if any other external channel needs to be integrated with &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;, a new adapter for this channel might be added easily to the bridge.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; is built as a set of configurable plugins that are deployed on top of &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; core. Each plugin consists of an OpenAPI definition, a controller, a request handler and a converter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-bridge/aura-bridge-flowchart.png&#34; alt=&#34;Basic bridge modules&#34;&gt;&lt;/p&gt;
&lt;p&gt;Regarding its implementation, the following technologies are used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programming language: &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;Typescript 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nodejs engine: &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;nodejs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Message caches: Redis&lt;/li&gt;
&lt;li&gt;Server: expressjs&lt;/li&gt;
&lt;li&gt;API definition:  It is &lt;a href=&#34;https://swagger.io/resources/articles/adopting-an-api-first-approach/#:~:text=An%20API%2Dfirst%20approach%20means,be%20consumed%20by%20client%20applications&#34;&gt;api-first designed&lt;/a&gt;, using &lt;a href=&#34;https://swagger.io/specification/&#34;&gt;OpenAPI v3&lt;/a&gt; to provide the API definition.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; is divided into two sub-components from the logical point of view, where &lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; is a component which shares the same logical implementation as &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;, with the main distinction lying in the differences in its configuration, which implies a deployment specialization:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Component in charge of adapting the communication &lt;strong&gt;from&lt;/strong&gt; the channel: &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;  &lt;br&gt;
Channel communication protocol &amp;#x27a1;&amp;#xfe0f; Direct Line protocol&lt;/li&gt;
&lt;li&gt;Component in charge of adapting the communication &lt;strong&gt;to&lt;/strong&gt; the channel: &lt;a href=&#34;../../docs/components/aura-bridge/#aura-bridge-outbound&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;br&gt;
Direct Line protocol &amp;#x27a1;&amp;#xfe0f; Channel communication protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; documentation is included in different sections, depending on its scope:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; descriptive documentation and internal processes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bridge/bridge-architecture/&#34;&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bridge/bridge-components/&#34;&gt;Main components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bridge/environment-variables/&#34;&gt;Configuration: environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bridge/aura-bridge-processes/&#34;&gt;Key functionalities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-bridge/api-definition/&#34;&gt;API definition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Practical processes that OBs can carry out over &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/developers-workspace/develop-features/bridge-generate-new-plugin/&#34;&gt;Development of a plugin and activation in Aura bridge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/developers-workspace/test-aura/postman-collections/bridge-postman/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; Postman collection&lt;/a&gt; for making simulations in &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;communication-protocol&#34;&gt;Communication protocol&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; communication protocol is completely asynchronous, this means that the answer of a request is not included in the HTTP response related to the request, but it is sent as a new HTTP request to the callback configured for each channel. For internal channels, the default callback is Direct Line, but for external channels, the callback is &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;But, following the same asynchronous approach in &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;, it must be defined a callback for each channel, too. Therefore, channels connected to &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; must be able to handle asynchronous HTTP communication.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/basic-bridge-flow.png&#34; alt=&#34;Bridge flow&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-bridge-limitations-for-whatsapp-channels&#34;&gt;Aura bridge limitations for Whatsapp channels&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Facebook does not have Service-Level Agreements (SLA) in their APIs, thus messages managed by &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; could suffer delay in their response times.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If no ACK is received for the message sent, &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; will wait until &lt;code&gt;AURA_QUEUE_MANAGER_SENT_MESSAGE_TTL&lt;/code&gt; (in milliseconds) is met and this could cause a delay in the next message response.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If an ACK is received, it can have the following statues:&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-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enum&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;StatusType&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:#8f5902;font-style:italic&#34;&gt;// Message the user sent to your business was deleted by the user.
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Deleted&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;deleted&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:#8f5902;font-style:italic&#34;&gt;// Message sent by your business was delivered to the user&amp;#39;s device
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Delivered&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;delivered&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:#8f5902;font-style:italic&#34;&gt;// Message sent by your business failed to send
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Failed&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;failed&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:#8f5902;font-style:italic&#34;&gt;// Message sent by your business was read by the user
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Read&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;read&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:#8f5902;font-style:italic&#34;&gt;// Message sent by your business was received by the server
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Sent&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;sent&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:#8f5902;font-style:italic&#34;&gt;// Indicates an item in a catalog is not available or does not exist.
&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:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;Warning&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;warning&amp;#39;&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;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each one of this states is obtained through a new ACK, and by rule we receive from one to two, but this may change due to its dependency with &lt;em&gt;&lt;strong&gt;WhatsApp Business API&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;aura-bridge-outbound&#34;&gt;Aura bridge outbound&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; is a component which shares the same logical implementation as &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;, with the main distinction lying in the differences in its configuration, which implies a deployment specialization.&lt;/p&gt;
&lt;p&gt;Its main mission is focused on returning the responses of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; to the users and leveraging load for &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; share the same make-up process. Further information in &lt;a href=&#34;../../docs/developers-workspace/general-operation-system/aura-make-up/bridge-make-up/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; make-up&lt;/a&gt;&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 &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; work together, the configuration of both components must be consistent. Further information in &lt;a href=&#34;../../docs/components/aura-bridge/environment-variables/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;functionality&#34;&gt;Functionality&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; is in charge of sending the responses to the corresponding channel callback. For WhatsApp channels, the default callback is &lt;strong&gt;Kernel&lt;/strong&gt; WhatsApp API implementation.&lt;/p&gt;
&lt;p&gt;In Aura distributed architecture, this component also works as a translator for &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;, but the other way round as &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; does: it translates the Direct Line formatted responses from &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; into the corresponding format for each channel (WhatsApp, etc.) and also implements the corresponding protocol for each channel.&lt;/p&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; environment variable &lt;em&gt;&lt;strong&gt;AURA_BRIDGE_ENDPOINT&lt;/strong&gt;&lt;/em&gt; should point to internal network (Ex. http://aura-bridge-outbound:8045). Further information about these variables can be found in &lt;a href=&#34;../../docs/components/aura-bridge/environment-variables/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&#34;sequence-diagram&#34;&gt;Sequence diagram&lt;/h4&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    Channel-&amp;gt;&amp;gt;&amp;#43;Aura Bridge: Channel sends a message to bridge.
    Aura Bridge-&amp;gt;&amp;gt;&amp;#43;Aura Groot: AURA_BRIDGE_ENDPOINT as serviceUrl variable points to Aura Bridge Outbound, bridge sends the message to groot.
    Aura Groot-&amp;gt;&amp;gt;&amp;#43;Aura Bridge Outbound: Groot processes message and sends converted message to outbound.
    Aura Bridge Outbound--&amp;gt;&amp;gt;-Channel: Processed message is sent back to Channel.&lt;/pre&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; Note that message&amp;rsquo;s information is synchronized between &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;aura-bridge-outbound&lt;/strong&gt;&lt;/em&gt; due to their shared cache.&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt; is the component in charge of processing, analyzing and understanding human natural language. Discover throughout these documents key descriptive documentation regarding this component.&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; Shared component between &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;&lt;strong&gt;Related documents&lt;/strong&gt;&lt;br&gt;
&lt;i class=&#34;fa-regular fa-file-lines fa-xl&#34; style=&#34;color: #0d5de7;&#34;&gt;&lt;/i&gt; &lt;a href=&#34;../../docs/experiences-builder/development-use-cases/nlp-uc-development/uc-development-process/&#34;&gt;Use cases development over Aura NLP&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;what-is-aura-nlp&#34;&gt;What is Aura NLP?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt; (Natural Language Processing) is the module of Aura Cognitive Services in charge of processing and understanding human natural language in simplified use cases.&lt;/p&gt;
&lt;p&gt;Aura&amp;rsquo;s interaction with users is based on the &lt;a href=&#34;../../docs/components/aura-nlp/nlp-concepts/#intent&#34;&gt;&lt;strong&gt;intent&lt;/strong&gt;&lt;/a&gt; &amp;amp; &lt;a href=&#34;../../docs/components/aura-nlp/nlp-concepts/#entity&#34;&gt;&lt;strong&gt;entity&lt;/strong&gt;&lt;/a&gt; model: a user&amp;rsquo;s request expressed in natural language is understood by Aura in terms of identifying the user&amp;rsquo;s intent and the associated entities.&lt;/p&gt;
&lt;p&gt;An NLP model contains three &lt;a href=&#34;../../docs/components/aura-nlp/nlp-concepts/#aura-nlp-basic-components-stages-connectors-and-pipelines&#34;&gt;basic components&lt;/a&gt;: &lt;strong&gt;stages&lt;/strong&gt;, &lt;strong&gt;connectors&lt;/strong&gt; and &lt;strong&gt;pipelines&lt;/strong&gt;. Stages provide different methods for the recognition of intents and entities in the user&amp;rsquo;s utterance. They are linked through different types of connectors composing an &lt;strong&gt;NLP pipeline&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When developing a use case, linguists or NLP experts must build up the NLP model and &lt;strong&gt;train&lt;/strong&gt; it, that is, teach Aura to understand. Afterwards, the model is tested through an ongoing and cyclical process until its accuracy is good enough in terms of recognition of the use case intent and entities.&lt;/p&gt;
&lt;p&gt;Throughout this section, you can access to detailed information, both descriptive and practical, regarding Aura NLP:&lt;/p&gt;
&lt;p&gt;&amp;#x1f4c4; &lt;a href=&#34;../../docs/components/aura-nlp/nlp-concepts/&#34;&gt;Aura NLP basic concepts and components&lt;/a&gt;. Key concepts that must be known by linguists in order to manage Aura NLP.&lt;br&gt;
&amp;#x1f4c4; &lt;a href=&#34;../../docs/components/aura-nlp/nlp-system-configuration/&#34;&gt;Configuration of the NLP system&lt;/a&gt;. Description of NLP operational configuration (internal) and introduction to the configuration of NLP stages.&lt;br&gt;
&amp;#x1f4c4; &lt;a href=&#34;../../docs/components/aura-nlp/api-definition/&#34;&gt;API definition&lt;/a&gt;&lt;br&gt;
&amp;#x1f4c4; Moreover, access our practical guidelines for NLP experts and linguists: &lt;a href=&#34;../../docs/experiences-builder/development-use-cases/nlp-uc-development/&#34;&gt;Train Aura to understand: Use cases development over Aura NLP&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;overview-of-intent-and-entities-recognition&#34;&gt;Overview of intent and entities recognition&lt;/h2&gt;
&lt;p&gt;Aura&amp;rsquo;s conversational process with the user is composed of three overall stages: the user makes a request to Aura; Aura recognizes the user&amp;rsquo;s intent and associated entities; Aura provides the user with the requested answer or service.&lt;/p&gt;
&lt;p&gt;Two are the main actors in the process: while &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;&lt;/a&gt; is the component in charge of handling the conversational flow with the user, Aura NLP is responsible for the understanding process, which is schematically shown below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Aura user asks for a service/request (utterance) through a specific channel.&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; receives the request and handles it. For its understanding, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; summons &lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt; recognizes the intents and associated entities in the user request and sends the information back to &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;../../images/aura-nlp/recognition-process.png&#34; alt=&#34;Recognition of intents and entities&#34;&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Discover in this section advanced technical documentation regarding &lt;strong&gt;Aura channels&lt;/strong&gt;&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; Before facing these documents, we highly recommend reading the document &lt;a href=&#34;../../docs/aura-assistant/functional-description/channels-overview/&#34;&gt;&lt;strong&gt;Introduction to Aura channels&lt;/strong&gt;&lt;/a&gt;, that provides a general overview of these components&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; Channels are shared components between &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;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;Aura channel&lt;/strong&gt; is any communication means a Telefónica client may use to interact with Aura, typically to gather information about, as well as to manage, the client&amp;rsquo;s Telefónica products and services.&lt;/p&gt;
&lt;p&gt;As Aura platform is based on &lt;strong&gt;Microsoft Azure Bot Service&lt;/strong&gt; and &lt;strong&gt;Bot Framework&lt;/strong&gt;, it uses the general-purpose communication mechanism called &lt;strong&gt;Direct Line API&lt;/strong&gt;, provided by Microsoft.&lt;/p&gt;
&lt;p&gt;In this framework, &lt;em&gt;&lt;strong&gt;Aura Virtual Assistant&lt;/strong&gt;&lt;/em&gt; is able to communicate with different &lt;a href=&#34;../../docs/components/channels/communication-protocols/&#34;&gt;communication protocols&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Directly with channels that &amp;ldquo;talk&amp;rdquo; &lt;strong&gt;Microsoft Direct Line&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Directly through communication protocols based on Direct Line, such as &lt;strong&gt;Auraline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Through the use of &lt;strong&gt;adapters&lt;/strong&gt; for channels that do not support Direct Line.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To become an Aura-compatible communication means, Aura channels must fulfil a set of requirements as well as support the so-called &lt;a href=&#34;../../docs/components/request-response-model/&#34;&gt;&lt;strong&gt;Aura request-response semantic model&lt;/strong&gt;&lt;/a&gt;. Specifically, it employs one property, &lt;strong&gt;&lt;code&gt;channelData&lt;/code&gt;&lt;/strong&gt;, that serves as a crucial bridge, allowing Aura to harness channel-specific data and functionalities, ensuring a tailored and optimized interaction.&lt;/p&gt;
&lt;p&gt;Depending on this model, the Aura channel will support distinct levels of complexity regarding the interactions to be implemented as well as the richness of the information provided to customers interacting with Aura.&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; Moreover, the &lt;strong&gt;practical processes&lt;/strong&gt; for the management of channels are included in &lt;a href=&#34;../../docs/developers-workspace/channels-management/&#34;&gt;Manage channels in Aura&lt;/a&gt;, including guidelines for the installation and activation of channels and how to update channels configuration.&lt;/p&gt;
&lt;h2 id=&#34;index-of-documents&#34;&gt;Index of documents&lt;/h2&gt;
&lt;p&gt;Throughout these documents, you can find comprehensive technical information regarding channels in Aura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/channels/communication-protocols/&#34;&gt;Aura communication protocols&lt;/a&gt;: Description of Direct Line and Auraline communication protocols.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/channels/authentication/&#34;&gt;Channels authentication&lt;/a&gt;: How an Aura channel authenticates its users.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/channels/current-channel-model/&#34;&gt;Aura channel model&lt;/a&gt;: Updated model for the communication between Aura and a channel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Detailed information regarding key channels available in Aura:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/channels/whatsapp-channel/&#34;&gt;WhatsApp channel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/channels/rcs-channel/&#34;&gt;Google RCS Business Messaging&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/developers-workspace/channels-management/&#34;&gt;Manage channels in Aura&lt;/a&gt;: Guidelines for channels management in Aura, including installation and activation of channels and how to update channels configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use cases development. Guidelines for specific channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/experiences-builder/development-use-cases/whatsapp-channel/#use-cases-development-in-whatsapp&#34;&gt;Use cases development in WhatsApp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/experiences-builder/development-use-cases/rcs-channel/&#34;&gt;Use cases development in Google RCS Business Messaging channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Discover the Global use cases developed by Aura Platform Team and put at the OB&amp;rsquo;s disposal and the global libraries and dialogs that contain the logic for different experiences&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; components&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Global use cases are experiences already designed, developed and tested by Aura Platform Team.&lt;/p&gt;
&lt;p&gt;OBs cannot modify their logic but use them as they are or get inspired for deploying their own experiences.&lt;/p&gt;
&lt;p&gt;The current section includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Global dialogs / libraries&lt;/strong&gt;, that contain the logic for the management of different experiences:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/authentication-dialogs/&#34;&gt;Authentication dialogs&lt;/a&gt;, that manage different types of authentication in Aura.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/&#34;&gt;generic-ai-dialogs&lt;/a&gt; that allow managing several experiences for TV channels using AI services and complex logic resolution.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/generic-dialog/&#34;&gt;generic-dialog&lt;/a&gt; that, currently, allows the implementation of certain experiences in TV channels.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/miscellaneous-dialogs/&#34;&gt;Other global dialogs grouped as miscellaneous&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Global use cases&lt;/strong&gt;, as experiences that reach the final users:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/global-use-cases/video-use-cases/&#34;&gt;Aura video use cases&lt;/a&gt;, that provide different experiences for Telefónica customers related to video services.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/global-use-cases/testing-use-cases/&#34;&gt;Use cases for testing Aura&lt;/a&gt;: libraries used by Aura Global Team for testing Aura Platform functionalities.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x1f4c3; Find guidelines for installing and using global experiences in your Aura system: &lt;a href=&#34;../../docs/experiences-builder/global-use-cases/&#34;&gt;Use global use cases&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; With the introduction of the &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;&lt;strong&gt;&lt;code&gt;channelData&lt;/code&gt; normalized version (v3)&lt;/strong&gt;&lt;/a&gt;, these global dialogs will be progressively adapted to be compatible with this version.
This information is included in the documentation of the specific dialogs where two versions (v1 and v3) are already available, together with the changes in the dialogs&amp;rsquo; functionality that, for example, affect to video use cases.&lt;/p&gt;
&lt;h2 id=&#34;libraries-configuration&#34;&gt;Libraries configuration&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; has the control to prepare and manage all configuration variables and make validations to get ready. In case that any validation fails, the set of libraries wrongly loaded will be shown and the bot will not start. If there is a problem with the scheme of an external library, the broken library should be extracted or fixed.&lt;/p&gt;
&lt;p&gt;In order to validate schemas of the variables used in external libraries, it is optional that each library has an accessible scheme with the names of THEIR variables, default values, etc.&lt;/p&gt;
&lt;p&gt;For example, there is a library that exposes a variable that contains a threshold that can be modified from outside that library. The developer´s library should create a schema (using &lt;code&gt;@hapi/joi&lt;/code&gt;) specifying the name of the variable with the prefix of the library name (for example: &lt;code&gt;LIBRARYNAME_THRESHOLD&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;It is suggested that at the library level and within the &lt;em&gt;src/&lt;/em&gt; folder, a file named &lt;a href=&#34;../../docs/experiences-builder/development-use-cases/bot-uc-development/build-dialog/library/#configuration-schemats&#34;&gt;&lt;code&gt;configuration-schema.ts&lt;/code&gt;&lt;/a&gt; is created, containing the configuration scheme like the one shown below:&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-typescript&#34; data-lang=&#34;typescript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&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;as&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;joi&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;joi&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&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:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;configurationSchema&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;LIBRARYNAME_DEFAULT_GREETINGS&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;joi.string&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&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;hello&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&#34;&gt;LIBRARYNAME_COMMON_COUNT_GREETINGS&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;joi.number&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;().&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&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;1800&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&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;export&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;configurationSchema&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;p&gt;In this first approach, there is no name validation (checking the prefix name of the variables).&lt;/p&gt;
&lt;h3 id=&#34;nomenclature-for-libraries-variables&#34;&gt;Nomenclature for libraries variables&lt;/h3&gt;
&lt;p&gt;The naming of local library environment variables must follow these instructions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Follow the structure: &lt;code&gt;LIBRARYNAME_*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the environment variable is an endpoint: &lt;code&gt;LIBRARYNAME_*_ENDPOINT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the environment variable is a &lt;strong&gt;Kernel&lt;/strong&gt; endpoint: &lt;code&gt;AURA_FP_*_ENDPOINT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the environment variable is a &lt;strong&gt;Kernel&lt;/strong&gt; endpoint and is only used in one library or the use case uses a different API version than the global one: &lt;code&gt;LIBRARYNAME_FP_*_ENDPOINT&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each library in this section includes its own variables.&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;This section describes the Aura request-response semantic model, which makes it possible for external software components, application and services to speak a language Aura can understand using the Direct Line API&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;The Direct Line API provides the connectivity between any external software component, service, channel or application and Aura skills.&lt;/p&gt;
&lt;p&gt;Anyhow, having a connection means is typically not enough, as a proper understanding and semantics are needed between the communicating parties regarding the data being intercommunicated. In order to improve the communication of Aura with services or channels being integrated into the Microsoft Azure Bot Service and Bot Framework, two concepts come into play:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/previous-versions/azure/bot-service/dotnet/bot-builder-dotnet-activities?view=azure-bot-service-3.0&#34;&gt;Activities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/previous-versions/azure/bot-service/rest-api/bot-framework-rest-connector-api-reference?view=azure-bot-service-3.0#activity-object&#34;&gt;Fixed JSON format&lt;/a&gt;.
This fixed JSON format includes a JSON property called &lt;a href=&#34;https://docs.microsoft.com/en-us/previous-versions/azure/bot-service/dotnet/bot-builder-dotnet-channeldata?view=azure-bot-service-3.0&amp;amp;viewFallbackFrom=azure-bot-service-4.0&#34;&gt;&lt;code&gt;channelData&lt;/code&gt;&lt;/a&gt;, which channel developers and integrators can use to encode channel-specific data in JSON format and its corresponding semantics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this framework, we introduce the so-called &lt;strong&gt;Aura Request - Response Semantic Model&lt;/strong&gt;. This semantic model makes it possible for external software components, application and services to speak a language Aura can understand using the DirectLine API.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-regular fa-thumbtack fa-xl&#34; style=&#34;color: #ffac4d;&#34;&gt;&lt;/i&gt;  Currently, this semantic model is used both for the communication of channels with &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and for the communication of &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; with skills in two &lt;a href=&#34;../../docs/components/channels/communication-protocols/&#34;&gt;Aura communication protocols&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/channels/communication-protocols/microsoft-bot-service/&#34;&gt;&lt;strong&gt;Direct Line&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/channels/communication-protocols/auraline/&#34;&gt;&lt;strong&gt;Auraline&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Within the &lt;strong&gt;Aura Request - Response Semantic Model&lt;/strong&gt;, two key properties will be fully described throughout these documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The general-purpose channel-specific &lt;code&gt;channelData&lt;/code&gt; property is the one used by Aura to define the model. When a message is sent from a channel, part of that message is specific to the channel/service and it allows &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;skills&lt;/strong&gt;&lt;/em&gt; to communicate correctly with it.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;payload&lt;/code&gt; property can be used by an external component to facilitate the sharing of information between the channels, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt; and the skills in order add extra information associated with the channel and, consequently, enrich the request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;../../images/channels/channel-root-skills.png&#34; alt=&#34;Channel-root-skills&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;versioning&#34;&gt;Versioning&lt;/h2&gt;
&lt;p&gt;Aura supports different versions of the &lt;strong&gt;Aura Request - Response Semantic Model&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;channeldata-v1&#34;&gt;channelData v1&lt;/h3&gt;
&lt;p&gt;In older Aura Platform releases, the default version was &lt;strong&gt;version 1&lt;/strong&gt;, so some channels did not send the version of the &lt;code&gt;channelData&lt;/code&gt; and &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; handled their requests as version 1.0.0.&lt;/p&gt;
&lt;p&gt;There is an exception: in release Aerosmith, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; included Living Apps handling as a platform feature.&lt;/p&gt;
&lt;p&gt;&amp;#x27a1;&amp;#xfe0f; Access to &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v1/&#34;&gt;channelData v1 documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;channeldata-v2&#34;&gt;channelData v2&lt;/h3&gt;
&lt;p&gt;Afterwards, &lt;strong&gt;version 2&lt;/strong&gt; was created to extend the &lt;code&gt;channelData&lt;/code&gt; property with new fields, such as &lt;code&gt;actions&lt;/code&gt; and &lt;code&gt;status&lt;/code&gt;, that with the regular communications with the channels are not needed or, in the case of the &lt;code&gt;actions&lt;/code&gt;, are solved by other ad-hoc means.&lt;/p&gt;
&lt;p&gt;In Greenday (6.0.1) release, Aura included a WhatsApp connector, the so-named &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; and also &lt;code&gt;channelData&lt;/code&gt; &lt;strong&gt;version 2&lt;/strong&gt; was used to access and to use the extra features of &lt;code&gt;actions&lt;/code&gt; and &lt;code&gt;status&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In these Aura Platform releases until Iron Maiden, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; included a lazy definition of the &lt;code&gt;channelData&lt;/code&gt; model, so, in fact, it handled almost a different version per channel.&lt;/p&gt;
&lt;p&gt;&amp;#x27a1;&amp;#xfe0f; Access to &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v2/&#34;&gt;channelData v2 documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;channeldata-v3&#34;&gt;channelData v3&lt;/h3&gt;
&lt;p&gt;From Iron Maiden (7.2.0) onwards, we introduce the so-called &lt;strong&gt;&lt;code&gt;channelData&lt;/code&gt; normalized version (version 3)&lt;/strong&gt;, an enriched version of &lt;code&gt;channelData&lt;/code&gt; with new fields that provide a complete schema definition. This will enforce all channels to use the very same schema to access &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&amp;#x27a1;&amp;#xfe0f; Access to &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;channelData v3 documentation&lt;/a&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; is the component in charge of handling users in Aura.&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-authentication-api&lt;/strong&gt;&lt;/em&gt; is the component in charge of the management of the users&amp;rsquo; authentication in Aura. It is a web server with several endpoints dedicated to handle users in Aura or to allow the access of the users to &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The web server is built on &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;Typescript 4.3&lt;/a&gt; using &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;Nodejs&lt;/a&gt; as engine. It is &lt;a href=&#34;https://swagger.io/resources/articles/adopting-an-api-first-approach/#:~:text=An%20API%2Dfirst%20approach%20means,be%20consumed%20by%20client%20applications&#34;&gt;api-first designed&lt;/a&gt;, using &lt;a href=&#34;https://swagger.io/specification/&#34;&gt;Open API v3&lt;/a&gt; to provide the API definition.&lt;/p&gt;
&lt;p&gt;The authorization used in the server is based on an APIKey, which is ciphered for the environment and generated to access to a group of endpoints or only to a given path or a specific consumer.&lt;/p&gt;
&lt;p&gt;Find detailed information regarding &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/#communication-protocol&#34;&gt;Communication protocol&lt;/a&gt; and &lt;a href=&#34;../../docs/components/aura-authentication-api/#aura-authentication-api-components&#34;&gt;components&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/environment-variables/&#34;&gt;Environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/endpoints/&#34;&gt;Endpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/users-logout-redirection/&#34;&gt;Logout of Webclient users via redirection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-services-api/tree/master/packages/authentication-api&#34;&gt;Aura authentication API Codebase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/api-definition/&#34;&gt;Aura Authentication API definition&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;communication-protocol&#34;&gt;Communication protocol&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;  communication protocol is completely synchronous, this means that the answer of a request is included in the HTTP response related to the incoming request.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/auth-api-blocks.svg&#34; alt=&#34;Authentication service usage&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-authentication-api-components&#34;&gt;Aura authentication API components&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;../../images/auth-api-components.svg&#34; alt=&#34;Auth-api components&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;server&#34;&gt;Server&lt;/h3&gt;
&lt;p&gt;The web server is implemented using &lt;a href=&#34;https://www.npmjs.com/package/express&#34;&gt;express&lt;/a&gt;, that is the main web framework for Nodejs. It uses &lt;a href=&#34;https://www.npmjs.com/package/oas-tools&#34;&gt;oas-tools&lt;/a&gt; on top of Express, to allow handling the Open API v3 file.&lt;/p&gt;
&lt;p&gt;It is in charge of setting up all the rest of the components that are needed during a request processing, as well as reading the before mentioned swagger file and setting up all the routes defined in it.&lt;/p&gt;
&lt;h3 id=&#34;middlewares&#34;&gt;Middlewares&lt;/h3&gt;
&lt;p&gt;Each route published in the API definition file is handled by a controller, but before a request lands on its controller, it goes through a series of middlewares, that provide some common steps needed by all the controllers of the server such as: request authorization, request validation, common parameters extraction, logging, metrics initialization, etc.&lt;/p&gt;
&lt;h3 id=&#34;controllers--services&#34;&gt;Controllers &amp;amp; Services&lt;/h3&gt;
&lt;p&gt;Then, the request lands on the controller. Each controller processes the request through a service in charge of implementing the logic. Once the request has been processed, the controller prepares and sends the response.&lt;/p&gt;
&lt;h3 id=&#34;database-access&#34;&gt;Database access&lt;/h3&gt;
&lt;p&gt;Some of the services of the &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; access &lt;em&gt;&lt;strong&gt;aura-users database&lt;/strong&gt;&lt;/em&gt; to validate, get or update users&amp;rsquo; information.&lt;/p&gt;
&lt;p&gt;This database is a MongoDB one, with a collection that holds all the existing and valid Aura users. To access this collection, the server implements a data access object with the queries needed by the services. This object is a class called &lt;code&gt;UserDao&lt;/code&gt; that provides a single access to the database, isolating the services from the real database schema and internal implementation.&lt;/p&gt;
&lt;p&gt;The entity relationship diagram of this database is:&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;erDiagram
    users {
        string auraId
        string id
        string auraGlobalId
        string channelId
        string userId
        string authorizationId
        string authenticationType
        string authenticationIdentifier
        string idTokenHint
        date created
        date lastAccess
        date expiresAt
    }
    aura-version-control {
        string id
        string name
        string history
        date timestamp
        string version
    }&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Collections description&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_id&lt;/code&gt;: Internal MongoDB identifier. Not used by the service.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auraId&lt;/code&gt;: Identifier of the user in Aura.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auraGlobalId&lt;/code&gt;: Cross-channel identifier of the same authentication (type and identifier) of a user.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;channelId&lt;/code&gt;: UUID that univocally identifies the channel that lead the authentication session in Aura.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;userId&lt;/code&gt;: &lt;strong&gt;Kernel&lt;/strong&gt; user identifier&lt;/li&gt;
&lt;li&gt;&lt;code&gt;authorizationId&lt;/code&gt;: Identifier of the authentication session in &lt;strong&gt;Kernel&lt;/strong&gt;. UNIQUE.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;authenticationType&lt;/code&gt;: Type of authentication used by the user. Values: &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;uid&lt;/code&gt;, &lt;code&gt;network&lt;/code&gt;, &lt;code&gt;phone_number&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;authenticationIdentifier&lt;/code&gt;: Identifier used by the user during the authentication.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;idTokenHint&lt;/code&gt;: Token generated during the authentication of internal channels.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;created&lt;/code&gt;: Date when the user was created.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lastAccess&lt;/code&gt;: Last date access of the user.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;expiresAt&lt;/code&gt;: Time when the user authentication should be discarded.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;aura-version-control:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;_id&lt;/code&gt;: Internal MongoDB identifier.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Name of the index being handled.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;history&lt;/code&gt;: Array of objects with all the versions already applied.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;timestamp&lt;/code&gt;: Date when the version was applied.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;version&lt;/code&gt;: Version of the &lt;code&gt;database-index&lt;/code&gt; definition file applied.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;users-database-cache&#34;&gt;Users database cache&lt;/h3&gt;
&lt;p&gt;Users collection data stored in MongoDB are also cached in Redis to increase request&amp;rsquo;s speed. The time to live of these documents
in cache is configurable with the &lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; environment variable &lt;code&gt;AURA_REDIS_CACHE_TTL&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;anonymous-users&#34;&gt;Anonymous users&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; can return auto-generated anonymous users if needed for anonymous KPIs instead of returning 404 if the user is anonymous.&lt;/p&gt;
&lt;p&gt;To enable this feature, you should include two new headers when the call to the endpoint &lt;code&gt;/aura-services/v1/users/{auraId}&lt;/code&gt; is done:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;return-anonymous: Boolean header to enable this feature.&lt;/li&gt;
&lt;li&gt;x-4p-channel-id: UUID which identifies the Aura channel. This is needed to generate a consistent user data for this anonymous user.&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; is the component of Aura in charge of handling and centralizing configuration tasks.&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; Shared component between &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;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; is the component in charge of the management of all the configuration tasks in Aura. It is mainly a web server built on &lt;a href=&#34;https://www.typescriptlang.org/&#34;&gt;Typescript 4.3&lt;/a&gt; using &lt;a href=&#34;https://nodejs.org/en/&#34;&gt;nodejs&lt;/a&gt; as engine. It is &lt;a href=&#34;https://swagger.io/resources/articles/adopting-an-api-first-approach/#:~:text=An%20API%2Dfirst%20approach%20means,be%20consumed%20by%20client%20applications&#34;&gt;api-first designed&lt;/a&gt;, using &lt;a href=&#34;https://swagger.io/specification/&#34;&gt;OpenAPI v3&lt;/a&gt; to provide the API definition.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; server is divided into several modules and plugins, each of them managing different tasks, which are:&lt;/p&gt;
&lt;h3 id=&#34;modules&#34;&gt;Modules&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Administration&lt;/code&gt;: Administrative management module for general tasks such as exporting and importing configuration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Channel&lt;/code&gt;: Module in charge of managing the configuration of each Aura channel as well as the libraries associated with each channel (replacement for the &lt;code&gt;bot-response.json&lt;/code&gt; configuration file).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Skill&lt;/code&gt;: Module in charge of managing the configuration of each skill.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Application&lt;/code&gt;: Module in charge of managing the configuration of each application.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Component&lt;/code&gt;: Module in charge of managing the configuration of each Aura component.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;plugins&#34;&gt;Plugins&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Preset&lt;/code&gt;: Module in charge of managing the configuration of each preset.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Tv section&lt;/code&gt;: Module in charge of managing the configuration of each tv section.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Suggestion&lt;/code&gt;: Module in charge of managing the configuration of each suggestions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;: Module in charge of managing the configuration of each agents.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent base&lt;/code&gt;: Module in charge of managing the configuration of each agents base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent deployment&lt;/code&gt;: Module in charge of managing the configuration of each agents deployment.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Routing filter&lt;/code&gt;: Module in charge of managing the configuration of each routing filters.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Filter engine&lt;/code&gt;: Module in charge of managing filters engine.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Detailed information regarding &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; is found in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/#communication-protocol&#34;&gt;Communication protocol&lt;/a&gt; and &lt;a href=&#34;../../docs/components/aura-configuration-api/#aura-configuration-api-components&#34;&gt;components&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/environment-variables/&#34;&gt;Environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/modules/&#34;&gt;Modules&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/aura-services-api/tree/master/packages/aura-configuration-api&#34;&gt;Aura Configuration API Codebase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/api-definition/&#34;&gt;Aura Configuration API definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/use-synchronization-by-events/&#34;&gt;Synchronization by events&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;aura-configuration-api-architecture-and-components&#34;&gt;Aura configuration API architecture and components&lt;/h2&gt;
&lt;p&gt;The following figure shows the main components of the &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/configuration-api/configuration-api-components.svg&#34; alt=&#34;aura-configuration-api components&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;server&#34;&gt;Server&lt;/h3&gt;
&lt;p&gt;The web server is implemented using &lt;a href=&#34;https://www.npmjs.com/package/express&#34;&gt;express&lt;/a&gt;, which is the main web framework for &lt;strong&gt;NodeJS&lt;/strong&gt;. It uses &lt;a href=&#34;https://www.npmjs.com/package/openapi-backend&#34;&gt;openapi-backend&lt;/a&gt; on top of express, to allow handling the OpenAPI v3 file.&lt;/p&gt;
&lt;p&gt;It is in charge of setting up all the rest of the components that are needed during a request processing, as well as reading the aforementioned swagger file and setting up all the routes defined in it.&lt;/p&gt;
&lt;h3 id=&#34;middlewares&#34;&gt;Middlewares&lt;/h3&gt;
&lt;p&gt;Each route published in the API definition file is handled by a controller, but before a request lands on its controller, it goes through a series of middlewares that provide some common steps needed by all the controllers of the server.&lt;/p&gt;
&lt;p&gt;The following middlewares are executed at each request to the server:&lt;/p&gt;
&lt;h4 id=&#34;normal-flow&#34;&gt;Normal flow&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;helmet&lt;/code&gt;: Secure express app by setting various HTTP headers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;body-parser&lt;/code&gt; (urlencoded): It parses URL-encoded bodies using querystring parsing (qs).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;body-parser&lt;/code&gt; (json): Maximum size of JSON body (current 50 MB).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;set-correlator&lt;/code&gt;: It sets the correlator to response header and response locals.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;log-http-request-response&lt;/code&gt;: Log HTTP request and response information.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;express-prom-bundle&lt;/code&gt;: It saves metrics information using Prometheus.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oas_tools&lt;/code&gt; (swaggerMetadata): It interprets swagger resources and attaches metadata to request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oas_tools&lt;/code&gt; (swaggerValidator): It validates requests using swagger definition.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oas_tools&lt;/code&gt; (swaggerRouter): It routes validated requests to appropriate controller.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oas_tools&lt;/code&gt; (swaggerUi): It serves the swagger documents and Swagger UI.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;not-found-handler&lt;/code&gt;: It handles requests that have not been routed (Not Found).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;error-flow&#34;&gt;Error flow&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;error-handler&lt;/code&gt;: Global error handler.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;controllers--services&#34;&gt;Controllers &amp;amp; Services&lt;/h3&gt;
&lt;p&gt;When the previous step is finished, the request lands on the controller. Each controller processes the request through a service, that is in charge of implementing the logic. Once the request has been processed, the controller prepares and sends the response.&lt;/p&gt;
&lt;p&gt;There is a controller to manage requests associated with the server itself (&lt;em&gt;&lt;strong&gt;generic&lt;/strong&gt;&lt;/em&gt; controller) and a controller for each module, in charge of handling the requests of that module.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;../../docs/components/aura-configuration-api/use-synchronization-by-events/&#34;&gt;event synchronization&lt;/a&gt; service can be enabled by setting the &lt;strong&gt;AURA_CONFIGURATION_EVENTS_ENABLED&lt;/strong&gt; configuration variable to &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&#34;generic-controller&#34;&gt;Generic controller&lt;/h4&gt;
&lt;p&gt;As indicated above, the &lt;em&gt;&lt;strong&gt;generic&lt;/strong&gt;&lt;/em&gt; controller handles requests to provide information from the state of the server itself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;healthz&lt;/code&gt;: It is used to check if the server is online returning a simple status response: &lt;code&gt;{&amp;quot;status&amp;quot;: &amp;quot;ok&amp;quot;}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;metrics&lt;/code&gt;: It gets Prometheus metrics information.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;heapStatistics&lt;/code&gt;: It gets memory usage information.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;heapSnapshot&lt;/code&gt;: It gets memory head snapshot from v8 engine.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shutdown&lt;/code&gt;: Service to be invoked mainly by Kubernetes and allows to do a server graceful shutdown.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;modules-controller&#34;&gt;Modules controller&lt;/h4&gt;
&lt;p&gt;The controllers and services information of each module is described in the &lt;a href=&#34;../../docs/components/aura-configuration-api/modules/&#34;&gt;Modules&lt;/a&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; server is divided into several modules and plugins, each of them managing different tasks, which are:&lt;/p&gt;
&lt;h3 id=&#34;modules-1&#34;&gt;Modules&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Administration&lt;/code&gt;: Administrative management module for general tasks such as exporting and importing configuration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Channel&lt;/code&gt;: Module in charge of managing the configuration of each Aura channel as well as the libraries associated with each channel (replacement for the &lt;code&gt;bot-response.json&lt;/code&gt; configuration file).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Skill&lt;/code&gt;: Module in charge of managing the configuration of each skill.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Application&lt;/code&gt;: Module in charge of managing the configuration of each application.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Component&lt;/code&gt;: Module in charge of managing the configuration of each Aura component.&lt;/li&gt;
&lt;/ul&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 here detailed information of &lt;a href=&#34;../../docs/components/aura-configuration-api/modules/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; modules&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;plugins-1&#34;&gt;Plugins&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Preset&lt;/code&gt;: Plugin in charge of managing the configuration of each preset.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;TV section&lt;/code&gt;: Plugin responsible for the management of TV sections.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Suggestion&lt;/code&gt;: Plugin responsible for the management of suggestions.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent&lt;/code&gt;: Plugin in charge of managing the configuration of each agent.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent base&lt;/code&gt;: Plugin in charge of managing the configuration of each agent base.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Agent Deployment&lt;/code&gt;: Plugin responsible for managing the deployment of agents.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Routing filter&lt;/code&gt;: Plugin responsible for managing the routing filters.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Engine filter&lt;/code&gt;: Plugin responsible for managing the engine filter.&lt;/li&gt;
&lt;/ul&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 here detailed information of &lt;a href=&#34;../../docs/components/aura-configuration-api/plugins/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; plugins&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;database-access&#34;&gt;Database access&lt;/h3&gt;
&lt;p&gt;Most &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; services access &lt;em&gt;&lt;strong&gt;aura-configuration&lt;/strong&gt;&lt;/em&gt; database to get or set the information of each module.&lt;/p&gt;
&lt;p&gt;This database is a MongoDB one, with a collection for each module that stores information related to that module. To access this collection, the server implements a data access object with the queries needed by the services. This object follows the &lt;strong&gt;DAO&lt;/strong&gt; (Data Access Object) pattern that provides a single access to the database, isolating the services from the real database schema and internals implementation.&lt;/p&gt;
&lt;h2 id=&#34;communication-protocol&#34;&gt;Communication protocol&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; communication protocol is completely synchronous, this means that the answer of a request is included in the HTTP response related to the request.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/configuration-api/configuration-api-communication.svg&#34; alt=&#34;Communication protocol&#34;&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt;, Aura&amp;rsquo;s short-term memory, is a key component that allows the enrichment of the responses provided to the users with information from their previous experiences.&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-to-aura-context&#34;&gt;Introduction to Aura Context&lt;/h2&gt;
&lt;p&gt;In previous Aura Platform releases, Aura experiences had a lack of memory, as every time the user interacted with Aura, the system took it as a first interaction and, once it had finished, Aura forgot it.&lt;/p&gt;
&lt;p&gt;In this framework, Aura Global Team has introduced the concept of &lt;strong&gt;context&lt;/strong&gt;, defined as information surrounding a user interaction. &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; aims to enhance the Aura-user interaction by providing the system with short-term memory. This capability enables Aura to understand, act and learn based on recent interactions with the user.&lt;/p&gt;
&lt;p&gt;Through the &lt;strong&gt;storage of key information&lt;/strong&gt; regarding the user&amp;rsquo;s previous experiences and environment in a temporary, high-available, low-latency database during a configurable period of time and its further integration in the conversational flow due to the real-time recovery of data with no lateness, Aura is able to better understand the user. This, in turn, allows it to provide more comprehensive responses and adjust its actions based on this information. The stored data is specific to one user and one interaction of that user.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; is not a critical module for use cases development but can be used optionally for the enrichment of the overall experience.&lt;/p&gt;
&lt;h2 id=&#34;aura-context-stakeholders&#34;&gt;Aura Context stakeholders&lt;/h2&gt;
&lt;p&gt;In &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; framework there are two main stakeholders, with differentiated roles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Global Team&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Management of the &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; data model&lt;/li&gt;
&lt;li&gt;Edition of the &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; global data model&lt;/li&gt;
&lt;li&gt;Feeding of the database with data from different Aura components&lt;/li&gt;
&lt;li&gt;Use of &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; by global developers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Local Team (OBs)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mainly consumers of &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; data (although they can also carry out certain modifications over the global data model)&lt;/li&gt;
&lt;li&gt;Storage of data in the &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; database&lt;/li&gt;
&lt;li&gt;Making queries to the database&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; &lt;strong&gt;The current documents are focused on the use of Aura Context for Aura Local Teams&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;what-is-included-in-aura-context-v1&#34;&gt;What is included in Aura Context v1?&lt;/h2&gt;
&lt;p&gt;From the general definition and scope of &lt;em&gt;&lt;strong&gt;Aura Context&lt;/strong&gt;&lt;/em&gt; included in the previous section, the current version of this component, &lt;em&gt;&lt;strong&gt;Aura Context v1&lt;/strong&gt;&lt;/em&gt; constitutes the first approach of the end-to-end product.&lt;/p&gt;
&lt;p&gt;Currently, the context generated by Aura is able to retrieve the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What has Aura understood?&lt;/li&gt;
&lt;li&gt;What is the current status of the channel/device from which the user is interacting?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this purpose, &lt;em&gt;&lt;strong&gt;Aura Context v1&lt;/strong&gt;&lt;/em&gt; includes the following basic functionalities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Each OB can create its own &lt;a href=&#34;../../docs/components/aura-context/aura-context-components/#agent&#34;&gt;agent&lt;/a&gt; to start working with &lt;em&gt;&lt;strong&gt;Aura context&lt;/strong&gt;&lt;/em&gt; in the &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; dialogs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Through this agent, the OB can perform the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Queries to the context database in order to retrieve key user&amp;rsquo;s information.&lt;/li&gt;
&lt;li&gt;Creation of custom context fields, if it is needed to store and query information that is not included in the context data model.&lt;/li&gt;
&lt;li&gt;Storage of data in context, for further use in use case development.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Every information included in the context module is stored in &lt;strong&gt;Kernel&lt;/strong&gt;, so datasets are available for analytical purposes or to create intelligent models upon it, as long as you have the right consent to do so.&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of entities in Aura and components in charge of managing these entities&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 entities&lt;/strong&gt;&lt;/em&gt; belongs to both &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;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Aura entities are files stored by different Aura components that contain relevant information related to key system processes or actions: user messages, Aura components interactions, message handling, applications, etc.&lt;/p&gt;
&lt;p&gt;They are useful to measure and evaluate the performance of the system against defined objectives through the generation of KPIs, processes tracking, identification of issues and decision-making.&lt;/p&gt;
&lt;p&gt;Each Aura component generates a series of entities which are uploaded into Azure Storage for different purposes.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../../docs/components/kpi-entities/aura-kpis-uploader/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-kpis-uploader&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; is the component in charge of the management of entities for every Aura component. On an hourly basis, it uploads all the generated files to &lt;strong&gt;Kernel&lt;/strong&gt; datasets. Once there, specific algorithms are executed to calculate the KPIs of each instance or for other purposes.&lt;/p&gt;
&lt;p&gt;Detailed information regarding Aura entities is found in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#types-of-logs-in-aura&#34;&gt;Types of logs in Aura&lt;/a&gt;: Operational logs and KPIs entities logs.&lt;/li&gt;
&lt;li&gt;Description of &lt;a href=&#34;#aura-kpis-blob-container&#34;&gt;Aura KPIs blob container&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/kpi-entities/aura-databricks-jobs/&#34;&gt;Aura Databricks Jobs&lt;/a&gt;: Component that imports Avro-formatted files into &lt;strong&gt;Kernel&lt;/strong&gt; datasets.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/kpi-entities/aura-kpis-uploader/&#34;&gt;Aura KPIs uploader&lt;/a&gt;Component in charge of handling entities and dimensions.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/kpi-entities/kpis-entity-handler/&#34;&gt;KPI entity handler&lt;/a&gt;: &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; module in charge of managing Aura entities.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/kpi-entities/kpis-status-codes/&#34;&gt;Status codes stored in KPIs entities&lt;/a&gt;: List of response codes stored in KPIs by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/kpi-entities/aura-entities-definition/&#34;&gt;Aura entities definition&lt;/a&gt;: Database that includes the different entities currently used in Aura.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;types-of-logs-in-aura&#34;&gt;Types of logs in Aura&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; writes two different types of logs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Operational logs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Operational logs are written using &lt;code&gt;AuraLogger&lt;/code&gt; that writes each row, by default, in JSON format in the standard output of the POD running each instance of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;These logs are used to monitor or debug &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;. The standard output of each POD is aggregated to be stored in an &lt;strong&gt;ElasticSearch&lt;/strong&gt; cluster, to make it available in &lt;strong&gt;Kibana&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Entities logs&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An entity is a specific definition of one of the actors involved in the processing of each activity in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;. So, the bot is in charge of writing the corresponding rows for each activity on each entity.&lt;/p&gt;
&lt;p&gt;This section aims to describe how the entities are handled by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; and how the rows are written and included in the entity files.&lt;/p&gt;
&lt;p&gt;Logs are written in a blob file: a blob container in Azure Storage using an internal library &lt;em&gt;&lt;strong&gt;aura-kpi-handler&lt;/strong&gt;&lt;/em&gt;, that provides classes and utilities to decouple Aura components: how the rows are written from how the needed information is gathered.&lt;/p&gt;
&lt;p&gt;The database &lt;a href=&#34;../../docs/components/kpi-entities/aura-entities-definition/&#34;&gt;&lt;strong&gt;Aura entities definition&lt;/strong&gt;&lt;/a&gt; includes the different entities currently used in Aura. Entities are generated by different Aura&amp;rsquo;s modules, each of them in charge of performing a different task: &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;aura-groot&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;aura-services&lt;/strong&gt;&lt;/em&gt;, etc.&lt;/p&gt;
&lt;p&gt;Currently, these logs are used to generate KPIs for the measurement of Aura performance, tracking processes or identifying issues.&lt;/p&gt;
&lt;h2 id=&#34;aura-kpis-blob-container&#34;&gt;Aura KPIs blob container&lt;/h2&gt;
&lt;p&gt;The following figures show the Aura KPIs blob container and an example of content of the blob container for &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/kpis-entities-logging.png&#34; alt=&#34;Aura KPIs blob containers&#34;&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt; is the microservice in charge of uploading a file to a temporary repository, validating it and returning a link as validation result.&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-file-manager&lt;/strong&gt;&lt;/em&gt; is a microservice based on a REST API with the capability of uploading a file to a temporary repository, validating it, and returning a direct download link as validation result.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt; uses an utility, &lt;a href=&#34;../../docs/developers-workspace/develop-features/aura-utilities/aura-utilities/file-validator/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-file-validator&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; for the validation of files.&lt;/p&gt;
&lt;p&gt;Find detailed information regarding &lt;em&gt;&lt;strong&gt;Aura file manager&lt;/strong&gt;&lt;/em&gt; in the following documents:&lt;br&gt;
. &lt;a href=&#34;#arch&#34;&gt;Architecture and main components&lt;/a&gt;&lt;br&gt;
. &lt;a href=&#34;#communication-protocol&#34;&gt;Communication protocol&lt;/a&gt;&lt;br&gt;
. &lt;a href=&#34;../../docs/components/file-manager/processes/&#34;&gt;Executed process flowchart and API functionalities&lt;/a&gt;&lt;br&gt;
. &lt;a href=&#34;../../docs/components/file-manager/environment-variables/&#34;&gt;Environment variables&lt;/a&gt;&lt;br&gt;
. &lt;a href=&#34;../../docs/components/file-manager/api-definition/&#34;&gt;API definition&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;In order to use &lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt;, it is necessary to activate it previously.
Learn how in &lt;a href=&#34;../../docs/developers-workspace/install-configure/channels-features-activation/file-manager/&#34;&gt;Aura File Manager activation&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;arch&#34;&gt;Aura file manager architecture&lt;/h2&gt;
&lt;p&gt;In the following diagram, the architecture and main components of &lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt; are shown:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/file-manager/file-manager-components.svg&#34; alt=&#34;Arquitecture diagram&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;internal-components&#34;&gt;Internal components&lt;/h3&gt;
&lt;h4 id=&#34;configurationmanager&#34;&gt;ConfigurationManager&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;ConfigurationManager&lt;/code&gt; is a handler for configuration, obtained through a configuration file or environment variables.&lt;/p&gt;
&lt;h4 id=&#34;fileservice&#34;&gt;FileService&lt;/h4&gt;
&lt;p&gt;&lt;code&gt;FileService&lt;/code&gt; is where the main functionality of the microservice resides. It is where file upload and validation is done.&lt;/p&gt;
&lt;h4 id=&#34;http-server&#34;&gt;HTTP server&lt;/h4&gt;
&lt;p&gt;Microservice is implemented as an HTTP server (&lt;code&gt;FileManagerServer&lt;/code&gt;) that exposes an API to receive the files to be validated.&lt;/p&gt;
&lt;h4 id=&#34;middlewares&#34;&gt;Middlewares&lt;/h4&gt;
&lt;p&gt;The route published in the API definition file is handled by a controller but, before a request lands on its controller, it goes through a series of middlewares that provides some common steps needed by all the controllers of the server such as: request validation, common parameters extraction, logging, metrics initialization, etc.&lt;/p&gt;
&lt;h4 id=&#34;queue-messages-processing&#34;&gt;Queue messages processing&lt;/h4&gt;
&lt;p&gt;Queuing system that allows tolerance to server failures, storing the received files in a DB and processing them later.&lt;/p&gt;
&lt;h2 id=&#34;communication-protocol&#34;&gt;Communication protocol&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt; communication protocol is completely asynchronous, this means that the answer of a request is not included in the HTTP response related to the request, but it is sent as a new HTTP request to the callback &lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/file-manager/file-manager-blocks-flow.svg&#34; alt=&#34;Communication protocol&#34;&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Aura Complex Logic Framework (CLF) is the component in charge of the resolution of complex use cases in Aura.&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;whats-aura-complex-logic-framework&#34;&gt;What&amp;rsquo;s Aura Complex Logic Framework?&lt;/h2&gt;
&lt;p&gt;The resolution of complex experiences in Aura requires that, once the user’s intent has been recognized by Aura NLP (Natural Language Processing), the dialog triggered by this intent summons the &lt;em&gt;&lt;strong&gt;Complex Logic Framework (CLF)&lt;/strong&gt;&lt;/em&gt; that allows developers to improve use cases, creating and integrating plugins in Aura Platform to be consumed by the  &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; dialogs and extend their logic for the resolution of complex users&amp;rsquo; requests.&lt;/p&gt;
&lt;p&gt;Therefore, it will be a key Aura component for the resolution of use cases, for example, for TV platformization.&lt;/p&gt;
&lt;p&gt;Throughout the &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; documentation, you will discover:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/clf-concepts/&#34;&gt;CLF architecture and components&lt;/a&gt;: Description of &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; architecture and main components.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/clf-configuration/&#34;&gt;CLF configuration&lt;/a&gt;: General configuration and configuration of plugins.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/clf-files/&#34;&gt;CLF files&lt;/a&gt;: Description of Aura &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; files and libraries.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/&#34;&gt;CLF global plugins&lt;/a&gt;: &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; global plugins developed by Aura Global Team.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/api-definition/&#34;&gt;CLF API definition&lt;/a&gt;: The &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; is based on &lt;strong&gt;Python plugins&lt;/strong&gt; and is able to access &lt;strong&gt;Kernel&lt;/strong&gt; APIs and other internal APIs exposed by other internal Aura components. Check here the main swagger for all the &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; plugins.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;interaction-of-clf-with-aura&#34;&gt;Interaction of CLF with Aura&lt;/h2&gt;
&lt;p&gt;The interaction of the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; with Aura is shown in the following figure and explained below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../images/clf/clf-aura-interactions.jpg&#34; alt=&#34;Interaction CLF-Aura&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;An Aura user asks for a service/request (utterance) through a specific channel.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; receives the user´s request. Firstly, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; recognizers come into play.&lt;/li&gt;
&lt;li&gt;The corresponding recognizer summons &lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt; for the recognition of the user’s utterance (in certain situations corresponding to auraCommands, the user’s request is understood directly by the bot).&lt;/li&gt;
&lt;li&gt;NLP returns the intent and associated entities in the user’s utterance.&lt;/li&gt;
&lt;li&gt;The recognized intent triggers a specific &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; dialog, in charge of the logic for the resolution of the use case.&lt;/li&gt;
&lt;li&gt;The dialog recognizes the complexity of the use case and, if required, summons the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt;.&lt;br&gt;
Depending on the type of plugins, the bot will call a different &lt;em&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;/em&gt;. &lt;br&gt;
After that, the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; selects the appropriate plugin among the ones existing on this specific type, based on the identified intent (mapping the intent with the plugin).&lt;/li&gt;
&lt;li&gt;The plugin executes the programmed tasks and calls different modules (Aura’s internal data, &lt;strong&gt;Kernel&lt;/strong&gt; data, external databases, etc.) in order to fetch the information.&lt;/li&gt;
&lt;li&gt;The &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; receives the required data.&lt;/li&gt;
&lt;li&gt;The information is sent back to &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; composes the response to the user’s request.&lt;/li&gt;
&lt;li&gt;The response is provided to the user.&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-redis-mongo-sync/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-redis-mongo-sync/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-redis-mongo-synchronizer-arms&#34;&gt;Aura Redis Mongo Synchronizer (ARMS)&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-redis-mongo-synch&lt;/strong&gt;&lt;/em&gt; (&lt;strong&gt;ARMS&lt;/strong&gt;) is a service that allows the use of Redis and MongoDB to create a Bot Framework Context management as a two-level cache.&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;To implement a two-level cache strategy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redis will be used as the first-level cache, with a short expiration time to speed up writing operations.&lt;/li&gt;
&lt;li&gt;MongoDB will be used as the second-level cache, with a high expiration time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-redis-mongo-synchronizer&lt;/strong&gt;&lt;/em&gt; (&lt;strong&gt;ARMS&lt;/strong&gt;) will be responsible for transferring expired data from Redis to MongoDB.&lt;/p&gt;
&lt;p&gt;The service is implemented as a web server just to make it easier to handle it and to connect with Aura monitoring systems, such as Prometheus. It is in charge of managing the expired data in Redis using the &lt;a href=&#34;https://redis.io/docs/latest/develop/interact/pubsub/&#34;&gt;Pub/Sub system provided by Redis&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;aura-redis-mongo-synchronizer-components&#34;&gt;Aura Redis Mongo Synchronizer components&lt;/h2&gt;
&lt;p&gt;The following figure shows the main components of the &lt;em&gt;&lt;strong&gt;aura-redis-mongo-sync&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;div style = &#34;width:800px; margin:0 auto&#34;&gt;  
&lt;p&gt;&lt;img src=&#34;../../images/redis-mongo-sync/redis-mongo-sync-diagram.svg&#34; alt=&#34;Aura Redis Mongo sync components&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id=&#34;server&#34;&gt;Server&lt;/h3&gt;
&lt;p&gt;The web server is implemented using &lt;a href=&#34;https://fastify.dev/&#34;&gt;fastify&lt;/a&gt;, a very fast web framework for &lt;strong&gt;NodeJS&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The web server works only as the service controller, while all the synchronization tasks are performed by a module outside the service called &lt;em&gt;&lt;strong&gt;aura-redis-mongo-sync&lt;/strong&gt;&lt;/em&gt; or &lt;strong&gt;&lt;strong&gt;ARMS&lt;/strong&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;modules&#34;&gt;Modules&lt;/h3&gt;
&lt;h4 id=&#34;redis-mongo-sync&#34;&gt;Redis Mongo Sync&lt;/h4&gt;
&lt;p&gt;It is responsible for synchronizing data between Redis and MongoDB.&lt;/p&gt;
&lt;p&gt;It uses a &lt;a href=&#34;https://redis.io/docs/latest/develop/interact/pubsub/&#34;&gt;publish/subscribe system provided by Redis&lt;/a&gt; to notify the module when to synchronize data from Redis to MongoDB, based on events generated by Redis regarding the changes in the status of the documents.&lt;/p&gt;
&lt;h3 id=&#34;controllers--services&#34;&gt;Controllers &amp;amp; Services&lt;/h3&gt;
&lt;p&gt;When the previous step is finished, the request lands on the controller.&lt;/p&gt;
&lt;p&gt;Each controller processes the request through a service in charge of implementing the logic. Once the request has been processed, the controller prepares and sends the response.&lt;/p&gt;
&lt;p&gt;There is a controller to manage requests associated with the server itself (&lt;a href=&#34;#generic-controller&#34;&gt;&lt;em&gt;&lt;strong&gt;generic&lt;/strong&gt;&lt;/em&gt; controller&lt;/a&gt;) and a controller for each module, in charge of handling the requests of that specific module.&lt;/p&gt;
&lt;h4 id=&#34;generic-controller&#34;&gt;Generic controller&lt;/h4&gt;
&lt;p&gt;As indicated above, the &lt;em&gt;&lt;strong&gt;generic&lt;/strong&gt;&lt;/em&gt; controller handles requests to retrieve information of the status of the server itself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;healthz&lt;/code&gt;: It is used to check if the server is online returning a simple status response: &lt;code&gt;{&amp;quot;status&amp;quot;: &amp;quot;ok&amp;quot;}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lastevent&lt;/code&gt;: It returns the date of the last synchronization between Redis and MongoDB: &lt;code&gt;{ status: &#39;ok&#39;, lastEvent: DATE }&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shutdown&lt;/code&gt;: Service to be invoked mainly by &lt;strong&gt;Kubernetes&lt;/strong&gt; cluster to perform a server graceful shutdown.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;data-storage&#34;&gt;Data Storage&lt;/h2&gt;
&lt;p&gt;A new class has been created that implements the &lt;a href=&#34;https://learn.microsoft.com/en-us/javascript/api/botbuilder-core/storage?view=botbuilder-ts-latest&#34;&gt;Bot Framework &lt;em&gt;&lt;strong&gt;storage&lt;/strong&gt;&lt;/em&gt; interface&lt;/a&gt; called &lt;code&gt;RedisMongoDbStorage&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This class writes the context data to Redis and firstly, it reads the data from Redis. If this data does not exist in Redis, it fetches it from MongoDB.&lt;/p&gt;
&lt;p&gt;This class is included in the &lt;a href=&#34;../../docs/developers-workspace/develop-features/aura-utilities/aura-bot-utilities/aura-bot-common/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-common-utilities&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; repository. Check the &lt;a href=&#34;https://github.com/Telefonica/aura-common-utilities/blob/master/packages/aura-bot-utilities/src/aura-bot-common/storage/redis-mongo-storage.ts&#34;&gt;Github repository&lt;/a&gt; for further details.&lt;/p&gt;
&lt;h2 id=&#34;data-structure-in-redis&#34;&gt;Data structure in Redis&lt;/h2&gt;
&lt;p&gt;Redis stores its data in &lt;code&gt;key:value&lt;/code&gt; structures. This &lt;code&gt;value&lt;/code&gt; can support different data structures.&lt;/p&gt;
&lt;p&gt;In the following sections, the ones used to store the bot context are explained.&lt;/p&gt;
&lt;p&gt;These structures support an expiration time so that Redis deletes them when the expiration time is reached, so the content has expired. The expiration of a record in Redis emits an specific &lt;code&gt;event&lt;/code&gt;, of &lt;code&gt;expired&lt;/code&gt; type, that can be handled by an external module.&lt;/p&gt;
&lt;h3 id=&#34;context-bot-framework-context&#34;&gt;Context (Bot Framework Context)&lt;/h3&gt;
&lt;p&gt;The bot context is stored in a &lt;code&gt;key:string&lt;/code&gt; structure:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Key: context:[MONGO DATABASE NAME]:[MONGO COLLECTION NAME]:[MONGO CONTEXT INDEX KEY]
Value: The content of the context is stored in a string obtained by converting the Object context in JSON to string.
Expiration: [EXPIRATION]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MONGO DATABASE NAME: Name of the database to use when &lt;strong&gt;ARMS&lt;/strong&gt; writes this data in MongoDB.&lt;/li&gt;
&lt;li&gt;MONGO COLLECTION NAME: Name of the collection to use when &lt;strong&gt;ARMS&lt;/strong&gt; writes this data in MongoDB.&lt;/li&gt;
&lt;li&gt;MONGO CONTEXT INDEX KEY: Key to use when &lt;strong&gt;ARMS&lt;/strong&gt; writes this data in MongoDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When a &lt;code&gt;key:value&lt;/code&gt; data expires in Redis, an &lt;code&gt;event&lt;/code&gt; is emitted indicating which key contained the expired record (event =&amp;gt; &lt;code&gt;expired&lt;/code&gt;). The data can no longer be retrieved because Redis deletes &lt;code&gt;value&lt;/code&gt; data before emitting the event and if this event is not processed, it will not recur, forcing us to use some auxiliary data structures in order to recover the expired data.&lt;/p&gt;
&lt;h4 id=&#34;shadow-keys&#34;&gt;Shadow Keys&lt;/h4&gt;
&lt;p&gt;A Shadow Key is a &lt;code&gt;key:void&lt;/code&gt; structure used to emit the event. As the expiration event returns a key, that will contain the current key of the context containing the data.&lt;/p&gt;
&lt;p&gt;To improve efficiency, this shadow-key contains the key &lt;a href=&#34;https://en.wikipedia.org/wiki/Shard_(database_architecture)&#34;&gt;SHARD&lt;/a&gt;, which allows ARMS to subscribe only to certain shards to improve performance.&lt;/p&gt;
&lt;p&gt;The number of shards is defined in the variable &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt;, which indicates that the algorithm to calculate the shard based on the key will generate numbers between 1 and the value of the variable.&lt;/p&gt;
&lt;p&gt;It is important to notice that the number of shards configured in &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt; must be the same as the number of pods configured in the &lt;em&gt;&lt;strong&gt;aura-redis-mongo-synchronizer&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Key: shadow-key:[SHARD]:context:[MONGO DATABASE NAME]:[MONGO COLLECTION CONTEXT]:[MONGO CONTEXT INDEX KEY]
Value: empty
Expiration:  [REDIS CONTEXT DATABASE EXPIRATION] 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When the service receives the expiration of this key, we can extract the shard and the real value from the context.&lt;/p&gt;
&lt;h4 id=&#34;active-context-list&#34;&gt;Active Context List&lt;/h4&gt;
&lt;p&gt;To ensure all data is synchronized, we need to keep in a list all the active context keys. By doing that, if an error occurs in the service and the expiration notifications are lost, we can recover data by periodically checking this list.&lt;/p&gt;
&lt;p&gt;The data structure to be used is &lt;code&gt;key: score-List&lt;/code&gt;. The score list contains a list of values with a string field and a numeric field by which the data can be sorted. The string field is used to store the key and the numeric field to store the expiration date.&lt;/p&gt;
&lt;p&gt;In this way, we can retrieve those expired records that have not been processed, as items are removed from the list once they are synchronized.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Key: active-context:[SHARD_VALUE]
            context:[MONGO DATABASE NAME]:[MONGO COLLECTION CONTEXT]:[MONGO CONTEXT INDEX KEY 1]     DATE_1
            context:[MONGO DATABASE NAME]:[MONGO COLLECTION CONTEXT]:[MONGO CONTEXT INDEX KEY 2]     DATE_2
            ...
            context:[MONGO DATABASE NAME]:[MONGO COLLECTION CONTEXT]:[MONGO CONTEXT INDEX KEY N]     DATE_N
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To store these elements, we will use partitioned lists in &lt;a href=&#34;https://en.wikipedia.org/wiki/Shard_(database_architecture)&#34;&gt;SHARD&lt;/a&gt; mode, that is, they will be included in the list that corresponds to them according to their &lt;code&gt;KEY&lt;/code&gt;. The &lt;code&gt;SHARD_VALUE&lt;/code&gt; is a number that is calculated from the key and the module obtained by dividing this number by the number of partitions that are configured.&lt;/p&gt;
&lt;p&gt;For example, there is a series of lists to avoid collisions between PODS of the service (&lt;strong&gt;ARMS&lt;/strong&gt;). That is, if the &lt;code&gt;KEY1&lt;/code&gt; key returns &lt;code&gt;301&lt;/code&gt; (this data is obtained by performing an operation on the content of the key) this is divided by the number of partitions, 5 for example, and the module +1 is obtained, to avoid the 0. This indicates that the list where it will be stored will be &lt;code&gt;active-context:2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The execution of this process is based on the current system load. The variables associated to the execution period are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_CACHE_CHECK_UNPROCESSED_INTERVAL_MIN&lt;/strong&gt;, which indicates in seconds the minimum time that will be set.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_CACHE_CHECK_UNPROCESSED_INTERVAL_MAX&lt;/strong&gt;, which indicates in seconds the maximum time for the interval.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The system will recalculate the next run based on the load. If the number of elements to be processed is very high, the interval will be reduced until it reaches the minimum, while if the load is low, the interval will be increased until it reaches the maximum.&lt;/p&gt;
&lt;h4 id=&#34;shard-variables&#34;&gt;SHARD variables&lt;/h4&gt;
&lt;p&gt;To manage the SHARD and the list to be selected by the &lt;strong&gt;ARMS&lt;/strong&gt;, two variables come into play in Redis stored in the &lt;code&gt;key:string&lt;/code&gt; structure.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt; : Number of lists to generate (partitions).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AURA_REDIS_CONTEXT_LAST_SHARD_PROCESSED&lt;/strong&gt;: Partition to manage at that moment, that is, when a service requests this data, one is added to it so that the next service that requests it can access the next partition, and so on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AURA_REDIS_CONTEXT_LAST_INDEX_SHARD_PROCESSED&lt;/strong&gt;: This variable is used to assign event subscriptions in an orderly fashion. For example, if we have two ARMS services and the &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt; is set to four, then the first service will subscribe to 1 and 2 and the second service to 3 and 4. This order of assignment is done by incrementing this environment variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;synchronization-flows&#34;&gt;Synchronization Flows&lt;/h2&gt;
&lt;div style = &#34;width:800px; margin:0 auto&#34;&gt;  
&lt;p&gt;&lt;img src=&#34;../../images/redis-mongo-sync/redis-mongo-sync-flow.svg&#34; alt=&#34;Aura Redis Mongo Synchronization Flow&#34;&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id=&#34;read-data&#34;&gt;Read Data&lt;/h3&gt;
&lt;p&gt;The Bot Framework components will read data in the following order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;They will try to read data from Redis.&lt;/li&gt;
&lt;li&gt;If Redis does not return data, they will try it in MongoDB.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;ARMS&lt;/strong&gt; will read data in two situations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When an expiration event is issued, ARMS reads the corresponding data, obtaining the context key contained in the expired KEY.&lt;/li&gt;
&lt;li&gt;When the active context control service runs (it does it periodically) and it has some expired context that must be synchronized.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;write-data&#34;&gt;Write Data&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bot Framework components will write all their data in Redis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ARMS&lt;/strong&gt; will write the synchronized records in MongoDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NOTE: &lt;strong&gt;ARMS&lt;/strong&gt; also writes data in Redis but only to control its core and internal behavior, incrementing SHARD, updating active context lists, etc.&lt;/p&gt;
&lt;h3 id=&#34;distribution-of-the-event-subscription&#34;&gt;Distribution of the event subscription&lt;/h3&gt;
&lt;p&gt;As previously mentioned, every time a Shadow-Key expires in Redis, it emits an event that will be received by the &lt;strong&gt;ARMS&lt;/strong&gt; services that are subscribed to that event.&lt;/p&gt;
&lt;p&gt;Now, as the Shadow-Key contains the SHARD of the real key of the data, we can distribute the events among different &lt;strong&gt;ARMS&lt;/strong&gt; to improve performance and avoid network overload.&lt;/p&gt;
&lt;p&gt;For the assignment of the events to subscribe, there is a method that is executed every certain time. The value is in the variable &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_CHECK_INDEX_SHARD_INTERVAL&lt;/strong&gt; and is measured in seconds.&lt;/p&gt;
&lt;h4 id=&#34;steps-to-generate-event-subscription&#34;&gt;Steps to generate event subscription&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Save the current state of the service: This saves, in a Redis structure, the identifier of the current &lt;strong&gt;ARMS&lt;/strong&gt; and the current time.&lt;/li&gt;
&lt;li&gt;Consult the number of &lt;strong&gt;ARMS&lt;/strong&gt; services available: This is done by consulting the previous structure, obtaining those services that have been recently updated.&lt;/li&gt;
&lt;li&gt;Calculate the number of events to subscribe: This is done by dividing &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt;, which contains the number of partitions, by the number of services. There is a variable that can limit this assignment, &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_MIN_SHARD_BY_NODE&lt;/strong&gt;: if this variable is greater than the previous result, the value of the variable is used. For example, if the result is 1, but this variable has the value 2, the service must subscribe to 2 events.&lt;/li&gt;
&lt;li&gt;Assign the events: Once the number of events to subscribe to is determined, the &lt;strong&gt;AURA_REDIS_CONTEXT_LAST_INDEX_SHARD_PROCESSED&lt;/strong&gt; variable is consulted and incremented. The value to assign is the module between the returned value and the value of &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt;. In this way, it will assign consecutive values between 1 and the &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Subscription to Redis: Once the SHARDs to be subscribed have been assigned, we only need to disconnect the events that do not match the current selection and connect the ones we do not have connected.&lt;/li&gt;
&lt;/ul&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; To obtain an optimal performance, ideally the number of &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt; should at least match the number of ARMS services.&lt;/p&gt;
&lt;p&gt;Example of distribution for &lt;strong&gt;AURA_REDIS_CONTEXT_CACHE_SHARD_COUNT&lt;/strong&gt; = 5, and adding &lt;strong&gt;ARMS&lt;/strong&gt; services until reaching 5.&lt;/p&gt;
&lt;/br&gt;
&lt;div style = &#34;width:1200px; margin:0 auto&#34;&gt;  
&lt;p&gt;&lt;img src=&#34;../../images/redis-mongo-sync/redis-mongo-sync-flow-shards.svg&#34; alt=&#34;Aura Redis Distribution of events by shard&#34;&gt;&lt;/p&gt;
&lt;/div&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>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-widget/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-widget/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-widget&#34;&gt;Aura widget&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;This section contains the technical documentation of Aura widget components.&lt;/p&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;This component is not available in the current Aura Platform release&lt;/strong&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;The current documentation about &lt;em&gt;&lt;strong&gt;Aura widget&lt;/strong&gt;&lt;/em&gt; component includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/aura-widget/aura-channels-factory/&#34;&gt;Aura channels factory&lt;/a&gt; in charge of the integration of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; in web and mobile environments (iOS and Android).&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Index of &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; APIs definition documents&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; APIs belong to both &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;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;application programming interface (API)&lt;/strong&gt; is a software interface that allows two applications to interact with each other without any user intervention. The API is composed of a collection of software functions and procedures for creation of applications to access features or data of a system, application or other service.&lt;/p&gt;
&lt;p&gt;This section contains all the information related to &lt;strong&gt;Aura APIs&lt;/strong&gt;, both the ones focused on internal use and others used by Aura&amp;rsquo;s channels and users to handle their conversations.&lt;/p&gt;
&lt;p&gt;Most of our services lay on &lt;a href=&#34;https://www.openapis.org/what-is-openapi&#34;&gt;OpenAPI definitions v3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;APIs documentation is provided within the documentation for each specific component. Select the component of your interest and find the available APIs.&lt;/p&gt;
&lt;p&gt;Select the specific API in the left menu and access to the corresponding section to find the API definition document.&lt;/p&gt;
&lt;h2 id=&#34;available-apis&#34;&gt;Available APIs&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aura Virtual Assistant components&lt;/th&gt;
&lt;th&gt;APIs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-bridge/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bridge&lt;/strong&gt;&lt;/em&gt; APIs definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/complex-logic-framework/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-authentication-api/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-authentication-api&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/file-manager/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-file-manager&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ATRIA components&lt;/th&gt;
&lt;th&gt;APIs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-gateway-api&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/atria/technical-components/aura-gateway-api/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-gateway-api&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;atria-model-gateway&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/atria/technical-components/atria-model-gateway/&#34;&gt;&lt;em&gt;&lt;strong&gt;atria-model-gateway&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;Advanced Analytics Models (AAMs)&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/models/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;Advanced Analytics Models (AAMs)&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;br&gt;&lt;br&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cross components&lt;/th&gt;
&lt;th&gt;APIs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-nlp/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;Aura NLP&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/components/aura-configuration-api/api-definition/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;&lt;strong&gt;Release Train Manager&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;../../docs/developers-workspace/develop-features/release-train-manager/rtm-api/&#34;&gt;&lt;em&gt;&lt;strong&gt;Release Train Manager&lt;/strong&gt;&lt;/em&gt; API definition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

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