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.
| 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
| 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:
| 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
| 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)
|
| 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
| 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
|