# Enviar plantilla

> Envía una plantilla de WhatsApp aprobada, con variables y archivo de cabecera opcionales.

Fuente: https://developers.plazbot.com/whatsapp/cli/send-template/

### Enviar plantilla

Envía una plantilla aprobada por Meta. Las plantillas se pueden enviar en cualquier momento, también a contactos nuevos y fuera de la ventana de 24 horas.

```bash
plazbot whatsapp send-template -p <número> -t <plantilla> [opciones]
```

### Parámetros

| Parámetro | Flag | Requerido | Descripción |
|-----------|------|-----------|-------------|
| Teléfono | `-p, --phone <number>` | Sí | Número del destinatario en formato internacional, por ejemplo `+51912345678` |
| Plantilla | `-t, --template <name>` | Sí | Nombre exacto de la plantilla aprobada en Meta (ej: `welcome_message`) |
| Variables del cuerpo | `--var <name=value...>` | No | Uno o más pares `nombre=valor` (ej: `--var name=Anna code=PB-123`) |
| Variables de cabecera | `--header-var <name=value...>` | No | Pares `nombre=valor` para una cabecera de texto (ej: `--header-var store=Lima`) |
| URL del archivo | `--file-url <url>` | No | URL pública (http/https) de la imagen, video o documento de la cabecera |
| Nombre del archivo | `--file-name <name>` | No | Nombre que ve el destinatario en una cabecera de documento. Requiere `--file-url`. Default: `file` |
| JSON | `--json` | No | Imprime solo JSON en stdout |

#### Formato de las variables

- Siempre `nombre=valor`. Solo el primer `=` separa, así que el valor puede contener `=`.
- Si el valor tiene espacios, pon el par entre comillas: `--var "name=Anna Lopez"`.
- Un par sin `=`, sin nombre o con valor vacío es un error: el CLI no lo descarta en silencio.
- `--var` y `--header-var` aceptan varios pares. Ponlos después de las demás opciones o repite el flag.

### Ejemplos

```bash
# Plantilla sin variables
plazbot whatsapp send-template -p +51912345678 -t welcome_message

# Plantilla con variables del cuerpo
plazbot whatsapp send-template -p +51912345678 -t order_status --var name=Anna code=PB-123

# Variable de cabecera de texto más variable del cuerpo
plazbot whatsapp send-template -p +51912345678 -t promo --header-var store=Lima --var amount=20

# Plantilla con documento en la cabecera
plazbot whatsapp send-template -p +51912345678 -t invoice --file-url https://files.example.com/inv.pdf --file-name invoice.pdf
```

### Resultado

```text
Sending WhatsApp template
────────────────────────────────────────
To: +51912345678
Template: order_status
Body variables: name=Anna, code=PB-123
✔ Template sent
```

Cuando corresponde, también se muestran `Header variables: ...` y `File: <url> (<nombre>)`.

### Salida JSON

```json
{
"phone": "51912345678",
"template": "order_status",
"status": "sent",
"messageId": "..."
}
```

`messageId` aparece solo cuando la API lo devuelve.

### Errores comunes

| Mensaje | Causa | Solución |
|---------|-------|----------|
| `Invalid --var "name".` | Falta el `=` o el nombre | Usa `--var name=Anna` |
| `Variable "name" in --var has an empty value.` | El valor está vacío (`--var name=`) | WhatsApp rechaza variables vacías: pasa un valor |
| `--file-name needs --file-url.` | Pasaste `--file-name` sin archivo | Agrega `--file-url <url>` |
| `Invalid --file-url "..."` | La URL no es http(s) | Usa una URL pública http(s) |
| `The template was not sent.` (más el detalle de la API) | Nombre incorrecto, plantilla no aprobada o variables que no coinciden | Revisa la plantilla y sus variables en el panel (Templates) |
| `Invalid phone number "..."` | Número mal formado | Usa el formato internacional, por ejemplo `+51912345678` |

> **Tip:** `--header-var` llena los marcadores de una cabecera de texto. Para una cabecera de imagen, video o documento usa `--file-url` (y `--file-name` para documentos).
