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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Architecture and main components that you should handle when working over Aura Complex Logic Framework&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;clf-architecture&#34;&gt;CLF architecture&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Aura Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; is a &lt;strong&gt;docker container&lt;/strong&gt;, meaning that it is configured as a lightweight, stand-alone, executable package of software that includes all the required elements to run an application.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; architecture is schematically shown in the following figure, containing different elements described in the succeeding sections.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/clf/clf-architecture.jpg&#34; alt=&#34;Interaction CLF-Aura&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;clf-main-components&#34;&gt;CLF main components&lt;/h2&gt;
&lt;h3 id=&#34;sandbox&#34;&gt;Sandbox&lt;/h3&gt;
&lt;p&gt;A sandbox is an isolated testing environment that enables users to run programs or execute files without affecting the application, system or platform on which they run and to test new programming code.&lt;/p&gt;
&lt;h3 id=&#34;plugins&#34;&gt;Plugins&lt;/h3&gt;
&lt;p&gt;Plugins in &lt;em&gt;&lt;strong&gt;Aura Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; are components that add a specific feature to an existing computer program, enabling its customization.&lt;/p&gt;
&lt;p&gt;The role of plugins within the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; is to receive data, make the required computations and return an adequate response to the handler.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; manages different types of plugins, which are encapsulated in the sandbox. Moreover, it contains several &lt;strong&gt;global plugins&lt;/strong&gt;, but it is possible for developers to &lt;strong&gt;add custom ones&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Some key features of &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; plugins are defined below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Architecture allows each package of plugins to be deployed in its own environment: it is possible to have an isolated container deployed in an independent way containing all the plugins of a specific package (for instance, global plugins).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each package is isolated by being run as a different process by a unique user with randomized name. The rationale behind this is to provide an isolated sandbox to make sure no package of plugins is a security risk. Thereby, each user has limited privileges and computational resources (memory, file descriptors and CPU time) and only runs one process for package.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The running packages can only receive data from a socket, and the appropriate plugin is then executed depending on both the plugin type and the intent contained in the data. The API handler is in charge of forwarding the data to the package, acting as a proxy, but it also checks the requests and transforms the responses back.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To ease working with this architecture, packages, users and sockets have the same random name. This name also appears in the information and error log files.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OBs can develop their own custom plugins in the &lt;em&gt;&lt;strong&gt;Aura Complex Logic Global&lt;/strong&gt;&lt;/em&gt; repository, with each plugin implemented as a class that inherits from &lt;code&gt;PluginBase&lt;/code&gt; and overwrites run method. This method receives the request data and contains the logic of the plugin. It must also generate a response that will be returned to the API handler.
When a request is performed, depending on the intent, the request data will be forwarded to the corresponding plugin automatically. Note that two intents can trigger the same plugin but it is not possible to trigger two plugins with the same intent.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each package of plugins is watched by a supervisor. If the package process crashes, it will be restarted automatically by supervisor. The causes of abrupt exit could be excessive consumption of resources (CPU time, memory or file descriptors) or plugin internal malfunction.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;stub&#34;&gt;Stub&lt;/h3&gt;
&lt;p&gt;A stub, in the context of distributed computing, is a piece of code that is used to convert parameters during a remote procedure call (RPC). An RPC allows a client computer to remotely call procedures on a server computer.&lt;/p&gt;
&lt;p&gt;The parameters used in a function call have to be converted because the client and server computers use different address spaces. Stubs perform this conversion so that the remote server computer perceives the RPC as a local function call.&lt;/p&gt;
&lt;h3 id=&#34;api-server&#34;&gt;API server&lt;/h3&gt;
&lt;p&gt;API server is the process that listens for requests. This API server is based on the cognitive API package and, in this case, is configured to run the &lt;em&gt;&lt;strong&gt;Complex Logic&lt;/strong&gt;&lt;/em&gt; module.&lt;/p&gt;
&lt;p&gt;HTTP requests will be passed to the package API handlers according to the &lt;a href=&#34;../../../docs/components/complex-logic-framework/clf-configuration/&#34;&gt;CLF configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It is also important to mention that API server process is watched by supervisor (meaning that it is fault-tolerant).&lt;/p&gt;
&lt;h3 id=&#34;api-handler&#34;&gt;API handler&lt;/h3&gt;
&lt;p&gt;In &lt;em&gt;&lt;strong&gt;Aura Complex Logic Framework&lt;/strong&gt;&lt;/em&gt;, API handlers are classes that inherit from &lt;code&gt;BaseComplexLogicAPIHandler&lt;/code&gt;. They are responsible for dealing with HTTP requests through the following methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Checking the request is valid.&lt;/li&gt;
&lt;li&gt;Checking that the response is in the correct format.&lt;/li&gt;
&lt;li&gt;Making a new request to the corresponding package process, which contains a group of plugins.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first two items are implemented by the declaration of schemas that define the query request and the response. Plugin API handlers are only responsible for defining which request schema is accepted and which response is valid (also by using a schema).&lt;/p&gt;
&lt;p&gt;The request to a specific package is made automatically by the system as long as the specific intent that summons the trigger is recognized. The configuration is described in &lt;a href=&#34;../../../docs/components/complex-logic-framework/clf-configuration/#plugins-configuration&#34;&gt;plugins configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;api-plugin&#34;&gt;API plugin&lt;/h3&gt;
&lt;p&gt;API plugin is an internal component based on the cognitive API package. It exposes the plugins contained in a package.&lt;/p&gt;
&lt;h3 id=&#34;kernel-platform-connectors&#34;&gt;Kernel Platform connectors&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Kernel&lt;/strong&gt; is the database where Telefónica stores all the data of its customers in a safe and reliable way, allowing users to control their data at the same time.&lt;/p&gt;
&lt;p&gt;These data can be consulted through a Kernel API with the necessary permissions. From the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt;, the only way to access Kernel is through our connectors. The connectors are used, for example, to obtain customer invoices or offer the catalog of devices and services.&lt;/p&gt;
&lt;p&gt;These connectors provide total security in order to avoid problems of wrong, malicious or not careful use by third party developers. For this purpose, prior to any request to Kernel, a check of the required permits is made.&lt;/p&gt;
&lt;h2 id=&#34;clf-sequence-diagram&#34;&gt;CLF Sequence diagram&lt;/h2&gt;
&lt;p&gt;The following sequence diagram shows the functional flow of the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt;, starting with the request from &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; to the &lt;em&gt;&lt;strong&gt;Complex Logic&lt;/strong&gt;&lt;/em&gt; module.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/clf/clf-functional-flowchart.png&#34; alt=&#34;CLF functional flowchart&#34;&gt;&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the configuration required by the Complex Logic Framework, both operational configuration and configuration of plugins&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The configuration of the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; has two different purposes, each of them supported by a configuration file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#general-operational-configuration&#34;&gt;General operational configuration&lt;/a&gt;&lt;br&gt;
General configuration for the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; performance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#plugins-configuration&#34;&gt;Plugins configuration&lt;/a&gt;&lt;br&gt;
Specific configuration for each plugin developed over the &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;general-operational-configuration&#34;&gt;General operational configuration&lt;/h2&gt;
&lt;p&gt;The file &lt;code&gt;bootstrap.cfg&lt;/code&gt; contains the &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; operational config sections. This file is included in the &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; repository, within the folder:&lt;br&gt;
&lt;em&gt;~/aura-complex-logic-[country_code]/config/etc/bootstrap.cfg&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;OBs must not modify these fields. If any modification is required, it must be adjusted after approval by the Aura Platform Team&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The file follows the general structure shown hereunder:&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:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logging&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;handlers&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;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 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;loggers&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;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 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;root&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;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 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;logging&#34;&gt;Logging&lt;/h3&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:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;logging&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;handlers&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:#4e9a06&#34;&gt;&amp;#39;hdl1&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;class&amp;#39;&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;logging.StreamHandler&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:#4e9a06&#34;&gt;&amp;#39;formatter&amp;#39;&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;console&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:#4e9a06&#34;&gt;&amp;#39;level&amp;#39;&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;DEBUG&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;hdl2&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;class&amp;#39;&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;logging.StreamHandler&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:#4e9a06&#34;&gt;&amp;#39;formatter&amp;#39;&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;simple&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:#4e9a06&#34;&gt;&amp;#39;level&amp;#39;&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;DEBUG&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;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&#34;&gt;loggers&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:#4e9a06&#34;&gt;&amp;#39;plugins&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;level&amp;#39;&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;DEBUG&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:#4e9a06&#34;&gt;&amp;#39;handlers&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;hdl1&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;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;filters&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;propagate&amp;#39;&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;False&lt;/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&#34;&gt;root&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:#4e9a06&#34;&gt;&amp;#39;level&amp;#39;&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;DEBUG&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:#4e9a06&#34;&gt;&amp;#39;handlers&amp;#39;&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:#4e9a06&#34;&gt;&amp;#39;hdl2&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;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;The main fields are explained below. However, for more details, developers are kindly requested to read the &lt;a href=&#34;https://docs.python.org/3/library/logging.config.html&#34;&gt;Python logging documentation&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;handlers&lt;/code&gt;: This field configures a dictionary with different logging handlers. Each key is the name of a handler, and is composed of the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;class&lt;/code&gt;: It is configured with Python logging handlers (See Python documentation).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;formatter&lt;/code&gt;: It configures the format of logs. It must be filled with the labels &lt;code&gt;json&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;, &lt;code&gt;console&lt;/code&gt; or &lt;code&gt;simple&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level&lt;/code&gt;: It is referred to the level of the logging event. It must be filled with the labels &lt;code&gt;INFO&lt;/code&gt;, &lt;code&gt;ERROR&lt;/code&gt;, &lt;code&gt;WARN&lt;/code&gt; or &lt;code&gt;DEBUG&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;loggers&lt;/code&gt;: The corresponding value is a Python dictionary in which each key is a logger name and each value is a dictionary that describes how to configure the corresponding Logger instance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;level&lt;/code&gt; (optional parameter): Level of the logger.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;handlers&lt;/code&gt; (optional parameter): List of IDs of the handlers for this logger.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;filters&lt;/code&gt; (optional parameter): List of IDs of the filters for this logger.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;root&lt;/code&gt;: This field includes the configuration for the root logger.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;level&lt;/code&gt; (optional parameter): Level of the logger.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;handlers&lt;/code&gt; (optional parameter): List of IDs of the handlers for this logger.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;plugins-configuration&#34;&gt;Plugins Configuration&lt;/h2&gt;
&lt;p&gt;The file &lt;code&gt;complex_logic.json&lt;/code&gt; includes the specific configuration for each plugin. It is included in the following path of the &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; repository:&lt;br&gt;
&lt;em&gt;~/aura-complex-logic-[country_code]/config/plugins/complex_logic.json&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;OBs must not modify these files. If any modification is required, it must be adjusted after approval by the Aura Platform Team&lt;/strong&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:#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:#4e9a06&#34;&gt;&amp;#34;aura_clf_XX.plugins.plugin_1_name.plugin_1_class_name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;             &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;sound_disabled_channels&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;channel_1&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;channel_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:#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:#4e9a06&#34;&gt;&amp;#34;aura_clf_XX.plugins.plugin_N_name.plugin_N_class_name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{}&lt;/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;Each plugin requires a specific configuration. This will be defined in a JSON file with the following structure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Class path: Path and identifier for the plugin.&lt;/li&gt;
&lt;li&gt;Open dictionary including the specific configuration of the plugin.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;enablingdisabling-sound-responses&#34;&gt;Enabling/disabling sound responses&lt;/h3&gt;
&lt;p&gt;Within the configuration dictionary of each plugin, you can include the &lt;code&gt;sound_disabled_channels&lt;/code&gt; field to specify in which channels sound responses (both positive and negative) should be disabled for that plugin. This field must be a list of channel prefixes.&lt;/p&gt;
&lt;p&gt;For example, if a channel prefix is included in this list, the plugin will not play any sound in its responses when the interaction occurs through that channel.&lt;/p&gt;
&lt;p&gt;Currently, the configuration added in this file is not included in the production phase, therefore this file should only list the Plugins class path and keep an empty dictionary as configuration.&lt;/p&gt;
&lt;h3 id=&#34;disabling-contingency-or-fallback-modes-for-tv-search-use-case&#34;&gt;Disabling contingency or fallback modes for tv search use case&lt;/h3&gt;
&lt;p&gt;For the tv search use case, in the configuration dictionary of the plugin &lt;code&gt;aura_clf_video.plugins.tv_search_plugin.TvSearchPlugin&lt;/code&gt;, you can include the &lt;code&gt;contingency_disabled_channels&lt;/code&gt; field to specify if the contingency or fallback search mode is disabled for a specific channel. This field must be a list of channel prefixes.&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:#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:#4e9a06&#34;&gt;&amp;#34;aura_clf_video.plugins.tv_search_plugin.TvSearchPlugin&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;config&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;contingency_disabled_channels&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;channel_1&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;channel_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:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/complex-logic-framework/clf-files/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/complex-logic-framework/clf-files/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-complex-logic-framework-files-and-libraries&#34;&gt;Aura Complex Logic Framework files and libraries&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of the files and libraries that integrate the Complex Logic Framework&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;requirementstxt-file&#34;&gt;requirements.txt file&lt;/h2&gt;
&lt;p&gt;This file contains Python module dependencies. By default, it includes two own libraries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Library &lt;a href=&#34;#auracog-lib&#34;&gt;&lt;code&gt;auracog-lib&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Library &lt;a href=&#34;#auracog-plugins-lib&#34;&gt;&lt;code&gt;auracog-plugins-lib&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And other external ones used in the testing and verification stages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;flake8-htmlPylint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytest-pylint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pytest-html&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is possible to include new dependencies in this file if required for the development of new plugins.&lt;/p&gt;
&lt;h3 id=&#34;auracog-lib&#34;&gt;auracog-lib&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;auracog-lib&lt;/code&gt; library is a Python package containing a few basic classes &amp;amp; modules intended as helpers for Aura Cognitive applications, specifically:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuration: it contains &lt;code&gt;AuConfig&lt;/code&gt;, wrapper for the standard Python ConfigParser with certain added functionality.&lt;/li&gt;
&lt;li&gt;Logging: it contains &lt;code&gt;LoggerWrapper&lt;/code&gt;, wrapper for the standard Python logging with certain added functionality.&lt;/li&gt;
&lt;li&gt;Testing: it contains functionality used in test development.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;auracog-plugins-lib&#34;&gt;auracog-plugins-lib&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;auracog-plugins-lib&lt;/code&gt; contains the necessary utilities for all the plugins, such as validators and metrics used in verification and performance scripts or plugin_base, the base class of all the plugins.&lt;/p&gt;
&lt;h2 id=&#34;plugin_basepy-file&#34;&gt;plugin_base.py file&lt;/h2&gt;
&lt;p&gt;This is an essential internal file in Aura &lt;em&gt;&lt;strong&gt;Complex Logic Framework&lt;/strong&gt;&lt;/em&gt; for its proper performance. This file contains the base class &lt;code&gt;PluginBase&lt;/code&gt;, from which all the plugins that are developed will inherit.&lt;/p&gt;
&lt;p&gt;All the plugins developed will be initialized with a configuration and a logger that will be passed to them as a parameter and they will have to necessarily develop an asynchronous run method. The run method is the main method of the plugin and will develop the activity for which the plugin has been designed. This method receives data, a dict with the JSON request as a parameter and it will return the JSON response as a dict.&lt;/p&gt;
&lt;p&gt;It is also possible to use other auxiliary methods if developers consider it.&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;from&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;typing&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;Dict&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;from&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;auracog_lib&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;aura_logging&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;logger_wrapper&lt;/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;from&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;auracog_lib&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;code_utilities&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;type_hints_utilities&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;TypeHintsUtilitie&lt;/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;from&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;auracog_lib&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;utils&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;exception&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;AuraAbstractException&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;class&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;PluginBase&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;def&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;self&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;cfg&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;Dict&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;log&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;logger_wrapper.LoggerWrapper&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        Init method. No overload is required.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        :param cfg: a dict with the configuration for plugins.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        :param log: a logger object that implements the usual info, debug and error methods.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        &amp;#34;&amp;#34;&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&#34;&gt;self&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;cfg&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;cfg&lt;/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;self&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;log&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;log&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;async&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;run&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;self&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;data&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;TypeHintsUtilities.Json&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;-&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;TypeHintsUtilities&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;Json&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        Overload this methods in your custom plugins.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        :param data: A dict with the JSON request.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        :return: The JSON response that will be returned as a dict.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;        &amp;#34;&amp;#34;&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&#34;&gt;raise&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;AuraAbstractException&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/complex-logic-framework/clf-global-plugins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/complex-logic-framework/clf-global-plugins/</guid>
      <description>
        
        
        &lt;h1 id=&#34;aura-complex-logic-framework-global-plugins&#34;&gt;Aura Complex Logic Framework global plugins&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global plugins developed in Aura Complex Logic Framework&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;../../../docs/components/complex-logic-framework/clf-concepts/#plugins&#34;&gt;Plugins&lt;/a&gt; in Aura &lt;em&gt;&lt;strong&gt;Complex Logic framework&lt;/strong&gt;&lt;/em&gt; are components that add a specific feature, thus enabling its customization. They receive data, make the required computations and return an adequate response to the handler&lt;/p&gt;
&lt;p&gt;Aura &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; contains several global plugins, but it is possible for developers to add custom ones in the Aura &lt;em&gt;&lt;strong&gt;Complex Logic&lt;/strong&gt;&lt;/em&gt; global repository.&lt;/p&gt;
&lt;p&gt;This section describes the current catalog of Aura CLF global plugins developed by Aura Global Team. Currently, &lt;em&gt;&lt;strong&gt;CLF&lt;/strong&gt;&lt;/em&gt; only contains &lt;strong&gt;video plugins&lt;/strong&gt;, suitable for TV use cases.&lt;/p&gt;
&lt;h2 id=&#34;aura-clf-video-plugins&#34;&gt;Aura CLF video plugins&lt;/h2&gt;
&lt;h3 id=&#34;input-validation-video-plugin&#34;&gt;Input validation video plugin&lt;/h3&gt;
&lt;p&gt;This is a swagger whose role is the validation of the input for video plugins. It includes a sub-section for each plugin, corresponding to a specific TV use case.&lt;/p&gt;
&lt;p&gt;The purpose of this swagger is to show the description models and examples for possible video plugin requests and responses.&lt;/p&gt;
&lt;p&gt;&amp;#x2139;&amp;#xfe0f; Check the multiple example response of plugins: Success, Error invalid request, etc.&lt;/p&gt;
&lt;p&gt;Access here to &lt;a href=&#34;../../../docs/components/complex-logic-framework/clf-global-plugins/input-validation-swagger/&#34;&gt;Input validation video plugin&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;tv-search-plugin&#34;&gt;TV search plugin&lt;/h3&gt;
&lt;p&gt;Plugin for the TV search use case:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/global-use-cases/video-use-cases/tv-search/tv-search-plugin/&#34;&gt;TV search plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tv-display-plugin&#34;&gt;TV display plugin&lt;/h3&gt;
&lt;p&gt;Plugin for the TV display use case:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/global-use-cases/video-use-cases/tv-display/tv-display-plugin/&#34;&gt;TV display plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tv-content-get-info-plugin&#34;&gt;TV content get info plugin&lt;/h3&gt;
&lt;p&gt;Plugin for the TV content get info use case:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/global-use-cases/video-use-cases/tv-content-get-info/tv-content-get-info-plugin/&#34;&gt;TV content get info plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tv-vod-epg-information-plugin&#34;&gt;TV vod epg information plugin&lt;/h3&gt;
&lt;p&gt;Plugin for the TV vod epg information use case:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../../docs/components/global-use-cases/video-use-cases/tv-vod-epg-information/tv-vod-epg-information-plugin/&#34;&gt;TV vod epg information plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Complex Logic Framework API swagger documentation, which is the main swagger for all CLF plugins
&lt;br&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;../../../techFiles/apis/complex-logic/swagger.yaml&#34;&gt;Download swagger file&lt;/a&gt;&lt;/p&gt;

&lt;/div&gt;


&lt;div id=&#34;ohpen_swagger_ui&#34;&gt;&lt;/div&gt;
&lt;script&gt;
  window.onload = function () {
    const ui = SwaggerUIBundle({
      url: &#34;/techFiles/apis/complex-logic/swagger.yaml&#34;,
      dom_id: &#39;#ohpen_swagger_ui&#39;,
      presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset
      ]
    });
    window.ui = ui;
  };
&lt;/script&gt;


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