Introducción
El módulo Flow gestiona los WhatsApp Flows del workspace: formularios de varias pantallas que el contacto llena sin salir de WhatsApp (reservar una cita, registrarse, una encuesta). Son los mismos Flows de WhatsApp > Flows en Plazbot: lo que creas aquí aparece en el panel y en el editor de automatizaciones. Disponible desde la versión 2.4.0.
Inicialización
01import { Plazbot } from 'plazbot';0203const plazbot = new Plazbot({04 workspaceId: "YOUR_WORKSPACE_ID",05 apiKey: "YOUR_API_KEY",06 zone: "LA"07});0809// Usar: plazbot.flow.list()
Listar y obtener
01const flows = await plazbot.flow.list();02const flow = await plazbot.flow.get("flo_..."); // incluye flowJson
Crear un Flow
El JSON del Flow usa el formato de Meta (version y screens). El Flow se crea en Meta como borrador. Si Meta encuentra errores en el JSON, el Flow se guarda igual y los errores vienen en validationError.
01const { id, validationError } = await plazbot.flow.create({02 name: "Reservar cita",03 categories: ["APPOINTMENT_BOOKING"],04 flowJson: {05 version: "7.0",06 screens: [/* pantallas del Flow */]07 }08});0910if (validationError) console.log("Revisa el JSON:", validationError);
| Campo | Descripción |
|---|---|
name | Nombre del Flow. |
flowJson | JSON del Flow en formato de Meta. |
categories | SIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY u OTHER. Por defecto OTHER. |
number / numberId | Número dueño del Flow. Opcional si el workspace tiene un solo número. |
description | Descripción interna. |
dataExchangeConfig | Configuración del endpoint de intercambio de datos, si el Flow lo usa. |
Probar, publicar y editar
01// Un borrador se envía en modo de prueba: úsalo con tu propio número02await plazbot.flow.send({03 flowId: id,04 to: "51912345678",05 body: "Reserva tu cita aquí",06 cta: "Reservar" // texto del botón07});0809await plazbot.flow.update(id, { flowJson: nuevoJson }); // solo borradores; lo que no pases se mantiene10await plazbot.flow.publish(id); // ya no se puede editar1112// Para cambiar un Flow publicado: duplícalo, edita la copia y publícala13const copy = await plazbot.flow.duplicate(id);
send() acepta también header y footer. Enviar un Flow es un mensaje libre: solo sale dentro de las 24 horas desde el último mensaje del contacto, y el contacto debe existir en el workspace.
Activar, desactivar y borrar
01await plazbot.flow.setActive(id, false); // se oculta del editor de automatizaciones02await plazbot.flow.delete(id); // solo en Plazbot03await plazbot.flow.delete(id, { alsoInMeta: true }); // también en Meta (los publicados se deprecan)
Respuestas del Flow
Lo que llena el contacto llega como un mensaje del contacto, en el chat y en tus webhooks, y se puede usar en las automatizaciones.
Errores
Los métodos lanzan PlazbotApiError (con code y message) cuando la API o Meta rechazan la operación.