# Asignar agente

> Hace que un agente responda un número de WhatsApp, quitándolo de cualquier otro agente.

Fuente: https://developers.plazbot.com/whatsapp/cli/assign/

### Asignar agente

Asigna un número de WhatsApp a un agente para que responda los mensajes entrantes. Un número lo responde un solo agente: si otro agente ya lo tiene, el CLI lo mueve (lo quita de ese agente) después de pedir confirmación. Solo cambian los canales de los agentes afectados; el resto de su configuración se mantiene.

```bash
plazbot whatsapp assign -p <número> -a <agentId> [opciones]
```

### Parámetros

| Parámetro | Flag | Requerido | Descripción |
|-----------|------|-----------|-------------|
| Teléfono | `-p, --phone <number>` | Sí | Número de WhatsApp en formato internacional, por ejemplo `+51912345678` |
| Agente | `-a, --agent <agentId>` | Sí | Agente que responderá el número, por ejemplo `age_AbcDef123` |
| JSON | `--json` | No | Imprime solo JSON en stdout |
| Confirmar | `-y, --yes` | No | Omite la confirmación cuando el número se mueve entre agentes (para scripts y CI) |

> **Nota:** La forma anterior con argumentos (`plazbot whatsapp assign 51912345678 age_AbcDef123`) sigue funcionando.

### Ejemplos

```bash
# Hacer que un agente responda un número (lo quita de cualquier otro agente)
plazbot whatsapp assign -p +51912345678 -a age_AbcDef123

# Sin confirmación cuando el número cambia de agente
plazbot whatsapp assign -p +51912345678 -a age_AbcDef123 --yes

# Salida JSON (con --json la confirmación requiere --yes)
plazbot whatsapp assign -p +51912345678 -a age_AbcDef123 --yes --json
```

### Resultado

Cuando el número estaba en otro agente:

```text
+51912345678 is currently assigned to:
  • Soporte (age_GhiJkl456)

? Move +51912345678 to "Ventas" and remove it from 1 other agent? Yes
✔ +51912345678 assigned to "Ventas"
✔ Removed +51912345678 from "Soporte"

+51912345678 now answered by "Ventas" (moved from Soporte).
```

Cuando el número no estaba en ningún agente, solo se muestra `✔ +51912345678 assigned to "Ventas"`. Si ya estaba asignado a ese agente y a ningún otro:

```text
+51912345678 is already assigned to "Ventas". Nothing to change.
```

Si respondes que no a la confirmación, imprime `Aborted.` y termina con código 1. El número se asigna primero al agente nuevo y luego se quita de los demás, así nunca queda sin agente.

### Salida JSON

```json
{
"phone": "51912345678",
"agentId": "age_AbcDef123",
"agentName": "Ventas",
"assigned": true,
"changed": true,
"removedFrom": [
  { "id": "age_GhiJkl456", "name": "Soporte" }
]
}
```

- `changed` es `false` (y `removedFrom` vacío) si el número ya estaba asignado solo a ese agente.
- Si no se pudo quitar el número de algún agente, aparece `failed` con `{ "id", "name", "error" }` por agente y el comando termina con código 1.

### Errores comunes

| Mensaje | Causa | Solución |
|---------|-------|----------|
| `Missing agent ID.` | No pasaste `-a` | Agrega `-a age_AbcDef123` (consulta los IDs con [`plazbot agent list`](https://developers.plazbot.com/cli/agent/list)) |
| `Agent age_AbcDef123 not found in the active workspace.` | ID incorrecto o de otro workspace | Revisa el ID con `plazbot agent list` |
| `This action needs confirmation and there is no interactive terminal.` | El número cambia de agente, sin terminal o con `--json`, y sin `--yes` | Vuelve a ejecutar con `--yes` |
| `+51912345678 is still assigned to 1 other agent(s).` | Falló la actualización de algún agente anterior | Quítalo en el panel o vuelve a ejecutar el comando |

> **Tip:** Revisa las asignaciones actuales con [`plazbot whatsapp channels`](https://developers.plazbot.com/whatsapp/cli/channels).
