# WhatsApp

> Envía mensajes, plantillas y gestiona webhooks de WhatsApp

Fuente: https://developers.plazbot.com/sdk/message/

### Introducción

Para trabajar con **WhatsApp**, es necesario configurar tu número en Plazbot. La configuración se realiza directamente con Meta.

<Card
  title="Configurar WhatsApp"
  icon="whatsapp"
  href="https://docs.plazbot.com/kb/conectar-whatsapp-api"
>
  Guía para conectar tu número de WhatsApp en Plazbot.
</Card>

### Inicialización

```ts Plazbot (recomendado)
import { Plazbot } from 'plazbot';

const plazbot = new Plazbot({
workspaceId: "YOUR_WORKSPACE_ID",
apiKey: "YOUR_API_KEY",
zone: "LA"
});

// Usar: plazbot.message.onWhatsappMessage(...)
```

```ts Message individual
import { Message } from 'plazbot';

const message = new Message({
workspaceId: "YOUR_WORKSPACE_ID",
apiKey: "YOUR_API_KEY",
zone: "LA"
});
```

---

### Enviar Mensaje Simple

Envía un mensaje de texto por WhatsApp. Solo funciona si la conversación con el cliente está activa (dentro de la ventana de 24 horas de Meta).

```ts
const result = await plazbot.message.onWhatsappMessage({
message: "Gracias por contactarnos!",
to: "51912345678"
});
```

> **Info:** Consulta la documentación de Meta sobre ventanas de conversación y tarifas: [Meta Pricing](https://developers.facebook.com/docs/whatsapp/pricing)

---

### Enviar Plantilla (Template)

Las plantillas permiten iniciar conversaciones en cualquier momento. Deben estar creadas y aprobadas previamente en **Marketing** > **Plantillas** dentro de Plazbot.

**Uso básico:**

```ts
await plazbot.message.onConversation({
to: "51912345678",
template: "welcome_plazbot"
});
```

**Con variables:**

```ts
await plazbot.message.onConversation({
to: "51912345678",
template: "order_confirmation",
variablesBody: [
  { variable: "1", value: "Juan" },
  { variable: "2", value: "ORD-12345" }
],
variablesHeader: [
  { variable: "1", value: "Pedido Confirmado" }
]
});
```

**Con archivo adjunto:**

```ts
await plazbot.message.onConversation({
to: "51912345678",
template: "invoice_template",
file: {
  fileUrl: "https://tu-servidor.com/facturas/INV-001.pdf",
  fileName: "factura.pdf"
}
});
```

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `to` | `string` | Si | Número de teléfono con código de país |
| `template` | `string` | Si | Nombre de la plantilla aprobada |
| `variablesBody` | `array` | No | Variables para el cuerpo del mensaje |
| `variablesHeader` | `array` | No | Variables para el header |
| `file` | `object` | No | Archivo adjunto (`fileUrl` y `fileName`) |

---

### Historial de Mensajes

Consulta mensajes enviados y recibidos en tu workspace.

```ts
// Obtener mensajes recientes
const messages = await plazbot.message.getMessages({ limit: 20 });

// Historial de conversación con un contacto
const history = await plazbot.message.getConversationHistory({
contactId: "contact-id"
});

// Buscar mensajes por texto
const results = await plazbot.message.searchMessages({
query: "precio"
});
```

---

### Webhooks

Registra un webhook para recibir mensajes entrantes de WhatsApp en tu endpoint.

**Registrar webhook:**

```ts
await plazbot.message.registerWebhook({
number: "51912345678",
webhookUrl: "https://tu-servidor.com/webhooks/whatsapp"
});
```

**Eliminar webhook:**

```ts
await plazbot.message.deleteWebhook({
number: "51912345678"
});
```

> **Tip:** El webhook envía el mensaje y la información del contacto cada vez que un cliente escribe al número configurado. Es ideal para integraciones con Make, Zapier o tu propio servidor.
