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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura bot generic-ai-dialog-v1, that allows managing several experiences for TV channels using AI services and complex logic resolution.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;generic-ai-dialog-v1&lt;/strong&gt;&lt;/em&gt; allows OBs to implement search and recommendation use cases for TV channels based on AI services and complex logic resolution for &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v1/&#34;&gt;&lt;code&gt;channelData&lt;/code&gt; v1&lt;/a&gt; channels.&lt;/p&gt;
&lt;p&gt;You can check its source code in Github: &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/generic-ai/src/dialogs/generic-ai-dialog-v1.ts&#34;&gt;generic-ai-dialog-v1.ts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;environment-variables&#34;&gt;Environment variables&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Mandatory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_AUTHORIZATION_HEADER&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Authorization header to be sent to &lt;code&gt;AURA_GATEWAY_API_ENDPOINT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_COMPLEX_LOGIC_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Complex Logic&lt;/strong&gt; endpoint to interact with resolution API.&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Aura Gateway API&lt;/strong&gt; endpoint&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ISSUER_URL&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Issuer URL for token info&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData. By default &lt;code&gt;1.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_LA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData for Latin America. By default &lt;code&gt;2.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GENERIC_MP_RESOLUTION_NO_RESULT_CODE&lt;/td&gt;
&lt;td&gt;string[]&lt;/td&gt;
&lt;td&gt;List of resolution codes that indicate no results found. By default &lt;code&gt;[&#39;211&#39;, &#39;462&#39;]&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;p&gt;The dialog works in a similar way to the &lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/generic-dialog-v3/&#34;&gt;generic-ai-dialog-v3&lt;/a&gt; but adapted to the structure of &lt;code&gt;channelData&lt;/code&gt; v1.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Complex Logic proxy&lt;/strong&gt;&lt;/em&gt; is used to interact with &lt;em&gt;&lt;strong&gt;Complex Logic resolution API&lt;/strong&gt;&lt;/em&gt;, which returns a response similar to &lt;em&gt;Movistar Plus Resolution API&lt;/em&gt;. This adaptation is only valid for TVSearch responses for STB channel, because only a subset of fields has been mapped from normalized TV API to legacy TV API.&lt;/p&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura bot &lt;em&gt;&lt;strong&gt;generic-ai-dialog-v3&lt;/strong&gt;&lt;/em&gt;, that allows managing several experiences for TV channels using AI services and complex logic resolution.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;generic-ai-dialog-v3&lt;/strong&gt;&lt;/em&gt; allows OBs to implement search and recommendation use cases for TV channels based on AI services and complex logic resolution for &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;&lt;code&gt;channelData&lt;/code&gt; v3&lt;/a&gt; channels.&lt;/p&gt;
&lt;p&gt;You can check its source code in Github: &lt;a href=&#34;https://github.com/Telefonica/aura-bot-libraries/blob/master/packages/generic-ai/src/dialogs/generic-ai-dialog-v3.ts&#34;&gt;generic-ai-dialog-v3.ts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;environment-variables&#34;&gt;Environment variables&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Mandatory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_AUTHORIZATION_HEADER&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Authorization header to be sent to &lt;code&gt;AURA_GATEWAY_API_ENDPOINT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_COMPLEX_LOGIC_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Complex Logic&lt;/strong&gt; endpoint to interact with resolution API.&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Aura Gateway API&lt;/strong&gt; endpoint&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ISSUER_URL&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Issuer URL for token info&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData. By default &lt;code&gt;1.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_LA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData for Latin America. By default &lt;code&gt;2.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;adding-configurations-for-the-ai-service&#34;&gt;Adding configurations for the AI Service&lt;/h2&gt;
&lt;p&gt;To use the AI Service, you need to add the intent configurations to the channel settings. The configurations should be added in the following format:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;atria&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;dialogs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent.tv.retrieve&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;applicationId&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;816bdab6-3ea3-4a77-bdea-12945d6d7053&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;presetId&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;5d06f26c-a8d8-4f45-a999-102aaa8b191b&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With this configuration, when the generic-ia-dialog-v3 is called with the intent &lt;code&gt;intent.tv.retrieve&lt;/code&gt;, it will use the specified applicationId and presetId to call the generative API.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The dialog starts by retrieving the intent information from the context and logging the start of the dialog.&lt;/li&gt;
&lt;li&gt;Then, it calls the AI service to get a generative response based on the intent and the current session ID. The session ID is updated in the context for future requests.&lt;/li&gt;
&lt;li&gt;Next, it calls the complex logic service to get a resolution based on the intent and entities from the generative response.&lt;/li&gt;
&lt;li&gt;If the resolution indicates no content found, it redirects to the conversational-search dialog.&lt;/li&gt;
&lt;li&gt;Otherwise, it builds an activity to be sent to the user using the intent result, intent settings, and resolution.&lt;/li&gt;
&lt;li&gt;If any error occurs during these steps, it logs the error, sets the error in the context, and builds an activity from the error.&lt;/li&gt;
&lt;li&gt;Finally, it sends the activity to the user and ends the dialog.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sequence-diagram&#34;&gt;Sequence diagram&lt;/h3&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    autonumber
    participant User
    participant Dialog
    participant AI Services
    participant Complex Logic
    participant Conversational Search
    Dialog-&amp;gt;&amp;gt;Dialog: Retrieve intent information from context
    Dialog-&amp;gt;&amp;gt;AI Services: Call AI service with intent and session ID
    AI Services-&amp;gt;&amp;gt;Dialog: Return generative response and session ID
    Dialog-&amp;gt;&amp;gt;Complex Logic: Call complex logic service with intent and entities
    Complex Logic-&amp;gt;&amp;gt;Dialog: Return resolution
    alt No content found in resolution
        Dialog-&amp;gt;&amp;gt;Conversational Search: Redirect to conversational-search dialog
    else Content found
        Dialog-&amp;gt;&amp;gt;Dialog: Build activity with intent result, intent settings, and resolution
        Dialog-&amp;gt;&amp;gt;User: Send activity to user
    end
    Dialog-&amp;gt;&amp;gt;Dialog: End dialog&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-llm-conversational-none-uc&#34;&gt;TV LLM Conversational None UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global Use Case developed by Aura Platform Team that informs users of the platform&amp;rsquo;s available actions, ensuring correct invocation for proper system understanding.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The video &lt;strong&gt;LLM Conversational None&lt;/strong&gt; use case is a global experience designed and developed by Aura Global Team that provides Telefónica customers guidance on gaining knowledge of available platform actions and how to perform them correctly.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover the &lt;a href=&#34;#specifications&#34;&gt;Conversational None specifications&lt;/a&gt; and the particularities of the &lt;a href=&#34;#use-case-development&#34;&gt;use case development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/tv-conversational-none-dialog/&#34;&gt;configure the &lt;em&gt;&lt;strong&gt;conversational-none-dialog&lt;/strong&gt;&lt;/em&gt; for Conversational None use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Access the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-none-llm/tv-none-llm-plugin/&#34;&gt;TV Retrieve plugin for LLM None UC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Discover the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/resources/&#34;&gt;resources used by the Conversational None use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/ai-config-obs/&#34;&gt;AI configuration for each OB&lt;/a&gt; for the TV LLM Conversational None UC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;specifications&#34;&gt;Specifications&lt;/h2&gt;
&lt;h3 id=&#34;request-response-model&#34;&gt;Request-response model&lt;/h3&gt;
&lt;p&gt;The TV LLM Conversational None UC is adapted to both request-response V1 and to its normalized model V3.&lt;/p&gt;
&lt;h3 id=&#34;available-channels&#34;&gt;Available channels&lt;/h3&gt;
&lt;p&gt;The TV LLM Conversational None UC can be enabled in any channel in both v1 and v3 and TV-related payloads.&lt;/p&gt;
&lt;h2 id=&#34;use-case-development&#34;&gt;Use case development&lt;/h2&gt;
&lt;p&gt;The TV LLM Conversational None UC includes the following components:&lt;/p&gt;
&lt;h3 id=&#34;understanding-features&#34;&gt;Understanding features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent:&lt;/strong&gt; &lt;code&gt;intent.conversational.none&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-case-logic&#34;&gt;Use case logic&lt;/h3&gt;
&lt;p&gt;Once Aura recognizes the user&amp;rsquo;s utterance, the UC is resolved via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot dialog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TV LLM Conversational None UC is built over &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/tv-conversational-none-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;conversational-none-dialog&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;br&gt;
See the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/tv-conversational-none-dialog/&#34;&gt;Dialog configuration&lt;/a&gt; for the required settings and bypass configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-llm-conversational-search-uc&#34;&gt;TV LLM Conversational Search UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global use case developed by Aura Platform Team that allows users searching for recommendations by holding a conversation with Aura&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The video &lt;strong&gt;LLM Conversational Search&lt;/strong&gt; use case is a global experience designed and developed by Aura Global Team that allows Telefónica customers to hold a conversation with Aura for having TV content recommendations using a voice interface.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover the &lt;a href=&#34;#specifications&#34;&gt;Conversational search specifications&lt;/a&gt; and the particularities of the &lt;a href=&#34;#use-case-development&#34;&gt;use case development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-dialog/&#34;&gt;configure the &lt;em&gt;&lt;strong&gt;conversational-search-dialog&lt;/strong&gt;&lt;/em&gt; for Conversational Search use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Access the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-plugin/&#34;&gt;TV Retrieve plugin for LLM Search UC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Discover the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/resources/&#34;&gt;resources used by the Conversational search use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/ai-config-obs/&#34;&gt;AI configuration for each OB&lt;/a&gt; for the TV LLM Conversational Search UC.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;specifications&#34;&gt;Specifications&lt;/h2&gt;
&lt;h3 id=&#34;kernel-api&#34;&gt;Kernel API&lt;/h3&gt;
&lt;p&gt;To resolve the user’s request, Aura uses the normalized &lt;a href=&#34;https://developers.baikalplatform.com/apis/video-contents/&#34;&gt;Video Contents Kernel API&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;request-response-model&#34;&gt;Request-response model&lt;/h3&gt;
&lt;p&gt;The Conversational search use case is adapted to both request-response normalized model v3 and v1.&lt;/p&gt;
&lt;h3 id=&#34;available-channels&#34;&gt;Available channels&lt;/h3&gt;
&lt;p&gt;The Conversational search use case can be enabled in any channel in both v1 and v3 and TV-related payloads.&lt;/p&gt;
&lt;h2 id=&#34;use-case-development&#34;&gt;Use case development&lt;/h2&gt;
&lt;p&gt;The Conversational search use case includes the following components:&lt;/p&gt;
&lt;h3 id=&#34;understanding-features&#34;&gt;Understanding features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent:&lt;/strong&gt; &lt;code&gt;intent.conversational.search&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-case-logic&#34;&gt;Use case logic&lt;/h3&gt;
&lt;p&gt;Once Aura recognizes the user’s utterance, the UC is resolved via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot dialog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Conversational search use case is built over &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;conversational-search-dialog&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;br&gt;
See the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-dialog/&#34;&gt;Dialog configuration&lt;/a&gt; for the required settings and bypass configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-llm-recommend-uc&#34;&gt;TV LLM Recommend UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global use case developed by Aura Platform Team that allows users to get personalized TV/video recommendations in Aura&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The video &lt;strong&gt;LLM Recommend&lt;/strong&gt; use case is a global experience designed and developed by Aura Global Team that allows Telefónica customers to ask Aura for content recommendations (live channels and catalog items) using a voice interface.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover the &lt;a href=&#34;#specifications&#34;&gt;TV LLM Recommend specifications&lt;/a&gt; and the particularities of the &lt;a href=&#34;#use-case-development&#34;&gt;use case development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/tv-recommend-dialog/&#34;&gt;configure the generic-dialog for TV LLM Recommend use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Access the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/tv-recommend-plugin/&#34;&gt;TV LLM Recommend plugin&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Discover the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/resources/&#34;&gt;resources used by the TV LLM Recommend use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/ai-config-obs/&#34;&gt;AI configuration for each OB&lt;/a&gt; for the TV Recommend use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;specifications&#34;&gt;Specifications&lt;/h2&gt;
&lt;h3 id=&#34;kernel-api&#34;&gt;Kernel API&lt;/h3&gt;
&lt;p&gt;To resolve the user&amp;rsquo;s request, Aura uses the normalized &lt;a href=&#34;https://developers.baikalplatform.com/apis/video-contents/&#34;&gt;Video Contents Kernel API&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;request-response-model&#34;&gt;Request-response model&lt;/h3&gt;
&lt;p&gt;The TV LLM Recommend UC is available only when using the normalized &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;request-response model v3&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;available-channels&#34;&gt;Available channels&lt;/h3&gt;
&lt;p&gt;The TV LLM Recommend UC can be enabled in any channel implementing the &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;normalized v3 request-response model&lt;/a&gt; and TV-related payloads.&lt;/p&gt;
&lt;h3 id=&#34;tv-llm-recommend-features&#34;&gt;TV LLM Recommend features&lt;/h3&gt;
&lt;p&gt;The normalized TV LLM Recommend UC includes &lt;strong&gt;personalized recommendations&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suggest a &lt;strong&gt;single live channel&lt;/strong&gt; (with a zap action).&lt;/li&gt;
&lt;li&gt;Suggest a &lt;strong&gt;single catalog item&lt;/strong&gt; (e.g., VOD).&lt;/li&gt;
&lt;li&gt;Suggest a &lt;strong&gt;list of items&lt;/strong&gt; when multiple results are available.&lt;/li&gt;
&lt;li&gt;Return &lt;strong&gt;no content&lt;/strong&gt; when the API returns no results.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;current-limitations&#34;&gt;Current limitations&lt;/h3&gt;
&lt;p&gt;Currently, the TV LLM Recommend UC &lt;strong&gt;does not include&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fallback/contingency search (as in TV search).&lt;/li&gt;
&lt;li&gt;Filters customized (as persons, genres, participants, &amp;hellip;).&lt;/li&gt;
&lt;li&gt;Third-party catalogs outside Aura/Kernel scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-case-development&#34;&gt;Use case development&lt;/h2&gt;
&lt;p&gt;The TV LLM Recommend UC includes these components:&lt;/p&gt;
&lt;h3 id=&#34;understanding-features&#34;&gt;Understanding features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent:&lt;/strong&gt; &lt;code&gt;intent.tv.recommend&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-case-logic&#34;&gt;Use case logic&lt;/h3&gt;
&lt;p&gt;Once Aura recognizes the user&amp;rsquo;s utterance, the UC is resolved via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot dialog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TV LLM Recommend UC is built over &lt;a href=&#34;../../docs/components/global-use-cases/generic-dialog/generic-dialog-v3/&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-dialog-v3&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;br&gt;
See the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/tv-recommend-dialog/&#34;&gt;Dialog configuration&lt;/a&gt; for the required settings.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;response&#34;&gt;Response&lt;/h2&gt;
&lt;p&gt;The response follows the standard &lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/#input-validation-video-plugin&#34;&gt;video plugin response schema&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;intent&lt;/code&gt;: input intent.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;entities&lt;/code&gt;: input entities as received.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;result_intent&lt;/code&gt;: usually &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;; &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; is used when returning a single live channel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt;: List of response resources that includes three main parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: Type of the response resource.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Name of the response resource. Example: &lt;code&gt;tv:video.recommend.multiple-results&lt;/code&gt;, &lt;code&gt;tv:video.recommend.by-default.simple-result&lt;/code&gt;, &lt;code&gt;tv:video.recommend.display.single-result&lt;/code&gt;, &lt;code&gt;tv:video.recommend.no-results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: This field returns any required parameter in the resource. Example: &lt;code&gt;channelId&lt;/code&gt; or &lt;code&gt;deviceId&lt;/code&gt; for &lt;code&gt;tv:video.recommend.display.single-result&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;payload&lt;/code&gt;: Information provided by the &lt;strong&gt;Kernel API&lt;/strong&gt;, when we make the content get info request.
If we receive a response, this field includes the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: The value of this field depends on the type of data included in the field &lt;code&gt;data&lt;/code&gt; (info returned by the API):
&lt;ul&gt;
&lt;li&gt;If it is a value: &lt;code&gt;details&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it is a list: &lt;code&gt;content_list&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt;: It returns the information provided by the &lt;strong&gt;Kernel&lt;/strong&gt; API.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;status&lt;/code&gt;: Final status request. This field includes the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;: Status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Status message, which describes the status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: Parameter that sends details of status. This field does not appear if it is empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;actions&lt;/code&gt;: Actions to follow with the result of request. This plugin could include the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;REMOTEON.ZAPTO&lt;/code&gt;: Used to tune a live channel on STB.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;conditions&lt;/code&gt;: conditions for actions to be applied.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-llm-search-uc&#34;&gt;TV LLM Search UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global use case developed by Aura Platform Team that allows users to search specific TV content in Aura&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The video &lt;strong&gt;LLM Search&lt;/strong&gt; use case is a global experience designed and developed by Aura Global Team that allows Telefónica customers to ask Aura for TV content (live content and catalog items) using a voice interface.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover the &lt;a href=&#34;#specifications&#34;&gt;TV LLM Search specifications&lt;/a&gt; and the particularities of the &lt;a href=&#34;#use-case-development&#34;&gt;use case development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Learn how to &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-dialog/&#34;&gt;configure the generic-dialog for TV LLM Search use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Access the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-plugin/&#34;&gt;TV Retrieve plugin for LLM Search UC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Discover the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/resources/&#34;&gt;resources used by the TV LLM Search use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/ai-config-obs/&#34;&gt;AI configuration for each OB&lt;/a&gt; for the TV LLM Search use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;specifications&#34;&gt;Specifications&lt;/h2&gt;
&lt;h3 id=&#34;kernel-api&#34;&gt;Kernel API&lt;/h3&gt;
&lt;p&gt;To resolve the user&amp;rsquo;s request, Aura uses the normalized &lt;a href=&#34;https://developers.baikalplatform.com/apis/video-contents/&#34;&gt;Video Contents Kernel API&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;request-response-model&#34;&gt;Request-response model&lt;/h3&gt;
&lt;p&gt;The TV LLM Search UC is adapted to the normalized &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;request-response model v3&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;available-channels&#34;&gt;Available channels&lt;/h3&gt;
&lt;p&gt;The TV LLM Search UC can be enabled in any channel implementing the &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;normalized v3 request-response model&lt;/a&gt; and TV-related payloads.&lt;/p&gt;
&lt;h3 id=&#34;tv-llm-search-features&#34;&gt;TV LLM Search features&lt;/h3&gt;
&lt;p&gt;The normalized TV LLM Search UC includes &lt;strong&gt;basic retrieval features&lt;/strong&gt; for entertainment content:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search by &lt;strong&gt;channel&lt;/strong&gt; (including live channels and third-party streaming platforms).&lt;/li&gt;
&lt;li&gt;Search by &lt;strong&gt;person&lt;/strong&gt; (e.g., presenters/actors).&lt;/li&gt;
&lt;li&gt;Search by &lt;strong&gt;free-form query&lt;/strong&gt; strings. (e.g., TV content titles, genres, subgenres, &amp;hellip;).&lt;/li&gt;
&lt;li&gt;Support for &lt;strong&gt;multiple values per entity&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When a &lt;strong&gt;single live content&lt;/strong&gt; is unambiguously found, the plugin can trigger a &lt;strong&gt;channel tune action&lt;/strong&gt; (REMOTEON.ZAPTO) to start playback on the STB.&lt;/p&gt;
&lt;h3 id=&#34;current-limitations&#34;&gt;Current limitations&lt;/h3&gt;
&lt;p&gt;Currently, the TV LLM Search UC &lt;strong&gt;does not include&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Contingency/fallback search mode (no secondary search if zero results).&lt;/li&gt;
&lt;li&gt;Temporal filters (time intervals).&lt;/li&gt;
&lt;li&gt;Third-party catalogs outside Aura/Kernel scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-case-development&#34;&gt;Use case development&lt;/h2&gt;
&lt;p&gt;The TV LLM Search UC includes the following components:&lt;/p&gt;
&lt;h3 id=&#34;understanding-features&#34;&gt;Understanding features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Intent:&lt;/strong&gt; &lt;code&gt;intent.tv.retrieve&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Entities consumed by the plugin:&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entity&lt;/th&gt;
&lt;th&gt;Example (utterance)&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_channel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;“Pon #0” / “Abrir Movistar LaLiga”&lt;/td&gt;
&lt;td&gt;Multiple channels allowed via &lt;code&gt;canon&lt;/code&gt; with `&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_person&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;“Lo de Broncano”&lt;/td&gt;
&lt;td&gt;Multiple persons allowed via &lt;code&gt;canon&lt;/code&gt; with `&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;“noticias Oviedo”&lt;/td&gt;
&lt;td&gt;Multiple tokens allowed via &lt;code&gt;canon&lt;/code&gt; with `&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#x26a0;&amp;#xfe0f; NLP should provide the &lt;strong&gt;canon&lt;/strong&gt; field concatenated with &lt;code&gt;||&lt;/code&gt; (double pipe) when multiple values are recognized (see &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/ai-config-obs/&#34;&gt;NLP configuration&lt;/a&gt;)
&amp;#x26a0;&amp;#xfe0f; Other entities (e.g., time, devices, etc.) are &lt;strong&gt;not&lt;/strong&gt; used by this plugin and should be omitted for this UC.&lt;/p&gt;
&lt;h3 id=&#34;use-case-logic&#34;&gt;Use case logic&lt;/h3&gt;
&lt;p&gt;Once Aura recognizes the user&amp;rsquo;s utterance, the UC is resolved via:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot dialog&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TV LLM Search UC is built over &lt;a href=&#34;../../docs/components/global-use-cases/generic-dialog/generic-dialog-v3/&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-dialog-v3&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;br&gt;
See the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-dialog/&#34;&gt;Dialog configuration&lt;/a&gt; for the required settings.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;response&#34;&gt;Response&lt;/h2&gt;
&lt;p&gt;The response follows the standard &lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/#input-validation-video-plugin&#34;&gt;video plugin response schema&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;intent&lt;/code&gt;: input intent.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;entities&lt;/code&gt;: input entities as received.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;result_intent&lt;/code&gt;: usually &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;; &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; is used when returning a single live channel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt;: List of response resources that includes three main parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: Type of the response resource.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt;: Name of the response resource. Example: &lt;code&gt;tv:video.retrieve.multiple-results&lt;/code&gt;, &lt;code&gt;tv:video.retrieve.by-default.simple-result&lt;/code&gt;, &lt;code&gt;tv:video.retrieve.display.single-result&lt;/code&gt;, &lt;code&gt;tv:video.retrieve.no-results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: This field returns any required parameter in the resource. Example: &lt;code&gt;queryDisplayed&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;payload&lt;/code&gt;: Information provided by the &lt;strong&gt;Kernel API&lt;/strong&gt;, when we make the content get info request.
If we receive a response, this field includes the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: The value of this field depends on the type of data included in the field &lt;code&gt;data&lt;/code&gt; (info returned by the API):
&lt;ul&gt;
&lt;li&gt;If it is a value: &lt;code&gt;details&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If it is a list: &lt;code&gt;content_list&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt;: It returns the information provided by the &lt;strong&gt;Kernel&lt;/strong&gt; API.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;status&lt;/code&gt;: Final status request. This field includes the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;: Status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Status message, which describes the status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: Parameter that sends details of status. This field does not appear if it is empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;actions&lt;/code&gt;: Actions to follow with the result of request. This plugin could include the following actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;REMOTEON.ZAPTO&lt;/code&gt;: Used to tune a live channel on STB.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;conditions&lt;/code&gt;: conditions for actions to be applied.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-triage-llm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-triage-llm/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-llm-triage-uc&#34;&gt;TV LLM Triage UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global use case developed by Aura Platform Team that routes unanswered or unclassified requests to different LLMs&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The video &lt;strong&gt;LLM Triage&lt;/strong&gt; use case is a global experience designed and developed by Aura Global Team that routes unanswered or unclassified requests to different LLMs to improve the chances of returning relevant results to the user.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-triage-llm/ai-config-obs/&#34;&gt;AI configuration for each OB&lt;/a&gt; for the TV LLM Triage use case.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-dialog/</guid>
      <description>
        
        
        

&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Description of Aura bot &lt;em&gt;&lt;strong&gt;conversational-search-dialog&lt;/strong&gt;&lt;/em&gt;, that is specifically designed to resolve the advanced TV recommendation using LLMs in &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt; and complex logic resolution.&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;em&gt;&lt;strong&gt;conversational-search-dialog&lt;/strong&gt;&lt;/em&gt; is specifically designed to resolve the advanced recommendation, using LLMs in &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt;. Specifically the LLM configured for TV Conversational Search UC.&lt;/p&gt;
&lt;p&gt;You can check its source code in Github:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/packages/generic-ai/src/dialogs/conversational-search-dialog.ts&#34;&gt;conversational-search-dialog.ts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Telefonica/packages/generic-ai/src/dialogs/v3/conversational-search-v3-dialog.ts&#34;&gt;conversational-search-v3-dialog.ts&lt;/a&gt;.
Currently, this dialog is available for Aura channelData V1 and V3 versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For this use case, the required specific configuration is set 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-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;channelDataVersion&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;v3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// Only in Aura channelData V3 version
&lt;/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;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;conversational-search-dialog-v3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;allowAnonymous&amp;#34;&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;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&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;intent.conversational.search&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;locales&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;core:flc.answer.error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;needTvResolution&amp;#34;&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;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#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:#204a87;font-weight:bold&#34;&gt;&amp;#34;bypass&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;duration&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;60&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;payloadName&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;openai&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;initialData&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;recognizersEnabled&amp;#34;&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;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;recognizersBreakIntents&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent.tv.display&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent.navigation.section_show&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#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;specific-values&#34;&gt;Specific values&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Key&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Value&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;bypass.duration&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;60 (minutes)&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;This value overwrites the default &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; value for bypass lasting 10 minutes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;bypass.payloadName&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;openai&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Name of the interface that will be used as bypass payload for this dialog.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;bypass.initialData&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;empty&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;It should contain any data needed by the dialog to be initialized.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;bypass.recognizersEnabled&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;true&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;This value overwrites the default &lt;em&gt;&lt;strong&gt;aura-bot&lt;/strong&gt;&lt;/em&gt; way of working with recognizers when it is in bypass mode. If it is set to &lt;code&gt;true&lt;/code&gt;, recognizers are executed, and their result is stored in the bypass payload to be used, if needed, afterwards.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;bypass.recognizersBreakIntents&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Array of intents&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;Used to handle when the user requested any other use case during the execution of the TV Conversational Search UC.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;configuration-by-channel&#34;&gt;Configuration by channel&lt;/h2&gt;
&lt;p&gt;For this dialog it is necessary to add the configuration of applicationId and presetId per channel and intent in the &lt;a href=&#34;../../docs/components/channels/current-channel-model/#atria-model&#34;&gt;channel model&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For this use case, the required specific configuration per channel is set 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-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;   
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;atria&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;dialogs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent.conversational.search&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;applicationId&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;816bdab6-3ea3-4a77-bdea-12945d6d7053&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;presetId&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;acdef02f-f810-4474-8143-6b2a04a042f8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;environment-variables&#34;&gt;Environment variables&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Mandatory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AURA_AUTHORIZATION_HEADER&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Authorization header to be sent to &lt;code&gt;AURA_GATEWAY_API_ENDPOINT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_COMPLEX_LOGIC_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Complex Logic&lt;/strong&gt; endpoint to interact with resolution API.&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ENDPOINT&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;URL of &lt;strong&gt;Aura Gateway API&lt;/strong&gt; endpoint&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_GATEWAY_API_ISSUER_URL&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Issuer URL for token info&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData. By default &lt;code&gt;1.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AURA_CHANNELDATA_LA_DEFAULT_VERSION&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;Default version of channelData for Latin America. By default &lt;code&gt;2.0.0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONVERSATIONAL_SEARCH_MAX_TAGS&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Default number of max tags to manage in the dialog. By default &lt;code&gt;4&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONVERSATIONAL_SEARCH_TAGS_SCORE_THRESHOLD&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;Default number with minimum score threshold required for a tag to be considered relevant in a TV Conversational Search. Value of this variable oscillates between 0 and 1. By default &lt;code&gt;0&lt;/code&gt;.&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The dialog starts by init bypass mode.&lt;/li&gt;
&lt;li&gt;Then, it checks if the iteration comes from the Triage recognizer, by setting the user&amp;rsquo;s text to the fixed phase of resource: &lt;code&gt;tv-conversational-search:command.recommend&lt;/code&gt;  and then calling the AI ​​service.&lt;/li&gt;
&lt;li&gt;If the iteration originated because there were no results, it will return the text obtained from the resource: &lt;code&gt;tv-conversational-search:command.no-results&lt;/code&gt; to the user.&lt;/li&gt;
&lt;li&gt;Then, it calls the AI service to get a generative response based on the intent and the current session ID. The session ID is updated in the context for future requests.&lt;/li&gt;
&lt;li&gt;Next, with the response obtained from the LLM, the user will be composed of the following:
&lt;ul&gt;
&lt;li&gt;If the generative response returns command info, It will be checked if the command is &lt;code&gt;EXIT&lt;/code&gt; so the bypass will be closed and the resource: &lt;code&gt;tv-conversational-search:command.exit&lt;/code&gt; will be returned to the user.&lt;/li&gt;
&lt;li&gt;If the generative response returns tags info, it calls the complex logic service to get a resolution based on the intent and tags from the generative response. If the tags are not valid or not meet a threshold or there are no results, the resource will be returned: &lt;code&gt;tv-conversational-search:command.no-results&lt;/code&gt;. Instead, ff content exists, it will be returned in the channel data, but the text of the result shown to the user will always be the one obtained from generative response.&lt;/li&gt;
&lt;li&gt;If the generative response returns text info, this text is included in response of user, unless there are no results, as we indicated in the previous paragraph, a specific resource will be returned.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Finally, it sends the activity to the user and ends the dialog.&lt;/li&gt;
&lt;li&gt;The bypass will only be closed if these two conditions are met:
&lt;ul&gt;
&lt;li&gt;The &amp;lsquo;EXIT&amp;rsquo; command is detected.&lt;/li&gt;
&lt;li&gt;A new user intent configured that match those configured in the dialog in field: &lt;code&gt;recognizersBreakIntents&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sequence-diagram&#34;&gt;Sequence diagram&lt;/h3&gt;
&lt;pre class=&#34;mermaid&#34;&gt;sequenceDiagram
    autonumber
    participant User
    participant Dialog
    participant AI Services
    participant Complex Logic

    Dialog-&amp;gt;&amp;gt;Dialog: Open dialog 
    Dialog-&amp;gt;&amp;gt;Dialog: Init bypass mode and check interaction origin
    alt interaction origin is no-results
        Dialog-&amp;gt;&amp;gt;User: Send activity to user with command no-results text
        Dialog-&amp;gt;&amp;gt;Dialog: End dialog
    else interaction origin is triage
        Dialog-&amp;gt;&amp;gt;Dialog: set text to send LLM with command recommend.
    end
    Dialog-&amp;gt;&amp;gt;Dialog: continue bypass
    alt user intent recognized match with break intent configured
        Dialog-&amp;gt;&amp;gt;Dialog: Close bypass
        Dialog-&amp;gt;&amp;gt;User: Send activity to user with command exit text
    else user intent is not break intent configured
        Dialog-&amp;gt;&amp;gt;Dialog: continue bypass
        Dialog-&amp;gt;&amp;gt;AI Services: Call AI service with intent and session ID
        AI Services-&amp;gt;&amp;gt;Dialog: Return generative response and session ID
        alt generative response contains a &amp;#39;EXIT&amp;#39; command
            Dialog-&amp;gt;&amp;gt;Dialog: Close bypass
            Dialog-&amp;gt;&amp;gt;User: Send activity to user with command exit text
            Dialog-&amp;gt;&amp;gt;Dialog: End dialog
        else generative response contains tags
            alt tags are valid
                Dialog-&amp;gt;&amp;gt;Complex Logic: Call complex logic service with intent and tags
                Complex Logic-&amp;gt;&amp;gt;Dialog: Return resolution
                alt No content found in resolution
                    Dialog-&amp;gt;&amp;gt;User: Send activity to user with command no-results text
                else Content found
                    Dialog-&amp;gt;&amp;gt;User: Send activity to user with text of generative response and resolution
                end
            else tags are invalid
                Dialog-&amp;gt;&amp;gt;User: Send activity to user with command no-results text
            end
        else generative response contains text
                Dialog-&amp;gt;&amp;gt;User: Send activity to user with text of generative response
        end
    end
    Dialog-&amp;gt;&amp;gt;Dialog: End dialog&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: TV LLM Conversational None: Dialog Configuration</title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/tv-conversational-none-llm-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/tv-conversational-none-llm-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;configuration-of-the-generic-ai-dialog-for-tv-llm-conversational-none-uc&#34;&gt;Configuration of the generic-ai-dialog for TV LLM Conversational None UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;How the &lt;em&gt;&lt;strong&gt;generic-ai-dialog&lt;/strong&gt;&lt;/em&gt; must be configured for this use case&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;specific-configuration&#34;&gt;Specific configuration&lt;/h2&gt;
&lt;p&gt;The TV LLM Conversational None UC is triggered by the &lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/generic-ai-dialog-v1.md&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-ai-dialog-v1&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; for &lt;code&gt;channelData&lt;/code&gt; v1 or  &lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/generic-ai-dialog-v3.md&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-ai-dialog-v3&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; for &lt;code&gt;channelData&lt;/code&gt; v3.
For this use case, the required specific configuration is set below:&lt;/p&gt;
&lt;p&gt;Example v1:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;generic-ai&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;dialogs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;generic-ai-dialog-v1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;onlyIn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;set-top-box&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&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;intent.conversational.none&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;locales&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tv.error.fpaOrCognitive&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;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;Example v3:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;channelDataVersion&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;v3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;generic-ai-dialog-v3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;onlyIn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;set-top-box&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:#4e9a06&#34;&gt;&amp;#34;global-video-platform&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&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;intent.conversational.none&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;locales&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;core:flc.answer.error&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-dialog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-dialog/</guid>
      <description>
        
        
        &lt;h1 id=&#34;configuration-of-the-generic-ai-dialog-for-tv-llm-search-uc&#34;&gt;Configuration of the generic-ai-dialog for TV LLM Search UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;How the &lt;em&gt;&lt;strong&gt;generic-ai-dialog&lt;/strong&gt;&lt;/em&gt; must be configured for this use case&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;specific-configuration&#34;&gt;Specific configuration&lt;/h2&gt;
&lt;p&gt;The TV LLM Search UC is triggered by the &lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/generic-ai-dialog-v1.md&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-ai-dialog-v1&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; for &lt;code&gt;channelData&lt;/code&gt; v1 or  &lt;a href=&#34;../../docs/components/global-use-cases/generic-ai-dialogs/generic-ai-dialog-v3.md&#34;&gt;&lt;em&gt;&lt;strong&gt;generic-ai-dialog-v3&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; for &lt;code&gt;channelData&lt;/code&gt; v3.
For this use case, the required specific configuration is set below:&lt;/p&gt;
&lt;p&gt;Example v1:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;generic-ai-dialog-v3&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;onlyIn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;movistar-plus&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&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;intent.tv.retrieve&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;locales&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tv:tv.error.fpaOrCognitive&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;payloadType&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;tv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example v3:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;generic-ai-dialog-v1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;onlyIn&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;movistar-plus&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;triggerConditions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;intent&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;intent.tv.retrieve&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;locales&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                            &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tv:tv.error.fpaOrCognitive&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;payloadType&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;tv&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/tv-conversational-search-plugin/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-conversational-search-plugin&#34;&gt;TV Conversational Search plugin&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Complex Logic Framework plugin for the TV Conversational Search use case&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Conversational Search plugin&lt;/strong&gt; resolves requests from a user to obtain personalized recommendations for audiovisual content from Telefónica catalogs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent&lt;/strong&gt;: &lt;code&gt;intent.conversational.search&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Main result intents&lt;/strong&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; (default), &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; (when zapping to a live channel).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;validate-input-request&#34;&gt;Validate input request&lt;/h2&gt;
&lt;p&gt;This step validates that the input request fulfills all the requirements from the &lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/input-validation-swagger/&#34;&gt;input schema&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If the input data is invalid, the resource returned is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/video-use-cases/global-resources/#common-resources-for-video-use-cases&#34;&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;entities-used-for-search&#34;&gt;Entities used for search&lt;/h2&gt;
&lt;p&gt;The plugin works with the following &lt;strong&gt;entity types&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entity type&lt;/th&gt;
&lt;th&gt;Usage in search&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Free text query, multiple values accepted with &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Multiple entities &amp;amp; values:&lt;/strong&gt;&lt;br&gt;
You can repeat the same entity type multiple times &lt;strong&gt;and/or&lt;/strong&gt; provide several values in a single entity using the &lt;code&gt;\|\|&lt;/code&gt; separator.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;building-the-search-query&#34;&gt;Building the search query&lt;/h2&gt;
&lt;p&gt;The plugin constructs two query strings:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query&lt;/code&gt;&lt;/strong&gt; → technical query sent to Kernel API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Group query and channel entities in parentheses.&lt;/li&gt;
&lt;li&gt;Joins different entity types with &lt;code&gt;AND&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Query: split on ||, trim each value, and join with OR inside the parentheses (no quotes).&lt;/li&gt;
&lt;li&gt;Example:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(mystery OR series)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query_response&lt;/code&gt;&lt;/strong&gt; → a simplified, user-readable query string included in the payload and telemetry.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If no entities are present, the plugin returns a &lt;strong&gt;no results&lt;/strong&gt; response.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;api-video-query-handler-4p&#34;&gt;API video query (Handler 4P)&lt;/h2&gt;
&lt;p&gt;Plugin calls &lt;code&gt;Handler4P.tv_4p_handler.get_user_content_search(...)&lt;/code&gt; with the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;user_id&lt;/code&gt;: &lt;code&gt;data[aura_user][user_id]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;administrative_number&lt;/code&gt;: &lt;code&gt;data[app_context][user][account_number]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt;: &lt;code&gt;data[aura_user][access_token]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scopes&lt;/code&gt;: &lt;code&gt;data[aura_user][scopes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;purposes&lt;/code&gt;: &lt;code&gt;data[aura_user][purposes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;device_type&lt;/code&gt;: &lt;code&gt;data[app_context][device][type]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;catalog_types&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Default: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Allowed: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;, &lt;code&gt;LCH&lt;/code&gt;, &lt;code&gt;LSR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Filtered according to &lt;code&gt;allowed_catalog_types&lt;/code&gt; of the device&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;search_query&lt;/code&gt;: built as explained above&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show_series&lt;/code&gt;: &lt;code&gt;series&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;profile&lt;/code&gt;: &lt;code&gt;data[app_context][user][video_profile_name]&lt;/code&gt; (optional; only if present to avoid API 501 errors)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commercialization_types&lt;/code&gt;: &lt;code&gt;[SVOD]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max_quality&lt;/code&gt;: &lt;code&gt;data[app_context][device][max_quality]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;current_region&lt;/code&gt;: &lt;code&gt;data[app_context][location][currentRegion]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;order&lt;/code&gt;: &lt;code&gt;personal&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;response-logic&#34;&gt;Response logic&lt;/h2&gt;
&lt;p&gt;Depending on the number and type of results, the plugin builds different responses:&lt;/p&gt;
&lt;h3 id=&#34;1-no-results&#34;&gt;1. No results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plays &lt;strong&gt;negative sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.conversational.search.no-results&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Status: &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-one-result&#34;&gt;2. One result&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Live channel&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: &lt;code&gt;{ type: details, data: &amp;lt;channel info&amp;gt; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Action: &lt;code&gt;REMOTEON.ZAPTO&lt;/code&gt; (with params &lt;code&gt;channelId&lt;/code&gt; and &lt;code&gt;deviceId&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;CHANNEL.PLAY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.conversational.search.single-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-live content (VOD, L7D, etc.)&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: details of the single item&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.conversational.search.by-default.simple-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-multiple-results&#34;&gt;3. Multiple results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Payload: list of items&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.conversational.search.multiple-results&lt;/code&gt; (with param &lt;code&gt;query_displayed&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;resources-returned&#34;&gt;Resources returned&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Recommend plugin&lt;/strong&gt; may return the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt; → input validation error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.api.answer.error&lt;/code&gt; → API Video error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.conversational.search.no-results&lt;/code&gt; → no content found&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.conversational.search.by-default.simple-result&lt;/code&gt; → one non-live result&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.conversational.search.multiple-results&lt;/code&gt; → multiple results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.conversational.search.display.single-result&lt;/code&gt; → one live channel (tune channel)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;payload-and-actions&#34;&gt;Payload and actions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Payload&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: &lt;code&gt;details&lt;/code&gt; (single item) or &lt;code&gt;content_list&lt;/code&gt; (multiple items)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt;: item(s) from Kernel API&lt;/li&gt;
&lt;li&gt;For multiple results: includes &lt;code&gt;search_query&lt;/code&gt; (human-readable string)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sound feedback (positive/negative)&lt;/li&gt;
&lt;li&gt;For a single live channel: &lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;REMOTEON.ZAPTO&amp;quot;, &amp;quot;params&amp;quot;: {&amp;quot;channelId&amp;quot;: &amp;quot;$channelId&amp;quot;, &amp;quot;deviceId&amp;quot;: &amp;quot;$deviceId&amp;quot;}, &amp;quot;target&amp;quot;: &amp;quot;stb&amp;quot;}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;status-codes&#34;&gt;Status codes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;: Final status request. This field includes the following parameters:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;: Status code with value: &lt;code&gt;SUCCESS&lt;/code&gt;, &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt; or &lt;code&gt;ERROR.INTERNAL&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Status message, which describes the status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: Parameter that sends details of status. This field does not appear if it is empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;example-behavior&#34;&gt;Example behavior&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;“Recommend me something”&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;for a single live channel result → &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; tune channel with live channel.&lt;/li&gt;
&lt;li&gt;for a multiple results → &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; with &lt;code&gt;tv:video.conversational.search.multiple-results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;for any results → &lt;code&gt;tv:video.conversational.search.no-results&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/tv-recommend-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/tv-recommend-plugin/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-recommend-plugin&#34;&gt;TV Recommend plugin&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Complex Logic Framework plugin for the TV Recommend use case&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Recommend plugin&lt;/strong&gt; resolves requests from a user to obtain personalized recommendations for audiovisual content from Telefónica catalogs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent&lt;/strong&gt;: &lt;code&gt;intent.tv.recommend&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Main result intents&lt;/strong&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; (default), &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; (when zapping to a live channel).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;validate-input-request&#34;&gt;Validate input request&lt;/h2&gt;
&lt;p&gt;This step validates that the input request fulfills all the requirements from the &lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/input-validation-swagger/&#34;&gt;input schema&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If the input data is invalid, the resource returned is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/video-use-cases/global-resources/#common-resources-for-video-use-cases&#34;&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;entities-used-for-search&#34;&gt;Entities used for search&lt;/h2&gt;
&lt;p&gt;The plugin works with the following &lt;strong&gt;entity types&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entity type&lt;/th&gt;
&lt;th&gt;Usage in search&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_channel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multiple values accepted, separated by &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_person&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;For participants (actors, directors, presenters, etc.), multiple values accepted with &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Free text query, multiple values accepted with &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Multiple entities &amp;amp; values:&lt;/strong&gt;&lt;br&gt;
You can repeat the same entity type multiple times &lt;strong&gt;and/or&lt;/strong&gt; provide several values in a single entity using the &lt;code&gt;\|\|&lt;/code&gt; separator.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;building-the-search-query&#34;&gt;Building the search query&lt;/h2&gt;
&lt;p&gt;The plugin constructs two query strings:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query&lt;/code&gt;&lt;/strong&gt; → technical query sent to Kernel API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Group query and channel entities in parentheses.&lt;/li&gt;
&lt;li&gt;Joins different entity types with &lt;code&gt;AND&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Query: split on ||, trim each value, and join with OR inside the parentheses (no quotes).&lt;/li&gt;
&lt;li&gt;Channel: trim each value, wrap each value in quotes, and join with OR inside the parentheses.&lt;/li&gt;
&lt;li&gt;Person: trim each value, wrap each value in quotes, and join with AND (no group parentheses).&lt;/li&gt;
&lt;li&gt;Example:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(&amp;#34;La 1&amp;#34; OR &amp;#34;La 2&amp;#34;) AND &amp;#34;Brad Pitt&amp;#34; AND (mystery OR series)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query_response&lt;/code&gt;&lt;/strong&gt; → a simplified, user-readable query string included in the payload and telemetry.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If no entities are present, the plugin returns a &lt;strong&gt;no results&lt;/strong&gt; response.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;api-video-query-handler-4p&#34;&gt;API video query (Handler 4P)&lt;/h2&gt;
&lt;p&gt;Plugin calls &lt;code&gt;Handler4P.tv_4p_handler.get_user_content_search(...)&lt;/code&gt; with the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;user_id&lt;/code&gt;: &lt;code&gt;data[aura_user][user_id]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;administrative_number&lt;/code&gt;: &lt;code&gt;data[app_context][user][account_number]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt;: &lt;code&gt;data[aura_user][access_token]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scopes&lt;/code&gt;: &lt;code&gt;data[aura_user][scopes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;purposes&lt;/code&gt;: &lt;code&gt;data[aura_user][purposes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;device_type&lt;/code&gt;: &lt;code&gt;data[app_context][device][type]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;catalog_types&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Default: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Allowed: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;, &lt;code&gt;LCH&lt;/code&gt;, &lt;code&gt;LSR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Filtered according to &lt;code&gt;allowed_catalog_types&lt;/code&gt; of the device&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;search_query&lt;/code&gt;: built as explained above&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show_series&lt;/code&gt;: &lt;code&gt;series&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;profile&lt;/code&gt;: &lt;code&gt;data[app_context][user][video_profile_name]&lt;/code&gt; (optional; only if present to avoid API 501 errors)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commercialization_types&lt;/code&gt;: &lt;code&gt;[SVOD]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max_quality&lt;/code&gt;: &lt;code&gt;data[app_context][device][max_quality]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;current_region&lt;/code&gt;: &lt;code&gt;data[app_context][location][currentRegion]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;order&lt;/code&gt;: &lt;code&gt;personal&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;response-logic&#34;&gt;Response logic&lt;/h2&gt;
&lt;p&gt;Depending on the number and type of results, the plugin builds different responses:&lt;/p&gt;
&lt;h3 id=&#34;1-no-results&#34;&gt;1. No results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plays &lt;strong&gt;negative sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.recommend.no-results&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Status: &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-one-result&#34;&gt;2. One result&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Live channel&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: &lt;code&gt;{ type: details, data: &amp;lt;channel info&amp;gt; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Action: &lt;code&gt;REMOTEON.ZAPTO&lt;/code&gt; (with params &lt;code&gt;channelId&lt;/code&gt; and &lt;code&gt;deviceId&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;CHANNEL.PLAY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.recommend.display.single-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-live content (VOD, L7D, etc.)&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: details of the single item&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.recommend.by-default.simple-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-multiple-results&#34;&gt;3. Multiple results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Payload: content list and &lt;code&gt;search_query&lt;/code&gt; (search query response string)&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.recommend.multiple-results&lt;/code&gt; (with param &lt;code&gt;query_displayed&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;resources-returned&#34;&gt;Resources returned&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Recommend plugin&lt;/strong&gt; may return the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt; → input validation error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.api.answer.error&lt;/code&gt; → API Video error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.recommend.no-results&lt;/code&gt; → no content found&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.recommend.by-default.simple-result&lt;/code&gt; → one non-live result&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.recommend.multiple-results&lt;/code&gt; → multiple results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.recommend.display.single-result&lt;/code&gt; → one live channel (tune channel)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;payload-and-actions&#34;&gt;Payload and actions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Payload&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: &lt;code&gt;details&lt;/code&gt; (single item) or &lt;code&gt;content_list&lt;/code&gt; (multiple items)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt;: item(s) from Kernel API&lt;/li&gt;
&lt;li&gt;For multiple results: includes &lt;code&gt;search_query&lt;/code&gt; (human-readable string)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sound feedback (positive/negative)&lt;/li&gt;
&lt;li&gt;For a single live channel: &lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;REMOTEON.ZAPTO&amp;quot;, &amp;quot;params&amp;quot;: {&amp;quot;channelId&amp;quot;: &amp;quot;$channelId&amp;quot;, &amp;quot;deviceId&amp;quot;: &amp;quot;$deviceId&amp;quot;}, &amp;quot;target&amp;quot;: &amp;quot;stb&amp;quot;}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;status-codes&#34;&gt;Status codes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;: Final status request. This field includes the following parameters:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;: Status code with value: &lt;code&gt;SUCCESS&lt;/code&gt;, &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt; or &lt;code&gt;ERROR.INTERNAL&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Status message, which describes the status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: Parameter that sends details of status. This field does not appear if it is empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;example-behavior&#34;&gt;Example behavior&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;“Recommend me something”&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;for a single live channel result → &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; tune channel with live channel.&lt;/li&gt;
&lt;li&gt;for a multiple results → &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; with &lt;code&gt;tv:video.recommend.multiple-results&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;for any results → &lt;code&gt;tv:video.recommend.no-results&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-plugin/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/tv-search-llm-plugin/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-retrieve-plugin-for-llm-search-uc&#34;&gt;TV Retrieve plugin for LLM Search UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Complex Logic Framework TV Retrieve plugin for the TV LLM Search UC&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Retrieve plugin for LLM Search UC&lt;/strong&gt; resolves requests from a user to search and retrieve audiovisual content from Telefónica catalogs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Intent&lt;/strong&gt;: &lt;code&gt;intent.tv.retrieve&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Main result intents&lt;/strong&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; (default), &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; (when zapping to a live channel).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;validate-input-request&#34;&gt;Validate input request&lt;/h2&gt;
&lt;p&gt;This step validates that the input request fulfills all the requirements from the &lt;a href=&#34;../../docs/components/complex-logic-framework/clf-global-plugins/input-validation-swagger/&#34;&gt;input schema&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If the input data is invalid, the resource returned is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/components/global-use-cases/video-use-cases/global-resources/#common-resources-for-video-use-cases&#34;&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;entities-used-for-search&#34;&gt;Entities used for search&lt;/h2&gt;
&lt;p&gt;The plugin works with the following &lt;strong&gt;entity types&lt;/strong&gt;:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Entity type&lt;/th&gt;
&lt;th&gt;Usage in search&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_channel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Multiple values accepted, separated by &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_person&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;For participants (actors, directors, presenters, etc.), multiple values accepted with &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ent.audiovisual_query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Free text query, multiple values accepted with &lt;code&gt;||&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Multiple entities &amp;amp; values:&lt;/strong&gt;&lt;br&gt;
You can repeat the same entity type multiple times &lt;strong&gt;and/or&lt;/strong&gt; provide several values in a single entity using the &lt;code&gt;\|\|&lt;/code&gt; separator.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;building-the-search-query&#34;&gt;Building the search query&lt;/h2&gt;
&lt;p&gt;The plugin constructs two query strings:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query&lt;/code&gt;&lt;/strong&gt; → technical query sent to Kernel API:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Group query and channel entities in parentheses.&lt;/li&gt;
&lt;li&gt;Joins different entity types with &lt;code&gt;AND&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Query: split on ||, trim each value, and join with OR inside the parentheses (no quotes).&lt;/li&gt;
&lt;li&gt;Channel: trim each value, wrap each value in quotes, and join with OR inside the parentheses.&lt;/li&gt;
&lt;li&gt;Person: trim each value, wrap each value in quotes, and join with AND (no group parentheses).&lt;/li&gt;
&lt;li&gt;Example:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(&amp;#34;La 1&amp;#34; OR &amp;#34;La 2&amp;#34;) AND &amp;#34;Brad Pitt&amp;#34; AND (mystery OR series)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;search_query_response&lt;/code&gt;&lt;/strong&gt; → a simplified, user-readable query string included in the payload and telemetry.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If no entities are present, the plugin returns a &lt;strong&gt;no results&lt;/strong&gt; response.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;api-video-query-handler-4p&#34;&gt;API video query (Handler 4P)&lt;/h2&gt;
&lt;p&gt;Plugin calls &lt;code&gt;Handler4P.tv_4p_handler.get_user_content_search(...)&lt;/code&gt; with the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;user_id&lt;/code&gt;: &lt;code&gt;data[aura_user][user_id]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;administrative_number&lt;/code&gt;: &lt;code&gt;data[app_context][user][account_number]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;access_token&lt;/code&gt;: &lt;code&gt;data[aura_user][access_token]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scopes&lt;/code&gt;: &lt;code&gt;data[aura_user][scopes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;purposes&lt;/code&gt;: &lt;code&gt;data[aura_user][purposes]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;device_type&lt;/code&gt;: &lt;code&gt;data[app_context][device][type]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;catalog_types&lt;/code&gt;:
&lt;ul&gt;
&lt;li&gt;Default: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Allowed: &lt;code&gt;VOD&lt;/code&gt;, &lt;code&gt;LIVE&lt;/code&gt;, &lt;code&gt;L7D&lt;/code&gt;, &lt;code&gt;LCH&lt;/code&gt;, &lt;code&gt;LSR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Filtered according to &lt;code&gt;allowed_catalog_types&lt;/code&gt; of the device&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;search_query&lt;/code&gt;: built as explained above&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show_series&lt;/code&gt;: &lt;code&gt;series&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;profile&lt;/code&gt;: &lt;code&gt;data[app_context][user][video_profile_name]&lt;/code&gt; (optional; only if present to avoid API 501 errors)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commercialization_types&lt;/code&gt;: &lt;code&gt;[SVOD]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;max_quality&lt;/code&gt;: &lt;code&gt;data[app_context][device][max_quality]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;current_region&lt;/code&gt;: &lt;code&gt;data[app_context][location][currentRegion]&lt;/code&gt; (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;response-logic&#34;&gt;Response logic&lt;/h2&gt;
&lt;p&gt;Depending on the number and type of results, the plugin builds different responses:&lt;/p&gt;
&lt;h3 id=&#34;1-no-results&#34;&gt;1. No results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Plays &lt;strong&gt;negative sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.retrieve.no-results&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Status: &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-one-result&#34;&gt;2. One result&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Live channel&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: &lt;code&gt;{ type: details, data: &amp;lt;channel info&amp;gt; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Action: &lt;code&gt;REMOTEON.ZAPTO&lt;/code&gt; (with params &lt;code&gt;channelId&lt;/code&gt; and &lt;code&gt;deviceId&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;CHANNEL.PLAY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.retrieve.display.single-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-live content (VOD, L7D, etc.)&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;Payload: details of the single item&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.retrieve.by-default.simple-result&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;3-multiple-results&#34;&gt;3. Multiple results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Payload: content list and &lt;code&gt;search_query&lt;/code&gt; (search query response string)&lt;/li&gt;
&lt;li&gt;Plays &lt;strong&gt;positive sound&lt;/strong&gt; unless the channel is disabled in the &lt;code&gt;sound_disabled_channels&lt;/code&gt; configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;result_intent&lt;/code&gt;: &lt;code&gt;MEDIA.SEARCH&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resource: &lt;code&gt;tv:video.retrieve.multiple-results&lt;/code&gt; (with param &lt;code&gt;query_displayed&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;resources-returned&#34;&gt;Resources returned&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TV Retrieve plugin for LLM Search UC&lt;/strong&gt; may return the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tv:video.model-validation.request.error&lt;/code&gt; → input validation error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.api.answer.error&lt;/code&gt; → API Video error&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.retrieve.no-results&lt;/code&gt; → no content found&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.retrieve.by-default.simple-result&lt;/code&gt; → one non-live result&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.retrieve.multiple-results&lt;/code&gt; → multiple results&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tv:video.retrieve.display.single-result&lt;/code&gt; → one live channel (tune channel)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;payload-and-actions&#34;&gt;Payload and actions&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Payload&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: &lt;code&gt;details&lt;/code&gt; (single item) or &lt;code&gt;content_list&lt;/code&gt; (multiple items)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;data&lt;/code&gt;: item(s) from Kernel API&lt;/li&gt;
&lt;li&gt;For multiple results: includes &lt;code&gt;search_query&lt;/code&gt; (human-readable string)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Actions&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sound feedback (positive/negative)&lt;/li&gt;
&lt;li&gt;For a single live channel: &lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;REMOTEON.ZAPTO&amp;quot;, &amp;quot;params&amp;quot;: {&amp;quot;channelId&amp;quot;: &amp;quot;$channelId&amp;quot;, &amp;quot;deviceId&amp;quot;: &amp;quot;$deviceId&amp;quot;}, &amp;quot;target&amp;quot;: &amp;quot;stb&amp;quot;}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;status-codes&#34;&gt;Status codes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;status&lt;/code&gt;: Final status request. This field includes the following parameters:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;: Status code with value: &lt;code&gt;SUCCESS&lt;/code&gt;, &lt;code&gt;SUCCESS.NO_CONTENT&lt;/code&gt; or &lt;code&gt;ERROR.INTERNAL&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;message&lt;/code&gt;: Status message, which describes the status code.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;params&lt;/code&gt;: Parameter that sends details of status. This field does not appear if it is empty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;example-behavior&#34;&gt;Example behavior&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“Put La 1”&lt;/em&gt; → detects &lt;code&gt;ent.audiovisual_channel&lt;/code&gt; with value &lt;code&gt;&amp;quot;La 1&amp;quot;&lt;/code&gt; → single live channel result → &lt;code&gt;CHANNEL.PLAY&lt;/code&gt; tune channel with live channel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“I want something with Brad Pitt”&lt;/em&gt; → detects &lt;code&gt;ent.audiovisual_person&lt;/code&gt; with value &lt;code&gt;&amp;quot;Brad Pitt&amp;quot;&lt;/code&gt; → multiple results → &lt;code&gt;MEDIA.SEARCH&lt;/code&gt; with &lt;code&gt;tv:video.retrieve.multiple-results&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;“Mystery series”&lt;/em&gt; → detects &lt;code&gt;audiovisual_query&lt;/code&gt; with value &lt;code&gt;&amp;quot;Mystery series&amp;quot;&lt;/code&gt; → if no results → &lt;code&gt;tv:video.retrieve.no-results&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/ai-config-obs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-none-llm/ai-config-obs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;ai-configuration-by-ob&#34;&gt;AI configuration by OB&lt;/h1&gt;
&lt;p&gt;The following information applies to both &lt;strong&gt;Spain&lt;/strong&gt; and &lt;strong&gt;Brazil&lt;/strong&gt;; there will not be separate blocks for each OB.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;LLMs UCs are configured and located within the &lt;code&gt;aura-config-provision&lt;/code&gt; repository. See the &lt;a href=&#34;https://github.com/Telefonica/aura-config-provision/blob/master/%5Bob%5D/presets/gvp-conversational-none-preset.json&#34;&gt;TV LLM Conversational None Preset&lt;/a&gt; (notice that in the url, the field [ob] needs to be replaced by [es] or [br])
LLM use cases have been designed to provide a fallback mechanism for user requests that are not currently understood, i.e. return a &amp;lsquo;None&amp;rsquo; intent, or when no content is found in the video platform related to it, offering a second chance for classification and response generation.&lt;/p&gt;
&lt;h3 id=&#34;intent&#34;&gt;Intent&lt;/h3&gt;
&lt;p&gt;The Conversational None Use Case has different invocation points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From triage: when the LLM fails to map the user&amp;rsquo;s input to any known intent often due to ambiguous, incomplete or broad queries (&amp;ldquo;Uno hacia abajo&amp;rdquo;, &amp;ldquo;Sintoniza el canal&amp;rdquo;, &amp;ldquo;Cambia cómo suena&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;From failures or KOs occurring in other supported use cases.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once the user&amp;rsquo;s input is classified as &lt;code&gt;intent.conversational.none&lt;/code&gt;, the request is routed to the Conversational None Agent, an LLM-based conversational module designed to handle unclassified or unsupported queries with the goal of guiding the user toward valid flows or supported actions within the platform by suggesting possible next steps or rephrasing options.&lt;/p&gt;
&lt;p&gt;The conversation is considered complete once the LLM returns a response to the user. Subsequent user inputs will be reprocessed through the full recognition pipeline, including both deterministic and LLM-based intent classifiers.&lt;/p&gt;
&lt;h3 id=&#34;llm-output-format&#34;&gt;LLM output format&lt;/h3&gt;
&lt;p&gt;In the output format, the LLM returns a structured JSON response based on predefined Use Cases configured within the field &lt;code&gt;use_cases&lt;/code&gt; in the preset (in &lt;code&gt;args&lt;/code&gt;). These Use Cases follow a structured format that includes three fields separated by a pipe (&lt;code&gt;|&lt;/code&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NAME&lt;/strong&gt; (mandatory): The name of the Use Case.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DESCRIPTION&lt;/strong&gt; (optional): A short explanation or instruction. This field may be empty.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EXAMPLE&lt;/strong&gt; (mandatory): A representative user utterance for that Use Case.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sample extract from use case information:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;NAME&lt;/th&gt;
&lt;th&gt;DESCRIPTION&lt;/th&gt;
&lt;th&gt;EXAMPLE&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;abrir una sección&lt;/td&gt;
&lt;td&gt;Para abrir una sección es necesario mencionar el nombre de la sección que deseas consultar. Algunas son: Deportes, Cine o Series.&lt;/td&gt;
&lt;td&gt;Abrir la sección Deportes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Desativar o som&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Silencie a TV&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Based on this information and according to matching criteria with the user&amp;rsquo;s request, the LLM constructs its output response by returning two fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;speak&amp;rdquo;: intended for voice output to be spoken by the system.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;text&amp;rdquo;: displayed on screen as visual feedback within the Video Platform interface.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The content of these fields varies depending on the type of match between user&amp;rsquo;s input and the predefined Use Cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Single Use Case Match:
&lt;ul&gt;
&lt;li&gt;If the Use Case has a description:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;speak&amp;rdquo;: this field references the name of the Use Case related to the request, describes its invocation process and includes a relevant example.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;text&amp;rdquo;: this field mirrors the example used in &amp;ldquo;speak&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If the Use Case has no description:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;speak&amp;rdquo;: this field mentions the name of the Use Case linked to the request and the corresponding example.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;text&amp;rdquo;: this field mirrors the example used in &amp;ldquo;speak&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Multiple Use Cases Match:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;speak&amp;rdquo;: this field mentions the ambiguity and shows two likely Use Cases with examples.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;text&amp;rdquo;: this field includes the same two examples.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;No match:
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;speak&amp;rdquo;: this field explains the uncertainty and suggests two random valid Use Cases with examples.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;text&amp;rdquo;: this field repeats only the examples pertaining to the Use Cases shown in &amp;ldquo;speak&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This conditional behavior ensures that the assistant gives relevant, helpful responses tailored to the context of the user&amp;rsquo;s request.&lt;/p&gt;
&lt;p&gt;Examples in Castilian Spanish:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Type of match&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Single Use Case no description&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Pon la peli desde el principio&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Parece que quieres poner un contenido desde el principio. Por ejemplo, prueba a decir Pon Titanic desde el principio.&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Pon Titanic desde el principio&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Single Use Case with description&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Pon cualquier canal&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Parece que quieres cambiar de canal. Para cambiar de canal es necesario mencionar el nombre del canal que quieres sintonizar o indicar el número de dial asociado a ese canal. Por ejemplo, prueba a decir Pon el canal Antena 3.&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Pon el canal Antena 3&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Multiple Use Cases&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Volumen&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Creo que quieres ejecutar alguna acción relacionada con el volumen. Podría ser bajar el volumen o subir el volumen. Por ejemplo, prueba a decir Baja un poco el volumen o Sube un poco el volumen&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Baja un poco el volumen, Sube un poco el volumen&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;No match&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Cántame una canción&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;No tengo claro a qué te refieres pero sí que puedo cambiar de canal o abrir una sección. Por ejemplo, prueba a decir Pon el canal Antena 3 o Abrir la sección Deportes&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Pon el canal Antena 3, Abrir la sección Deportes&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Examples in Brazilian Portuguese:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Type of match&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Single Use Case no description&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Coloque o filme desde o começo&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Parece que você quer colocar um conteúdo desde o começo. Por exemplo, tente dizer Começar desde o início.&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Começar desde o início&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Single Use Case with description&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Coloque qualquer canal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Parece que você quer mudar de canal. Para mudar de canal é necessário mencionar o nome do canal que deseja sintonizar. Por exemplo, tente dizer Mudar para o SBT.&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Mudar para o SBT&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Multiple Use Cases&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Volume&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Creo que você quer executar alguma ação relacionada ao volume. Pode ser abaixar o volume ou subir o volume. Por exemplo, tente dizer Abaixe o volume ou Suba o volume&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Abaixe o volume, Suba o volume&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;No match&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;Canta-me uma canção&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_none&amp;quot;, &amp;quot;arguments&amp;quot;: {{ &amp;quot;speak&amp;quot;: &amp;quot;Não tenho certeza do que você está se referindo mas eu posso mudar de canal ou abrir uma seção. Por exemplo, tente dizer Mudar para o SBT ou Abra Filmes&amp;quot;, &amp;quot;text&amp;quot;: &amp;quot;Mudar para o SBT, Abra Filmes&amp;quot;}}}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/ai-config-obs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-conversational-search-llm/ai-config-obs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;ai-configuration-by-ob&#34;&gt;AI configuration by OB&lt;/h1&gt;
&lt;p&gt;The following information applies to both &lt;strong&gt;Spain&lt;/strong&gt; and &lt;strong&gt;Brazil&lt;/strong&gt;; there will not be separate blocks for each OB.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;LLMs UCs are configured and located within the &lt;code&gt;aura-config-provision&lt;/code&gt; repository. See the &lt;a href=&#34;https://github.com/Telefonica/aura-config-provision/blob/master/%5Bob%5D/presets/gvp-conversational-search-preset.json&#34;&gt;TV LLM Conversational Search Preset&lt;/a&gt; (notice that in the url, the field [ob] needs to be replaced by [es] or [br])
LLM use cases have been designed to provide a fallback mechanism for user requests that are not currently understood, i.e. return a &amp;lsquo;None&amp;rsquo; intent, or when no content is found in the video platform related to it, offering a second chance for classification and response generation.&lt;/p&gt;
&lt;h3 id=&#34;intent&#34;&gt;Intent&lt;/h3&gt;
&lt;p&gt;The Conversational Search use case has different invocation points:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;From triage: when the LLM identifies that the user&amp;rsquo;s intention is to perform an open search or to get an advanced recommendation (&amp;ldquo;Recomiéndame algo para ver&amp;rdquo;, &amp;ldquo;Quiero ver algo divertido&amp;rdquo;, &amp;ldquo;Ponme con el recomendador&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Fallback for the TV Search deterministic use case and for the TV LLM Search UC for user&amp;rsquo;s requests with 0 results or KO.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once the user&amp;rsquo;s request is classified under &lt;code&gt;intent.conversational.search&lt;/code&gt;, the user will enter into a conversation with the LLM Conversational Search agent. During this conversation, the agent will attempt to refine the user&amp;rsquo;s search criteria to try to lead the user to content that is available on the platform according to the available thematic categories also called tags (e.g., &amp;ldquo;Amor imposible&amp;rdquo;, &amp;ldquo;Persecuciones&amp;rdquo;, &amp;ldquo;Psicópatas&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;The conversation can be ended through various means:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;By breaking intents:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;ES: &lt;code&gt;intent.tv.display&lt;/code&gt; (contents &amp;amp; channels) and &lt;code&gt;intent.navigation.section_show&lt;/code&gt; (sections, apps&amp;hellip;)&lt;/li&gt;
&lt;li&gt;BR: &lt;code&gt;intent.tv.display&lt;/code&gt; (channels), &lt;code&gt;intent.tv.app_open&lt;/code&gt; (apps/third party platforms) and &lt;code&gt;intent.navigation.section_show&lt;/code&gt; (sections)&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;By breaking command: &lt;code&gt;EXIT&lt;/code&gt; (&amp;ldquo;Salir&amp;rdquo;, &amp;ldquo;Abandonar&amp;rdquo;, &amp;ldquo;Quiero irme ya&amp;rdquo;, &amp;ldquo;Eu quero sair daqui&amp;rdquo;, &amp;ldquo;Terminei&amp;rdquo;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When the user clicks on one of the contents that appears on the screen in response to their request&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;llm-output-format&#34;&gt;LLM output format&lt;/h3&gt;
&lt;p&gt;In the output format, the identified categories, their score, and the text for the user will be included without exceeding the 115-character limit.
The number of tags will vary depending on different cases:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Returning 0 when it is identified that the user wants to leave the conversation (breaking command)&lt;/li&gt;
&lt;li&gt;Returning 1 when the category mentioned by the user matches one from the available list&lt;/li&gt;
&lt;li&gt;Returning 3 for cases such as:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;No categories are identified in the user&amp;rsquo;s request&lt;/li&gt;
&lt;li&gt;The user wants to see the full list of categories or any recommendation in general&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The list of thematic categories is configured within the field &lt;code&gt;tags&lt;/code&gt; in the preset (in &lt;code&gt;args&lt;/code&gt;) with a format of comma-separated items enclosed in square brackets ([tag1, tag2, tag3, tag4&amp;hellip;]).&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Suficiente, quiero salir&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_search&amp;quot;, &amp;quot;arguments&amp;quot;: {&amp;quot;command&amp;quot;: &amp;quot;EXIT&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Me apetece ver algo de amor&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_search&amp;quot;, &amp;quot;arguments&amp;quot;: {&amp;quot;text&amp;quot;: &amp;quot;Aquí tienes algo sobre la temática: Amor&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;tags&amp;quot;:[{ &amp;quot;tag&amp;quot;: &amp;quot;Amor&amp;quot;, &amp;quot;score&amp;quot;: 0.98 }]}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Me gustaría ver contenido de aviones&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_search&amp;quot;, &amp;quot;arguments&amp;quot;: {&amp;quot;text&amp;quot;: &amp;quot;No he encontrado nada relacionado pero puedes explorar categorías como: Épico, Bélico o Crimen fallido&amp;quot;, &amp;quot;command&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;tags&amp;quot;:[{ &amp;quot;tag&amp;quot;: &amp;quot;Épico&amp;quot;, &amp;quot;score&amp;quot;: 0.98 }, { &amp;quot;tag&amp;quot;: &amp;quot;Bélico&amp;quot;, &amp;quot;score&amp;quot;: 0.92 }, { &amp;quot;tag&amp;quot;: &amp;quot;Crimen fallido&amp;quot;, &amp;quot;score&amp;quot;: 0.89}]}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;¿Qué categorías tienes disponibles?&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;llm_conversational_search&amp;quot;, &amp;quot;arguments&amp;quot;: {&amp;quot;text&amp;quot;: &amp;quot;Estas son algunas de las categorías que puedes explorar: Amor, Crisis de pareja o Reencuentros amorosos&amp;quot;,&amp;quot;command&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;tags&amp;quot;:[{ &amp;quot;tag&amp;quot;: &amp;quot;Amor&amp;quot;, &amp;quot;score&amp;quot;: 0.93 }, { &amp;quot;tag&amp;quot;: &amp;quot;Crisis de pareja&amp;quot;, &amp;quot;score&amp;quot;: 0.87 }, { &amp;quot;tag&amp;quot;: &amp;quot;Reencuentros amorosos&amp;quot;, &amp;quot;score&amp;quot;: 0.77 }]}}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/ai-config-obs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-recommend-llm/ai-config-obs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;ai-configuration-by-ob&#34;&gt;AI configuration by OB&lt;/h1&gt;
&lt;p&gt;The following information applies to both &lt;strong&gt;Spain&lt;/strong&gt; and &lt;strong&gt;Brazil&lt;/strong&gt;; there will not be separate blocks for each OB.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;LLMs UCs are configured and located within the &lt;code&gt;aura-config-provision&lt;/code&gt; repository. See the &lt;a href=&#34;https://github.com/Telefonica/aura-config-provision/blob/master/%5Bob%5D/presets/gvp-retrieve-preset.json&#34;&gt;TV LLM Search Preset&lt;/a&gt; (notice that in the url, the field [ob] needs to be replaced by [es] or [br])
LLM use cases have been designed to provide a fallback mechanism for user requests that currently return a &amp;lsquo;None&amp;rsquo; intent or zero results, offering a second chance for classification and response generation.&lt;/p&gt;
&lt;h3 id=&#34;intent&#34;&gt;Intent&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intent.tv.recommend&lt;/code&gt;: This intent will be returned when the user seeks TV content recommendations and explicitly refers to entities such as genres, subgenres, titles, sports-related content, directors, or actors. Example: &amp;ldquo;¿Qué documentales me recomiendas?&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;entities&#34;&gt;Entities&lt;/h3&gt;
&lt;p&gt;Three different entities can be returned if mentioned by the user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;entities.channel&lt;/code&gt;: This entity will be returned whenever there is a mention of a TV channel or a third-party TV platform in the user&amp;rsquo;s request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;entities.person&lt;/code&gt;: This entity will be returned whenever a proper name belonging to an actor, actress, director, driver, boxer, or other public figure is mentioned in the user&amp;rsquo;s request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;entities.query&lt;/code&gt;: This entity will be returned when any relevant information for performing a search on the platform is mentioned in the user&amp;rsquo;s request. (e.g., TV titles, genres, subgenres)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;llm-output-format&#34;&gt;LLM output format&lt;/h3&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Recomiéndame algún documental sobre historia&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.recommend&amp;quot;, &amp;quot;entities.query&amp;quot;: &amp;quot;documental||historia&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;¿Qué películas de acción me recomiendas?&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.recommend&amp;quot;, &amp;quot;entities.query&amp;quot;: &amp;quot;películas||acción&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/ai-config-obs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-search-llm/ai-config-obs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;ai-configuration-by-ob&#34;&gt;AI configuration by OB&lt;/h1&gt;
&lt;p&gt;The following information applies to both &lt;strong&gt;Spain&lt;/strong&gt; and &lt;strong&gt;Brazil&lt;/strong&gt;; there will not be separate blocks for each OB.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;LLMs UCs are configured and located within the &lt;code&gt;aura-config-provision&lt;/code&gt; repository. See the &lt;a href=&#34;https://github.com/Telefonica/aura-config-provision/blob/master/%5Bob%5D/presets/gvp-retrieve-preset.json&#34;&gt;TV LLM Search Preset&lt;/a&gt; (notice that in the url, the field [ob] needs to be replaced by [es] or [br])
LLM use cases have been designed to provide a fallback mechanism for user requests that currently return a &amp;lsquo;None&amp;rsquo; intent or zero results, offering a second chance for classification and response generation.&lt;/p&gt;
&lt;h3 id=&#34;intents&#34;&gt;Intents&lt;/h3&gt;
&lt;p&gt;Once the triage has classified the user&amp;rsquo;s petition under the intent &lt;code&gt;intent.tv.retrieve&lt;/code&gt;, the user&amp;rsquo;s petition can be further classified into the following intents or UCs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intent.tv.recommend&lt;/code&gt;: This intent will be returned when the user seeks TV content recommendations and explicitly refers to entities such as genres, subgenres, titles, sports-related content, directors, or actors. Example: &amp;ldquo;¿Qué documentales me recomiendas?&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intent.tv.retrieve&lt;/code&gt;: This intent will be returned when the user is searching for either generic or specific TV content. Example: &amp;ldquo;Muestra películas dirigidas por Quentin Tarantino&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intent.tv.none&lt;/code&gt;: This intent will be returned for any request that is not covered by the two use cases outlined above. Examples: &amp;ldquo;Cambia a Telecinco&amp;rdquo;, &amp;ldquo;Avanza 5 minutos&amp;rdquo;, &amp;ldquo;Pon una alarma&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;entities&#34;&gt;Entities&lt;/h3&gt;
&lt;p&gt;Three different entities can be returned if mentioned by the user:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;entities.channel&lt;/code&gt;: This entity will be returned whenever there is a mention of a TV channel or a third-party TV platform in the user&amp;rsquo;s request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;entities.person&lt;/code&gt;: This entity will be returned whenever a proper name belonging to an actor, actress, director, driver, boxer, or other public figure is mentioned in the user&amp;rsquo;s request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;entities.query&lt;/code&gt;: This entity will be returned when any relevant information for performing a search on the platform is mentioned in the user&amp;rsquo;s request. (e.g., TV titles, genres, subgenres)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;llm-output-format&#34;&gt;LLM output format&lt;/h3&gt;
&lt;p&gt;In the output format, the only mandatory field is that of the intent.
Entities are optional, as they may or may not be mentioned in the user&amp;rsquo;s request. If multiple values are present for an entity type, values must be separated by a double pipe &amp;ldquo;||&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Pon películas de Netflix de Almodovar y Tarantino&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.retrieve&amp;quot;, &amp;quot;entities.channel&amp;quot;: &amp;quot;Netflix&amp;quot;, &amp;quot;entities.person&amp;quot;: &amp;quot;Almodovar||Tarantino&amp;quot;, &amp;quot;entities.query&amp;quot;: &amp;quot;películas&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Pon la película Titanic&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.retrieve&amp;quot;, &amp;quot;entities.query&amp;quot;: &amp;quot;película||Titanic&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Pon antena 3&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.none&amp;quot;, &amp;quot;entities.channel&amp;quot;: &amp;quot;antena 3&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;¿Qué películas de acción me recomiendas?&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.recommend&amp;quot;, &amp;quot;entities.query&amp;quot;: &amp;quot;películas||acción&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-triage-llm/ai-config-obs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-triage-llm/ai-config-obs/</guid>
      <description>
        
        
        &lt;h1 id=&#34;ai-configuration-by-ob&#34;&gt;AI configuration by OB&lt;/h1&gt;
&lt;p&gt;The following information applies to both &lt;strong&gt;Spain&lt;/strong&gt; and &lt;strong&gt;Brazil&lt;/strong&gt;; there will not be separate blocks for each OB.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;LLMs UCs are configured and located within the &lt;code&gt;aura-config-provision&lt;/code&gt; repository. See the &lt;a href=&#34;https://github.com/Telefonica/aura-config-provision/blob/master/%5Bob%5D/presets/gvp-triage-preset.json&#34;&gt;TV LLM Triage Preset&lt;/a&gt; (notice that in the url, the field [ob] needs to be replaced by [es] or [br])
LLM use cases have been designed to provide a fallback mechanism for user requests that currently return a &amp;lsquo;None&amp;rsquo; intent or zero results, offering a second chance for classification and response generation.&lt;/p&gt;
&lt;h3 id=&#34;intents&#34;&gt;Intents&lt;/h3&gt;
&lt;p&gt;This UC can classify the user&amp;rsquo;s query into three different intents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;intent.tv.retrieve&lt;/code&gt;: This intent will be returned when the user is searching for either generic or specific TV content or when the user seeks TV content recommendations and explicitly refers to TV content entities. Examples: &amp;ldquo;Muestra películas dirigidas por Quentin Tarantino&amp;rdquo;, &amp;ldquo;¿Qué documentales me recomiendas?&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intent.conversational.search&lt;/code&gt;: This intent will be returned for user queries involving generic searches or advanced suggestions that do not explicitly reference TV content entities. Examples: &amp;ldquo;Recomendaciones avanzadas&amp;rdquo;, &amp;ldquo;Quiero ver algo en la tele&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intent.none&lt;/code&gt;: This intent will be returned for any request that is not covered by the two use cases outlined above. Examples: &amp;ldquo;Cambia a Telecinco&amp;rdquo;, &amp;ldquo;Avanza 5 minutos&amp;rdquo;, &amp;ldquo;Pon una alarma&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;llm-output-format&#34;&gt;LLM output format&lt;/h3&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Recomendador avanzado&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.conversational.search&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Pon películas de Netflix de Almodovar y Tarantino&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.tv.retrieve&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;ldquo;Patatas fritas&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;intent&amp;quot;: &amp;quot;intent.none&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

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


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Discover the AI global experiences developed by Aura Platform Team for video channels&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;Aura AI global cases provide different experiences to Telefónica customers for video services. Those video services could be provided by two platforms (one in Spain and GVP, currently in Brazil) and through different media, like Set-Top-Box and mobile apps, Movistar Plus.&lt;/p&gt;
&lt;p&gt;Access the left menu and discover the available AI global experiences.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/</guid>
      <description>
        
        
        &lt;h1 id=&#34;tv-custom-recommendation-uc&#34;&gt;TV Custom Recommendation UC&lt;/h1&gt;


&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;
&lt;p&gt;Global use case developed by Aura Platform Team that allows users to launch a custom recommendation based on Large Language Models (LLMs), through the use of &lt;em&gt;&lt;strong&gt;ATRIA&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The TV Custom Recommendation use case is a global experience designed and developed by Aura Global Team that allows Telefónica customers to ask Aura for a TV recommendation based on their mood and likes, using a vocal interface.&lt;/p&gt;
&lt;p&gt;Find additional information in the following documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover the &lt;a href=&#34;#specifications&#34;&gt;TV Custom Recommendation specifications&lt;/a&gt; and the particularities of the &lt;a href=&#34;#use-case-development&#34;&gt;use case development&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Discover which are the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/resources/&#34;&gt;resources used by the TV Custom Recommendation use case&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Find out the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/nlp-config-obs/&#34;&gt;NLP configuration for each OB&lt;/a&gt; for the TV Custom Recommendation use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;specifications&#34;&gt;Specifications&lt;/h2&gt;
&lt;h3 id=&#34;kernel-api&#34;&gt;Kernel API&lt;/h3&gt;
&lt;p&gt;In order to resolve the user&amp;rsquo;s request, Aura uses &lt;a href=&#34;https://developers.baikalplatform.com/apis/video-contents/&#34;&gt;Video Contents normalized Kernel API&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;request-response-model&#34;&gt;Request-response model&lt;/h3&gt;
&lt;p&gt;TV custom recommendation UC is available for use in both &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v1/&#34;&gt;the deprecated request-response model v1&lt;/a&gt; and the &lt;a href=&#34;../../docs/components/request-response-model/channeldata-v3/&#34;&gt;current request-response model v3&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;available-channels&#34;&gt;Available channels&lt;/h3&gt;
&lt;p&gt;The TV Custom Recommendation UC is available for STB channel both in Spain and in Brazil.&lt;/p&gt;
&lt;h3 id=&#34;custom-recommendation-features&#34;&gt;Custom recommendation features&lt;/h3&gt;
&lt;p&gt;Currently, the TV custom recommendation use case includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A conversation flow to identify the user&amp;rsquo;s likes and mood&lt;/li&gt;
&lt;li&gt;Once all the information is captured and treated by the LLM, a search by topic is launched to the TV APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-case-development&#34;&gt;Use case development&lt;/h2&gt;
&lt;p&gt;The TV custom recommendation use case development includes these components:&lt;/p&gt;
&lt;h3 id=&#34;understanding-features&#34;&gt;Understanding features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;TV custom recommendation use case intent: &lt;code&gt;intent.tv.custom-recommendation&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In order to understand users’ requests (utterances), Aura is trained with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../docs/experiences-builder/development-use-cases/nlp-uc-development/uc-development-process/&#34;&gt;NLP expression&lt;/a&gt; to recognize the user&amp;rsquo;s utterance and detect the user&amp;rsquo;s intention.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-case-logic&#34;&gt;Use case logic&lt;/h3&gt;
&lt;p&gt;Once Aura has recognized the user&amp;rsquo;s utterance based on NLP components, the use case should be resolved based on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Aura Bot dialog&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;TV Custom Recommendation is built over the &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/tv-custom-recommendation-dialog/&#34;&gt;&lt;em&gt;&lt;strong&gt;tv-custom-recommendation-v1&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-case-configuration&#34;&gt;Use case configuration&lt;/h3&gt;
&lt;p&gt;Check the section &lt;a href=&#34;../../docs/components/global-use-cases/ai-use-cases/tv-custom-recommendation/nlp-config-obs/&#34;&gt;Configuration of the TV Custom Recommendation use case&lt;/a&gt; in order to know the required configuration for the TV Custom Recommendation experience for each OB.&lt;/p&gt;

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