Este documento describe todo lo que un worker de Plazbot puede usar: los tipos de worker, el objeto plz que recibe cada handler, todos sus módulos y métodos, y todos los campos del contacto que devuelve plz.contacts.
1. Tipos de worker
Todos se importan de plazbot/workers. El handler puede llamarse handler o run (el runtime acepta los dos).
Función | Qué hace | Firma del handler |
|---|---|---|
| Herramienta que un agente IA ejecuta durante una conversación. |
|
| Escucha eventos de la plataforma (mensaje recibido, contacto creado, etc.). |
|
| Endpoint HTTP público que recibe llamadas de apps externas. |
|
| Tarea programada con expresión cron. |
|
| Sincroniza datos de un sistema externo hacia los contactos. |
|
Campos comunes de configuración
Campo | Tipo | Descripción |
|---|---|---|
|
| Nombre único del worker (slug). Obligatorio. |
|
| Descripción de lo que hace. En un tool, el agente IA la usa para decidir cuándo invocarlo. |
defineTool
Campo | Tipo | Descripción |
|---|---|---|
|
| Parámetros que el agente extrae de la conversación. Cada uno: |
| función | Devuelve |
Respuesta del tool:
Campo | Tipo | Descripción |
|---|---|---|
|
| Texto que el agente usa para formular su respuesta. |
|
| Datos estructurados opcionales. |
|
| Acciones automáticas sobre el contacto: |
defineWorker (eventos)
Campo | Tipo | Descripción |
|---|---|---|
|
| Eventos que lo disparan. Al menos uno. |
Eventos disponibles: message.received, message.image.received, message.audio.received, message.document.received, contact.created, contact.existing, contact.deleted, contact.blocked, contact.from.ad, conversation.assigned, conversation.resolved, conversation.reopened.
defineWebhook
Campo | Tipo | Descripción |
|---|---|---|
|
|
|
URL generada: https://workers.plazbot.com/<workspaceId>/<name>.
El request trae method, headers, query, body, ip y url. El handler devuelve { status, headers?, body? }.
defineSchedule
Campo | Tipo | Descripción |
|---|---|---|
|
| Expresión cron de 5 campos. Ej: |
|
| Zona horaria IANA opcional (ej. |
defineSync
Campo | Tipo | Descripción |
|---|---|---|
|
| Nombre del sistema origen (HubSpot, Stripe, etc.). |
|
| Expresión cron de ejecución. |
| función | Trae los registros del sistema externo. Puede usar |
| función | Convierte un registro en |
| función | Opcional. |
2. El objeto plz
Propiedad | Descripción |
|---|---|
| ID del workspace (sin llamada a la API). |
| Contactos: listar, buscar, crear, editar, variables, etiquetas, fases, agente. |
| Enviar mensajes, archivos y plantillas de WhatsApp. |
| Mensajes de un contacto, notas, resolver y reabrir. |
| Agentes IA: obtener, listar y conversar. |
| Plantillas de WhatsApp. |
| Datos maestros: variables, etiquetas, fases, segmentaciones y miembros. |
| Google Sheets (integración conectada). |
| Google Calendar (integración conectada). |
| Google Docs (integración conectada). |
| Almacén clave-valor persistente del workspace. |
| Llamadas autenticadas a cualquier endpoint de la API de Plazbot. |
|
|
| Logs visibles en el historial del worker. |
| Secrets del workspace ( |
| Cursor de sincronización (solo en |
3. plz.contacts
Métodos
Método | Devuelve | Descripción |
|---|---|---|
| Contacto | Un contacto por su ID, con todos sus campos. |
| Contacto[] | Contactos ordenados por último mensaje (más reciente primero). |
|
| Una página de contactos. Repetir con |
| respuesta API | Busca por número ( |
| respuesta API | Busca por email exacto. Los contactos vienen en |
| respuesta API | Crea un contacto. Ver campos de creación más abajo. |
| respuesta API | Actualiza cualquier campo editable del contacto (ver tabla de campos). |
| respuesta API | Elimina varios contactos por ID. |
|
| Valor de una variable personalizada. |
| respuesta API | Crea o actualiza una variable personalizada. |
| respuesta API | Agrega una etiqueta por nombre o ID. Falla si la etiqueta no existe en el workspace. |
| respuesta API | Quita una etiqueta por nombre o ID. |
| respuesta API | Cambia la fase por nombre o ID. |
| respuesta API | Mueve todos los contactos de una fase a otra (nombre o ID). |
| respuesta API | Cambia la segmentación por nombre o ID. |
| respuesta API | Asigna un agente por email, nombre, nombre completo o ID de usuario. |
| respuesta API | Marca la conversación como resuelta. |
"Respuesta API" significa el formato estándar { success, code, message, data }.
Filtros de list
Filtro | Tipo | Coincide con |
|---|---|---|
|
| Contactos que tienen todas las etiquetas (por ID o nombre). |
|
| ID de la fase ( |
|
| Resuelto ( |
|
| ID del agente asignado. |
|
| Texto contenido en |
Importante: list y listPage no devuelven contactos archivados (isArchived = true) ni ocultos del chat (isShowInChat = false). Para esos, usa get(id) o search.
Los filtros de list se aplican después de leer cada página, así que filtros muy restrictivos sobre workspaces grandes pueden hacer muchas llamadas (tope interno de 100 páginas de 100 contactos).
4. Campos del contacto
Esto es lo que devuelven get, list, listPage y search.
Identidad y datos básicos
Campo | Tipo | Descripción |
|---|---|---|
|
| ID único del contacto. |
|
| Workspace al que pertenece. |
|
| Nombre. |
|
| Apellido. |
|
| Alias o apodo. |
|
| Correo electrónico. |
|
| Teléfono principal. |
|
| Teléfono secundario. |
|
| Tercer teléfono. |
|
| Número/identificador del canal con el que habla el contacto (en WhatsApp, el número con código de país). Es el que usa |
|
| Código ISO del país (ej. |
|
| Código de marcación (ej. |
|
| Número de documento (DNI, RUC, etc.). |
|
| Razón social o empresa. |
|
| ID del contacto en un sistema externo. |
|
| Color del avatar. |
|
| Fecha de creación. |
|
| Campos libres adicionales. |
Canal y plataforma
Campo | Tipo | Descripción |
|---|---|---|
|
| Canal: 1 webchat, 2 WhatsApp, 3 Facebook, 4 Instagram, 5 Telegram, 6 portal, 7 código, 8 llamadas, 9 Facebook Leads, 10 Tickos, 11 TikTok. |
|
| ID de la integración (línea) por la que entró. |
|
| En el listado de WhatsApp viene reemplazado por el alias de la línea de WhatsApp. |
|
| Nombre del remitente en la plataforma. |
|
| Teléfono del remitente en la plataforma. |
|
| Si el contacto usa WhatsApp Business. |
|
| Usuario de WhatsApp. |
|
| wa_id de WhatsApp. |
|
| Identificador BSUID de WhatsApp. |
|
| Contacto creado desde una llamada. |
Gestión (fase, agente, estado)
Campo | Tipo | Descripción |
|---|---|---|
|
| ID de la fase. Para el nombre usa |
|
| ID de la segmentación. Nombre con |
|
| ID del agente asignado. |
|
| Nombre del agente asignado. |
|
| Fecha de la última asignación. |
|
| Agentes alternos: |
|
| Conversación resuelta. |
|
| Quién la resolvió. |
|
| Cuándo se resolvió. |
|
| Si el último mensaje fue leído. |
|
| Si el bot/agente IA está activo para este contacto. |
|
| Contacto bloqueado. |
|
| Creado a mano (no por mensaje entrante). |
|
| Si aparece en la bandeja de chats. |
|
| Contacto archivado. |
|
| Quién lo archivó. |
|
| Cuándo se archivó. |
|
| Motivo de rechazo. |
|
| Fecha del rechazo. |
|
| Posición en la vista Kanban. |
Mensajes y actividad
Campo | Tipo | Descripción |
|---|---|---|
|
| Texto del último mensaje. |
|
| Fecha del último mensaje (orden del listado). |
|
| Primer mensaje. |
|
| Fecha del primer mensaje. |
|
| Primera respuesta de un agente. |
|
| URL de la última imagen recibida. |
|
| URL del último audio recibido. |
|
| Última acción de un agente humano desde el panel. Solo lectura. |
|
| Último mensaje entrante del contacto. Solo lectura. |
|
| La más reciente de las dos anteriores. Solo lectura. |
Etiquetas, variables y archivos
Campo | Tipo | Descripción |
|---|---|---|
|
|
|
|
| Variables personalizadas: |
|
| Archivos adjuntos: |
Anuncios y formularios
Campo | Tipo | Descripción |
|---|---|---|
|
| Datos del anuncio de origen: |
|
| ID del formulario de Meta Leads. |
|
| Nombre del formulario. |
|
| Respuestas de formularios: |
Historial y seguimiento
Campo | Tipo | Descripción |
|---|---|---|
|
| Bitácora: |
|
| Reglas ejecutadas: |
|
| Encuestas respondidas: |
|
| Secuencia activa: |
|
| Citas/eventos: |
|
| Tickets de Zendesk: |
|
| Último correo de resumen enviado. |
|
| Último resumen IA generado. |
Integraciones externas
Campo | Descripción |
|---|---|
| ID del contacto en HubSpot. |
| ID en Zoho. |
| ID en Mailchimp. |
| ID y hash en ActiveCampaign. |
| Transferencia entre workspaces ( |
Campos para create
Obligatorios: name y platformId (el workspaceId lo pone el runtime).
Opcionales: lastname, email, phoneNumber, internalWhatsappNumber, stageId, isoCountryCode, phoneCountryDialCode, externalReferenceId, integrationId, customFields ([{ code, value }] para variables).
Campos que no se pueden cambiar con update
id, workspaceId, internalWhatsappNumber, platformId, last_agent_touch, last_lead_activity y last_activity. Cualquier otro campo de la tabla se puede enviar en update(id, { ... }).
5. Los demás módulos
plz.whatsapp
Método | Descripción |
|---|---|
| Envía un texto al número |
| Envía un archivo por URL. |
| Envía una plantilla. Campos: |
| Mensajes del contacto. |
plz.conversations
Método | Descripción |
|---|---|
| Mensajes del contacto. |
| Guarda una nota interna (no se envía al contacto). |
| Marca resuelto. |
| Reabre la conversación. |
plz.agents
Método | Descripción |
|---|---|
| Un agente IA. |
| Todos los agentes. |
| Pregunta al agente. Devuelve la respuesta ( |
plz.templates
Método | Descripción |
|---|---|
| Todas las plantillas de WhatsApp. |
| Solo las aprobadas/activas. |
plz.workspace
Método | Descripción |
|---|---|
| Datos completos del workspace. |
| Variables personalizadas definidas. |
| Etiquetas activas. |
| Fases. |
| Segmentaciones. |
| Miembros del equipo. |
plz.sheets (Google Sheets)
document acepta el ID o la URL completa. account (email de Google) o credentialId solo hacen falta si hay más de una cuenta conectada.
Método | Descripción |
|---|---|
| Filas como objetos |
| Agrega una fila; |
| Actualiza las filas que cumplen los filtros. |
| Pestañas con sus columnas. |
| Busca hojas en el Drive por nombre. |
plz.calendar (Google Calendar)
Método | Descripción |
|---|---|
| Calendarios de la cuenta. |
| Eventos en un rango (fechas ISO). |
| Franjas ocupadas. |
| Crea un evento (opcionalmente con Meet). |
|
|
| Elimina un evento. |
plz.docs (Google Docs)
Método | Descripción |
|---|---|
| Busca documentos por nombre. |
| Devuelve |
plz.kv (almacén clave-valor)
Método | Descripción |
|---|---|
| Valor o |
| Guarda cualquier valor JSON; |
| Borra la clave. |
|
|
plz.api, plz.fetch, plz.log, plz.env
Propiedad | Descripción |
|---|---|
| Llama a la API de Plazbot ya autenticada. Ej.: |
|
|
| Logs visibles en el historial de ejecuciones. |
| Secrets configurados en el workspace. |
6. Ejemplos con plz.contacts
Leer un contacto y sus variables
Buscar por teléfono o email
Pendientes de un agente con una etiqueta
Recorrer todos los contactos
Actualizar varios campos a la vez
Crear un contacto
7. Límites
Las llamadas de
plz.contacts(y de cualquier módulo que use la API) cuentan contra el límite de la API del workspace: 120 requests por minuto, con ráfaga de hasta 40.Con
pageSize: 100, recorrer 50.000 contactos son 500 llamadas: unos 5 minutos dentro del límite.setVariable,getVariable,addTag,removeTag,setStage,setSegmentationyassignAgenthacen 2 llamadas cada uno (leen y luego escriben). Tenlo en cuenta en bucles grandes.