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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura Bot architecture and starting components&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction-to-bot-framework-service&#34;&gt;Introduction to Bot Framework service&lt;/h2&gt;
&lt;p&gt;A bot is an application, particularly an HTTP server, that allows &lt;strong&gt;interaction with users in a conversational way&lt;/strong&gt;. Different means of interaction are available, such as text, cards with images, video or audio and speech.&lt;/p&gt;
&lt;p&gt;Users interact with the bot through a given channel, that is the final application used directly by the users. For instance, the bot can be accessible from &lt;strong&gt;Facebook&lt;/strong&gt;, &lt;strong&gt;WhatsApp&lt;/strong&gt; or from any private application, such as My O2 or Mi Movistar. Every message exchanged between the user and the bot is called an &lt;strong&gt;activity&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Microsoft Bot Framework Service&lt;/strong&gt;, that is the main component of &lt;strong&gt;Azure Bot Service&lt;/strong&gt;, is responsible for sending the user&amp;rsquo;s request to the particular bot instance, in this case, to the corresponding instance of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;. Channels communicating with a bot should include additional information required by this specific bot to handle the message in the body of the request, i.e., in the activity. &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; provides a definition of the &lt;a href=&#34;../../../docs/components/request-response-model/&#34;&gt;&lt;code&gt;channelData&lt;/code&gt;&lt;/a&gt; field of the activity, so channels are able to send and receive this information needed to handle Aura use cases.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;, as a bot based on Microsoft Bot Framework, understands different types of &lt;a href=&#34;https://github.com/Microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md&#34;&gt;&lt;strong&gt;activities&lt;/strong&gt;&lt;/a&gt;.
The most basic types of &lt;strong&gt;activities&lt;/strong&gt; used by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#aura-bot-messages-flowchart&#34;&gt;&lt;em&gt;&lt;strong&gt;Message&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;: Means to transmit the user&amp;rsquo;s needs to the bot.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/em&gt;: Events are in charge of the end-to-end communication between &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; and channels. They are managed by the &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/middlewares/incoming-event-middleware/&#34;&gt;&lt;em&gt;&lt;strong&gt;incoming-event-middleware&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;ConversationUpdate&lt;/strong&gt;&lt;/em&gt;: Activity that describes a change in conversation&amp;rsquo;s members, description, existence, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Communication between BotFramework Service and &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is based on HTTP. BotFramework Service sends an HTTP &lt;code&gt;POST&lt;/code&gt; request to the bot, with the incoming activity from the user. The bot should respond with a &lt;code&gt;200&lt;/code&gt; HTTP status code to this request. In &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;, this is executed before going on with the processing of the activity, so the echo message of the user is returned before the activity generated as an answer. These activities are sent to BotFramework Service as HTTP &lt;code&gt;POST&lt;/code&gt; request, that is responded with &lt;code&gt;200&lt;/code&gt; HTTP status code, too.&lt;/p&gt;
&lt;p&gt;Once an activity arrives at the bot, the HTTP server should pass it to the &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/#aura-botframework-adapter&#34;&gt;BotFramework Adapter&lt;/a&gt;, that starts the activity processing.&lt;/p&gt;
&lt;p&gt;At this moment, a &lt;strong&gt;turn&lt;/strong&gt; starts, that refers to all the steps done from the moment that an activity enters the bot until all the answer activities are returned to the user. Each turn lays on a &lt;a href=&#34;https://docs.microsoft.com/es-es/javascript/api/botbuilder-core/turncontext?view=botbuilder-ts-latest&#34;&gt;&lt;code&gt;TurnContext&lt;/code&gt;&lt;/a&gt;, that holds all the information about the current activity. Bot Framework automatically includes in the &lt;code&gt;TurnContext&lt;/code&gt; object some information, but &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; extends this object with extra information that makes it easier to provide a response to the user.&lt;/p&gt;
&lt;p&gt;Please, check detailed information about &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-basics?view=azure-bot-service-4.0&amp;amp;tabs=javascript.&#34;&gt;Microsoft Bot Framework Service and the related SDK&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-core-architecture&#34;&gt;Aura Bot core architecture&lt;/h2&gt;
&lt;p&gt;The following diagram shows all the components running in any &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; instance. They are shown as they are loaded during bot start-up.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Legend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blue boxes&lt;/strong&gt;: singleton components &lt;br&gt; &lt;strong&gt;Yellow boxes within them&lt;/strong&gt;: components that are handled the same way &lt;br&gt; &lt;strong&gt;Middlewares:&lt;/strong&gt; &lt;br&gt;   -	&lt;strong&gt;M&lt;/strong&gt;: mandatory ones &lt;br&gt;   - &lt;strong&gt;O&lt;/strong&gt;: optional, executed only if they are properly configured &lt;br&gt; &lt;strong&gt;Execution mode:&lt;/strong&gt; &lt;br&gt;   - &lt;strong&gt;F&lt;/strong&gt;: execution flow stops when middleware fails &lt;br&gt;   - &lt;strong&gt;T&lt;/strong&gt;: execution continues when middleware fails&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/aura-bot/bot-arch-diagrams-components.svg&#34; alt=&#34;Aura Bot architecture&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-messages-flowchart&#34;&gt;Aura Bot messages flowchart&lt;/h2&gt;
&lt;p&gt;As explained before, &lt;em&gt;&lt;strong&gt;messages&lt;/strong&gt;&lt;/em&gt; are a type of activities that manage requests from the users: &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; receives a request from a user and provides an answer back.&lt;/p&gt;
&lt;p&gt;The following diagram include the messages flow through &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/bot-arch-diagrams-message-flow.svg&#34; alt=&#34;Aura Bot message flow&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;aura-bot-starting-components-and-modules-aura-orchestrator&#34;&gt;Aura Bot starting components and modules: Aura orchestrator&lt;/h2&gt;
&lt;p&gt;Currently, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; includes an &lt;strong&gt;orchestrator&lt;/strong&gt; that controls how the system is loaded and indicates which components and modules are required for the bot start-up.&lt;/p&gt;
&lt;p&gt;The orchestrator handles a sorted array of components that must implement a series of methods that may receive the bot configuration if necessary. Modules are then initialized asynchronously, although they were synchronous.&lt;/p&gt;
&lt;p&gt;This behavior simplifies both the definition of the singleton modules and how the orchestrator initializes them, with a minimum loss of performance during start-up.&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;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;orderedModules&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 style=&#34;color:#000&#34;&gt;ModuleA&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ModuleB&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ModuleC&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;// Instantiate the Service App.
&lt;/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:#204a87;font-weight:bold&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;appOrchestrator&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;new&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Orchestrator&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;// Add configuration, that will be required by almost all other modules
&lt;/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;appOrchestrator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;setConfigurationManager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&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;// Add the dependent modules in order.
&lt;/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;appOrchestrator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;addModules&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;sortedModules&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;// Initiate the App.
&lt;/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:#204a87;font-weight:bold&#34;&gt;await&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;appOrchestrator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;init&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;The orchestrator module is created during the server start-up with the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ConfigurationManager&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Class that handles &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; configuration, that is the component in charge of loading the environment variables.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Singleton Modules&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They are: MiniBotServiceMock, AuraChannelsConfiguration, AuraMongoDb.Connector, KpiHandler, HttpMonkeyPatcher, PluginManager, LocaleManager, AuraCacheManagement, AuraBotServer.&lt;/p&gt;
&lt;p&gt;These modules are loaded in the given order. If any of these modules does not start correctly, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; does not start. Otherwise, AuraBotServer is up and running at the end of the process. All these modules are available all along the bot.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MiniBotServiceMock is only started if the bot is running locally through &lt;a href=&#34;../../../docs/experiences-builder/tools/aura-minibot/&#34;&gt;Aura minibot&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;how-to-define-singleton-modules-in-aura&#34;&gt;How to define singleton modules in Aura&lt;/h3&gt;
&lt;p&gt;In order to develop a new singleton module that can be used by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; both internally and during the dialog execution, developers should keep in mind the following issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All modules added to the orchestrator need and publish a static variable called &lt;code&gt;instance&lt;/code&gt;, that holds the singleton instance of that module.&lt;/li&gt;
&lt;li&gt;Modules must have a public static method: &lt;code&gt;init&lt;/code&gt;, that could be async or not depending on the needs of the module start-up. This method creates the singleton instance (and sets it to then &lt;code&gt;instance&lt;/code&gt; variable). This method should only be called once by module or must throw an exception. It is only called by the orchestrator.&lt;/li&gt;
&lt;li&gt;It is also recommended to provide an empty private constructor that avoids the creation of new instances of the module.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An example of implementation is 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;export&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Class1&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;public&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Class1&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;private&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;constructor&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:#8f5902;font-style:italic&#34;&gt;// Stuff here...
&lt;/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;font-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;public&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;async&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;init&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Promise&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Class1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-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;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Class1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-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;Class1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Class1&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;// More stuff here
&lt;/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&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;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Class1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&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;throw&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Error&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;An instance of Class1  already exists&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;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;p&gt;To use any of these modules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Import its dependency.&lt;/li&gt;
&lt;li&gt;Access the module &lt;code&gt;instance&lt;/code&gt; property and call the required method.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following example shows how to get a text translated by the &lt;em&gt;LocaleManager&lt;/em&gt;.&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:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;LocaleManager&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;from&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;@telefonica/aura-utilities/lib/aura-locale-manager&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:#a40000&#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;LocaleManager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getText&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;errors:error.invalidScopes&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;auraUser&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;corr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/aura-bot-platform/aura-bot-components/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/aura-bot-platform/aura-bot-components/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-bot-components&#34;&gt;Aura Bot components&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description and role of the main Aura Bot components&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; components can be categorized into three main groups for documentary purposes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot Platform components&lt;/strong&gt;
Components &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; has, as a BotFramework bot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/recognizers/&#34;&gt;Aura Bot recognizers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/middlewares/&#34;&gt;Aura Bot middlewares&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/internal-dialogs/&#34;&gt;Aura Bot dialogs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/aurabotadapter/&#34;&gt;Aura Bot Adapter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#aura-bot-activityhandler&#34;&gt;Aura Bot ActivityHandler&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot functional modules&lt;/strong&gt;&lt;br&gt;
Components that have been built over &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; to provide it with specific functionalities.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/plugin-manager/&#34;&gt;Plugin manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/intent-dialog-routing/&#34;&gt;Routing manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot databases&lt;/strong&gt;
Databases used by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/bot-databases/#mongodb&#34;&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/bot-databases/#cache-module&#34;&gt;Cache module&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;aura-bot-activityhandler&#34;&gt;Aura Bot ActivityHandler&lt;/h2&gt;
&lt;p&gt;This is properly the core of the bot, i.e., the message dispatcher. &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; just extends the &lt;code&gt;ActivityHandler&lt;/code&gt; provided by BotFramework to handle activities properly.&lt;/p&gt;
&lt;p&gt;It overwrites the following events, that are executed just after all incoming middlewares finish:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;onTurn&lt;/code&gt;: to update the states of the turn properly: &lt;code&gt;conversationState&lt;/code&gt;, &lt;code&gt;userState&lt;/code&gt;, &lt;code&gt;userAuthState&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onMessage&lt;/code&gt;: to run the &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-components/internal-dialogs/main-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;main&lt;/strong&gt;&lt;/em&gt; dialog&lt;/a&gt;, just after states have been updated.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onDialog&lt;/code&gt;: it is executed after the whole &lt;em&gt;&lt;strong&gt;main&lt;/strong&gt;&lt;/em&gt; dialog ends and updates the states of the turn.&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura Bot configuration basics, nomenclature, environment variables and libraries configuration&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The current section includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#configuration-basics&#34;&gt;Configuration basics&lt;/a&gt;: process and priorities, nomenclature, validation of the configuration, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#aura-channels-configuration&#34;&gt;Aura channels configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/configuration/environment-variables/&#34;&gt;Updated list of Aura Bot environment variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/configuration/libraries-configuration/&#34;&gt;Aura Bot libraries configuration and variables&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuration-basics&#34;&gt;Configuration basics&lt;/h2&gt;
&lt;h3 id=&#34;process-and-priorities&#34;&gt;Process and priorities&lt;/h3&gt;
&lt;p&gt;Aura components environment configuration will be loaded merging the variables defined in the environment of the host running the server and those defined in a configuration file, that will be passed to the server as an environment variable named &lt;code&gt;CONFIG_FILE&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Variable values defined in the host environment will take precedence to those defined in the &lt;code&gt;CONFIG_FILE&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Finally, variables collected by the make-up process of the external libraries &lt;code&gt;.env.libraries&lt;/code&gt; will be loaded with less priority (as if they had been defined in the environment or in the &lt;code&gt;CONFIG_FILE&lt;/code&gt;, they will have more priority).&lt;/p&gt;
&lt;p&gt;Afterwards, all variables are joined together and, in case the same variable key is used twice, the priority will be as follows (the higher in the list, the more priority):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Vars from the environment&lt;/li&gt;
&lt;li&gt;Vars from the file pointed by &lt;code&gt;CONFIG_FILE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Vars from &lt;code&gt;.env.libraries&lt;/code&gt; (in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; root, autogenerated file)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;nomenclature&#34;&gt;Nomenclature&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Environment variables names should start with &lt;code&gt;AURA_&lt;/code&gt; in main Aura components, to avoid problems with the overlapping of system variables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Environment variables used in &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; libraries should start with the name of the library (&lt;code&gt;BILL_&lt;/code&gt;), to isolate variable names and avoid overwriting between different libraries.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&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; &lt;strong&gt;Note&lt;/strong&gt;:&lt;br&gt;
Review carefully with the DevOps Team variable names that are set automatically by kubernetes, such as &lt;code&gt;[APP_NAME]_PORT&lt;/code&gt; that has the docker host of the k8s cluster.
In the case of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; pods, it will be: &lt;code&gt;AURA_BOT_PORT&lt;/code&gt;. So, this variable must not be used internally.&lt;/p&gt;
&lt;h3 id=&#34;configuration-validation&#34;&gt;Configuration validation&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; counts on a &lt;a href=&#34;https://github.com/hapijs/joi&#34;&gt;@hapi/joi&lt;/a&gt; validation schema that will contain the variables used by it.&lt;/p&gt;
&lt;p&gt;During the start-up process, if the validation of global configuration fails, the full list of variables to fix will be shown and the bot will not start. See &lt;a href=&#34;../../../docs/components/aura-bot-platform/configuration/libraries-configuration/&#34;&gt;libraries configuration&lt;/a&gt; for further information.&lt;/p&gt;
&lt;p&gt;Once the configuration is loaded and the instance created, it will count on the property &lt;code&gt;environmentConfiguration&lt;/code&gt;, that contains all the variables set in the system. The names of the variables will be the same than the environment variables, just the type will be set during the schema validation.&lt;/p&gt;
&lt;p&gt;For a complete list of environment variables in the system, check &lt;a href=&#34;../../../docs/components/aura-bot-platform/configuration/environment-variables/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; environment variables&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;passing-configuration-to-our-internal-libraries&#34;&gt;Passing configuration to our internal libraries&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; internal modules such as the server, middlewares and all of our internal libraries (&lt;code&gt;aura-kpis&lt;/code&gt;, &lt;code&gt;aura-logging&lt;/code&gt;, &lt;code&gt;aura-locale-manager&lt;/code&gt;, etc.) must be prepared to get the configuration when creating an instance.&lt;/p&gt;
&lt;p&gt;They should provide a &lt;code&gt;constructor&lt;/code&gt; or an &lt;code&gt;init&lt;/code&gt; method, with a &lt;code&gt;configuration&lt;/code&gt; argument, to receive the environment configuration, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-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;class&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;SingletonModule&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:#8f5902;font-style:italic&#34;&gt;/** Private constructor to avoid unwanted instances */&lt;/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;private&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;constructor&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 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;readonly&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;id&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&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;SingletonModule&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 style=&#34;color:#204a87;font-weight:bold&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;init&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configuration&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;SingletonModule&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;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;SingletonModule&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-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;// Do initializing stuff
&lt;/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:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;SingletonModule&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;else&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;throw&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;Error&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;An instance of SingletonModule already exists&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;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:#8f5902;font-style:italic&#34;&gt;/** Module internal instance */&lt;/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;private&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;SingletonModule&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;h2 id=&#34;aura-channels-configuration&#34;&gt;Aura Channels configuration&lt;/h2&gt;
&lt;p&gt;The list of channels available in the environment includes the channel name, id, basic channel configuration, response type, enabled purposes in Kernel, etc. This setting is configured in &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; server.&lt;/p&gt;
&lt;p&gt;In principle, this setting should not be modified by the OB developers, as it is automatically modified during the make-up phase. However, it is recommended recommended that local developers use their own &lt;a href=&#34;../../../docs/components/aura-configuration-api/&#34;&gt;&lt;em&gt;&lt;strong&gt;aura-configuration&lt;/strong&gt;&lt;/em&gt; API server&lt;/a&gt; and can make changes for local testing purposes.&lt;/p&gt;
&lt;p&gt;You can find detailed information regarding the channel configuration file in &lt;a href=&#34;../../../docs/components/channels/current-channel-model/&#34;&gt;Channel Model section&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;AuraChannelsConfiguration&lt;/code&gt; is a singleton class that contains utils to obtain information about the channels. This module is initialized at server start-up like other singleton modules. To use it, you should use the instance already created:&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;const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;configuration&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;AURA_CHANNELS_CONFIGURATION_API_ENDPOINT&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;http://...&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Mandatory.
&lt;/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;font-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:#000&#34;&gt;AuraChannelsConfiguration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;init&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configuration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The variable &lt;code&gt;AURA_CHANNELS_CONFIGURATION_API_ENDPOINT&lt;/code&gt; contains the URL to access &lt;em&gt;&lt;strong&gt;aura-configuration-api&lt;/strong&gt;&lt;/em&gt; service. &lt;code&gt;AuraChannelsConfiguration&lt;/code&gt; uses the following methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;getChannelByName&lt;/code&gt;&lt;br&gt;
Get channel configuration value by name of channel.
&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:#000&#34;&gt;AuraChannelsConfiguration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getChannelByName&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;channelName&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getChannelByPrefix&lt;/code&gt;&lt;br&gt;
Get channel configuration value by prefix of channel.
&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:#000&#34;&gt;AuraChannelsConfiguration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getChannelByPrefix&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;channelPrefix&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getChannelById&lt;/code&gt;&lt;br&gt;
Get channel configuration value by id of channel.
&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:#000&#34;&gt;AuraChannelsConfiguration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getChannelById&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;channelId&amp;#39;&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;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getChannels&lt;/code&gt;&lt;br&gt;
Get all channels configuration.
&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:#000&#34;&gt;AuraChannelsConfiguration&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;instance&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;getChannels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the main functionalities carried by Aura Bot and the different processes that can be executed for its management&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;The main functionalities in charge of &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; as Aura’s neuronal network are listed below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura users&amp;rsquo; sign up&lt;/strong&gt;:&lt;br&gt;
Different ways of registering users in Aura, depending on the channel. Find detailed information in &lt;a href=&#34;../../../docs/components/channels/authentication/&#34;&gt;channel authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura authentication validation process&lt;/strong&gt;
Aura supports different &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-processes/authentication/users-types/&#34;&gt;types of users&lt;/a&gt;, each of them with access to specific services and use cases: authenticated users and anonymous users. The authentication process carried out by &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is fully explained in &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-processes/authentication/&#34;&gt;Users authentication&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura conversational process&lt;/strong&gt;
&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; is in charge of managing the conversational flow with the user, from receiving her request and understand it to fetch the required data to compose the most appropriate response and provide it back to the user.
Find detailed information in &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-processes/conversational-flow/&#34;&gt;Aura conversational flow&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apart from these core tasks in Aura&amp;rsquo;s performance, there are other processes that can be executed over &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; in order to customize it or access to different components.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-bot-processes/channel-data/&#34;&gt;channelData management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the different types of data and models supported by Aura Bot&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; supports several data models, compatible with different languages or structures in order to execute the conversational flow.&lt;/p&gt;
&lt;p&gt;The current document includes the description of the different models supported by Aura Bot platform, currently:&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-square-check fa-xl&#34; style=&#34;color: #24c80e;&#34;&gt;&lt;/i&gt;   &lt;strong&gt;auraCommand model&lt;/strong&gt;&lt;br&gt;
The use of &lt;code&gt;auraCommands&lt;/code&gt;, that is, pre-defined options that the user can select from Aura&amp;rsquo;s interface, is managed by the &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-models/aura-command/&#34;&gt;&lt;code&gt;auraCommand&lt;/code&gt; model&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-square-check fa-xl&#34; style=&#34;color: #24c80e;&#34;&gt;&lt;/i&gt;   &lt;strong&gt;dialogContext model&lt;/strong&gt;&lt;br&gt;
Aura supports the &lt;a href=&#34;../../../docs/components/aura-bot-platform/aura-models/dialog-context/&#34;&gt;&lt;code&gt;dialogContext&lt;/code&gt; model&lt;/a&gt;, a structure that facilitates the recognition of CardActions and prompts without the need of training.&lt;/p&gt;
&lt;p&gt;&lt;i class=&#34;fa-solid fa-square-check fa-xl&#34; style=&#34;color: #24c80e;&#34;&gt;&lt;/i&gt;   &lt;strong&gt;Aura API Key&lt;/strong&gt;&lt;br&gt;
Aura counts on API Keys to connect to available API endpoints. They are based on an encrypted &lt;a href=&#34;../../../docs/developers-workspace/develop-features/aura-utilities/aura-utilities/aura-validate-apikey/#aura-apikey-model&#34;&gt;APIKey data model&lt;/a&gt;, which is included in &lt;em&gt;&lt;strong&gt;aura-validate-apikey&lt;/strong&gt;&lt;/em&gt; utility.&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the different response message formats supported by Aura Bot&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;By default, &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; uses Directline protocol to send the responses to the channels.&lt;/p&gt;
&lt;p&gt;But it contains different response formats depending on the channel, to be able to deliver the responses in the most appropriate way for each channel.&lt;/p&gt;
&lt;p&gt;The current available formats for Aura responses are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/single-message/&#34;&gt;Single messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/batch-messages/&#34;&gt;Batch messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/file/&#34;&gt;Files messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/templates/&#34;&gt;Templates messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/error/&#34;&gt;Error messages&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/html5/&#34;&gt;HTML5 model&lt;/a&gt;&lt;/p&gt;
&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; For information regarding which &lt;code&gt;channelData&lt;/code&gt; version is returned in Aura response, check the document &lt;a href=&#34;../../../docs/components/aura-bot-platform/response-message-formats/version-in-responses&#34;&gt;Version in responses&lt;/a&gt;&lt;/p&gt;

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