# Enviar mensajes

> Texto libre, plantillas con variables y plantillas con archivo desde SDK, CLI y REST

Fuente: https://developers.plazbot.com/whatsapp/enviar-mensajes/

Todos los ejemplos usan la misma autenticación: `Authorization: Bearer <API key>` y el header `x-workspace-id`. La base de la API es `https://api.plazbot.com` (América) o `https://apieu.plazbot.com` (Europa).

## Texto libre

Para responder dentro de la [ventana de 24 horas](https://developers.plazbot.com/whatsapp/conceptos). El contacto debe existir (debe haberte escrito antes).

```ts SDK
await bot.message.onWhatsappMessage({
to:      "51912345678",
message: "Gracias por escribirnos, Ana.",
})
```

```bash CLI
plazbot whatsapp send-message \
--phone +51912345678 \
--message "Gracias por escribirnos, Ana."
```

```bash cURL
curl -X POST https://api.plazbot.com/api/message \
-H "Authorization: Bearer $PLAZBOT_API_KEY" \
-H "x-workspace-id: $PLAZBOT_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
  "workspaceId": "'$PLAZBOT_WORKSPACE_ID'",
  "recipientPhone": "51912345678",
  "content": "Gracias por escribirnos, Ana."
}'
```

El mensaje sale por el número al que el contacto escribió.

## Plantilla con variables

Para iniciar conversaciones o escribir fuera de la ventana de 24 horas. La plantilla debe estar **aprobada y activa**.

```ts SDK
await bot.message.onConversation({
to:            "51912345678",
template:      "recordatorio_cita",
variablesBody: [
  { variable: "1", value: "Ana" },
  { variable: "2", value: "jueves 10:30" },
],
})
```

```bash CLI
plazbot whatsapp send-template \
--phone +51912345678 \
--template recordatorio_cita \
--var 1=Ana "2=jueves 10:30"
```

```bash cURL
curl -X POST https://api.plazbot.com/api/conversation \
-H "Authorization: Bearer $PLAZBOT_API_KEY" \
-H "x-workspace-id: $PLAZBOT_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
  "workspaceId": "'$PLAZBOT_WORKSPACE_ID'",
  "destination": "51912345678",
  "template": "recordatorio_cita",
  "variablesBody": [
    { "variable": "1", "value": "Ana" },
    { "variable": "2", "value": "jueves 10:30" }
  ]
}'
```

La plantilla se envía desde el número al que pertenece. Para variables del encabezado usa `variablesHeader` (SDK/REST) o `--header-var` (CLI).

## Plantilla con archivo

Facturas, tickets o imágenes como encabezado de la plantilla, desde una URL pública.

```ts SDK
await bot.message.onConversation({
to:            "51912345678",
template:      "factura_mensual",
variablesBody: [{ variable: "1", value: "Ana" }],
file: {
  fileUrl:  "https://tu-app.com/facturas/F-1024.pdf",
  fileName: "F-1024.pdf",
},
})
```

```bash CLI
plazbot whatsapp send-template \
--phone +51912345678 \
--template factura_mensual \
--file-url https://tu-app.com/facturas/F-1024.pdf \
--file-name F-1024.pdf \
--var 1=Ana
```

```bash cURL
curl -X POST https://api.plazbot.com/api/conversation \
-H "Authorization: Bearer $PLAZBOT_API_KEY" \
-H "x-workspace-id: $PLAZBOT_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
  "workspaceId": "'$PLAZBOT_WORKSPACE_ID'",
  "destination": "51912345678",
  "template": "factura_mensual",
  "variablesBody": [{ "variable": "1", "value": "Ana" }],
  "file": {
    "fileUrl": "https://tu-app.com/facturas/F-1024.pdf",
    "fileName": "F-1024.pdf"
  }
}'
```

## Envíos masivos

Para enviar una plantilla a una lista de números desde un archivo:

```bash
# Primero valida la lista sin enviar nada
plazbot whatsapp broadcast --template promo_octubre --phones ./numeros.txt --dry-run

# Envía (pide confirmación; usa --yes en scripts)
plazbot whatsapp broadcast --template promo_octubre --phones ./numeros.txt --delay 1000
```

El archivo es una lista simple: un número por línea en formato internacional (también sirven comas o punto y coma). Se ignoran líneas vacías, comentarios `#` y una línea de encabezado; los duplicados se envían una vez. Ver [`broadcast`](https://developers.plazbot.com/whatsapp/cli/broadcast).

## Inicializar el SDK

```ts lib/plazbot.ts
import { Plazbot } from "plazbot"

export const bot = new Plazbot({
apiKey:      process.env.PLAZBOT_KEY!,
workspaceId: process.env.PLAZBOT_WORKSPACE_ID!,
zone:        "LA", // "LA" | "EU"
})
```

Referencia completa del módulo de mensajes en [SDK → WhatsApp](https://developers.plazbot.com/sdk/message).
