Saltar al contenido principal

Seguimiento

El follow-up cubre el segundo turno (y posteriores) dentro de una misma conversación: el usuario pregunta "¿por qué me recomiendas la Fox?", "¿qué diferencia hay con la otra?", y el agente responde con una explicación detallada referenciando productos concretos.

Tipos.

Cómo funciona

  1. El usuario hace una nueva pregunta dentro del mismo conversationId.
  2. El backend identifica que es un seguimiento (no una nueva búsqueda) y devuelve followUp: FollowUpResponse en SearchResponse.
  3. El widget renderiza con InlineFollowUp.

Estructura

interface FollowUpResponse {
question: string // pregunta del usuario
answer: string // explicación del agente
referencedProducts: FollowUpProduct[]
recommendation: string // veredicto final
}

interface FollowUpProduct {
productId: string
name: string
price: number
salePrice?: number
currency?: string
imageUrl: string
url: string
inStock?: boolean
rating?: number
reviewCount?: number
brands?: string[]
badge?: 'BESTSELLER' | 'TRENDING' | 'TOP_RATED'
highlights: string[] // 2-3 highlights máx
verdict: string // veredicto contextual del producto
externalId?: string
}

.

  • Bloque principal con answer formateada.
  • Lista colapsable de referencedProducts con cada uno mostrando highlights + verdict.
  • CTA final "Mostrar productos" / "Ocultar productos" (followUp.showProducts / hideProducts).
  • Footer con recommendation destacada.

Estado de la conversación

El widget mantiene el conversationId recibido en la primera respuesta y lo reenvía en peticiones subsiguientes. Si el usuario cierra el widget y lo reabre en la misma sesión del navegador, el conversationId se preserva (en sessionStorage). En cambio, al cambiar de pestaña / SPA reload, se inicia una conversación nueva.

i18n

followUp.aiResponse, followUp.referencedProducts, followUp.recommendation, followUp.showProducts, followUp.hideProducts, followUp.viewProduct en