Skip to content

Sistema de Componentes

¿Qué son los Componentes?

Los componentes son elementos de UI que se adaptan automáticamente a cada canal (WhatsApp, Facebook, etc.). El sistema utiliza traductores específicos para cada plataforma.

Traductores por Canal

AbstractComponents

Clase base que define la interfaz común para todos los canales.

1
from bc_behavior.execution.modules.components.abstract_components import AbstractComponents

Traductores Disponibles

Canal Traductor Características
WhatsApp WhatsappComponents Lista numerada por defecto
Facebook FacebookComponents Botones nativos de Facebook
TalkCenter TalkcenterComponents Estructura JSON estándar

Selección Automática de Traductor

1
2
3
4
5
6
7
8
def get_translator(context):
    source = get_social_network(context)
    has_to_force_talkcenter_payload = force_talkcenter_payload(context)

    if has_to_force_talkcenter_payload:
        return TalkcenterComponents(context)

    return COMPONENT_TRANSLATORS.get(source, TalkcenterComponents)(context)

Configuración force_talkcenter_payload

Esta configuración especial permite sobrescribir el comportamiento por defecto de cualquier canal:

1
2
3
context['_settings'] = {
    'force_talkcenter_payload': True
}

Efectos por Canal

  • WhatsApp: Cambia de lista numerada a botones JSON
  • Facebook: Mantiene compatibilidad pero usa estructura estándar
  • Otros: Fuerza el uso del formato TalkCenter

Componentes Principales

Quick Replies

1
2
3
4
5
def quick_reply(context, text, replies, blockable=False):
    if force_talkcenter_payload(context):
        context = add_replies_mapping_to_context(context, replies)

    return get_translator(context).quick_replies(text, replies, blockable)

Button Template

1
2
3
4
5
def button_template(context, text, buttons):
    if force_talkcenter_payload(context):
        context = add_replies_mapping_to_context(context, buttons)

    return get_translator(context).button_template(text, buttons)

Archivos del Sistema

1
2
3
4
5
6
7
backend/bc_behavior/execution/modules/components/
├── abstract_components.py       # Clase base
├── components_module.py         # Lógica de selección
├── whatsapp_components.py       # Traductor WhatsApp
├── facebook_components.py       # Traductor Facebook
├── talkcenter_components.py     # Traductor estándar
└── component_types.py           # Tipos de datos