Producto
SDK

Widget IA

Implementa un widget de chat IA en tu sitio web

Introducción

Con el SDK de Plazbot puedes activar un Widget de chat IA para tu página web. El widget es una funcionalidad del Agente de IA.

La activacion del widget requiere una llamada independiente al método enableWidget. No se activa al actualizar el agente con updateAgent.

Importante: Los agentes asociados a Widgets deben tener useToolCalling: true activado para que el streaming SSE funcione correctamente. Los nuevos agentes ya se crean con esta opción activada por defecto.

Activacion

ts
01const result = await plazbot.agent.enableWidget({ id: agentId, enable: true });
02console.log(result.script); // Script para instalar en tu web

El sistema retorna el script HTML que debes instalar en tu página web:

html
01<script id="id-widget-agent-plz" type="module" defer
02 src="https://storagelaplazbot.z13.web.core.windows.net/widget.js?Id={ID_AGENT}&zone={ZONE}&workspaceId={WORKSPACE_ID}">
03</script>

Funcionalidades del chat

FuncionalidadDescripción
Respuestas rapidasSi un campo de un servicio o acción del agente tiene botones configurados (requiredFields[].buttons), el widget los muestra bajo el mensaje del agente. El usuario responde con un clic
Asesor humanoCuando un asesor responde desde el CRM, su mensaje aparece con su nombre, diferenciado de la IA. Si el bot esta apagado para el contacto, el usuario ve el aviso "Un asesor te respondera por aquí en breve"
Mensajes sin leerSi llega un mensaje con el widget cerrado o la pestaña en segundo plano, el botón flotante muestra un contador y el título de la pestaña indica (n)
Conversación persistenteVolver a la pantalla de inicio no borra la conversación: el usuario la retoma con "Continuar conversación"
Resumen por correoAl solucionar el chat, el contacto recibe un correo con el resumen y el historial de la conversación. Se activa en Settings → Chat → Enviar resumen por correo al solucionar el chat (apagado por defecto, aplica a todos los canales y requiere que el contacto tenga email)

Para controlar el widget desde tu sitio (abrirlo desde tus botones, identificar al usuario, escuchar mensajes), usa la API JavaScript del Widget.

Desactivacion

ts
01await plazbot.agent.enableWidget({ id: agentId, enable: false });

Configuración en agent.config.json

Basicos

CampoTipoDescripción
enableWidgetbooleanActiva o desactiva el widget
typeWidgetstringTipo de widget: widget (chat lateral) o search (buscador centrado)
nameWidgetstringTexto de la cabecera del widget
questionstringPregunta principal de la pantalla de inicio
initialShowWidgetbooleanSi el widget aparece abierto al cargar la página
initialViewWidgetstring | nullVista inicial al abrir el widget: home, chat o avatar. null equivale a home (legacy)
positionWidgetstringPosición al abrirse: down (abajo-derecha clasico) o center (centrado en pantalla). Solo aplica en desktop; en mobile siempre es fullscreen. Default: down
iconWidgetstringIcono del botón flotante: robot, message, support, qa, chat, smile, voice, uservoice

Tema visual

El widget soporta 5 temas. colorWidget tiene prioridad sobre darkWidget (legacy).

CampoTipoDescripción
colorWidgetstring | nullTema visual: white | dark | green | blue | gray. Si es null/ausente se aplica el fallback legacy darkWidget
darkWidgetbooleanModo oscuro legacy (fallback cuando colorWidget no esta definido)

Reglas de alcance por tema:

  • white y dark aplican el tema a TODO el widget (container, header, body, footer).
  • green, blue, gray aplican SOLO a la cabecera/accent. El body siempre queda en light.

Comportamiento y mensajes

CampoTipoDescripción
multianswerWidgetbooleanDivide la respuesta del agente IA en varios mensajes consecutivos. Hace la conversación más natural cuando las respuestas son largas
formWidgetbooleanMuestra un formulario de registro (nombre, apellido, correo, WhatsApp) antes de iniciar el chat
formTypeWidgetstringEstilo del formulario de registro: chat (pide los datos conversando) o fields (campos en una sola pantalla). Solo aplica si formWidget es true. Default: chat
formFieldsWidgetarrayHasta 5 campos adicionales del formulario fields. Cada campo: label, type (text, select o date), options (si es select), variable (código de la variable de contacto donde se guarda) y required. El combo guarda el texto elegido y la fecha en formato yyyy-MM-dd
fUseAutomationFlowWidgetbooleanPrioriza los flujos de automatización sobre el agente IA
advisorNameModeWidgetstringNombre que ve el cliente sobre los mensajes de un asesor humano: agent (nombre del asesor asignado, default) o custom (usa advisorNameWidget)
advisorNameWidgetstring | nullNombre personalizado del asesor (ej: "Equipo de Soporte"). Solo aplica si advisorNameModeWidget es custom; si está vacío se usa el asesor asignado
enablePoweredBybooleanMuestra el pie de página "Powered by Plazbot" en el widget. Solo editable para administradores de Plazbot (para marcas blancas queda en false)

Canal WhatsApp

CampoTipoDescripción
enableWhatsappWidgetbooleanMuestra botón de acceso directo a WhatsApp
urlWhatsappWidgetstringURL completa: https://wa.me/1234567890

Avatar virtual

El avatar animado con voz usa la plataforma HeyGen para el streaming de video.

CampoTipoDescripción
enableAvatarWidgetbooleanActiva avatar animado con voz
avatarFaceIdstringavatar_id de HeyGen (ej: Annie_expressive12_public)
avatarVoiceIdstringvoice_id de HeyGen (Multilingual). Usa default o vacío para la voz nativa del avatar
avatarLanguagestringCódigo ISO corto: es, en, pt, fr, it, de
avatarQualitystringCalidad del streaming: low, medium, high. A mayor calidad, mayor consumo de creditos. Default: medium
avatarApiKeystringAPI Key personal de HeyGen del cliente (BYOK). Opcional
avatarBackgroundstring | nullURL de imagen de fondo personalizada para el avatar. Si tiene valor, se aplica chroma key sobre fondo verde
avatarGenderstringDeprecado (legacy). HeyGen no lo usa: el genero es inherente al avatarFaceId. Se mantiene por retrocompatibilidad

Preguntas de ejemplo

CampoTipoDescripción
examplesarrayLista de preguntas sugeridas en la pantalla de inicio. Cada entrada: { value: string, color: "orange" | "blue" | "green" | "gray" | "white" }

Ejemplo completo

json
01{
02 "enableWidget": true,
03 "typeWidget": "widget",
04 "nameWidget": "Asistente",
05 "question": "En que puedo ayudarte?",
06 "colorWidget": "blue",
07 "darkWidget": false,
08 "iconWidget": "robot",
09 "initialShowWidget": false,
10 "multianswerWidget": true,
11 "formWidget": false,
12 "formTypeWidget": "chat",
13 "fUseAutomationFlowWidget": false,
14 "enablePoweredBy": true,
15 "enableWhatsappWidget": false,
16 "urlWhatsappWidget": null,
17 "examples": [
18 { "value": "Cuales son sus horarios?", "color": "blue" },
19 { "value": "Como puedo contactar a soporte?", "color": "green" }
20 ]
21}
¿Quieres probar la API en vivo? Abre el Playground.