# Migrar al motor de voz VPower

Estamos pasando todos los agentes de voz a **VPower**, el nuevo motor de voz de Anunzi: más rápido para responder, voces más naturales y gestión completa de tus agentes por API. El motor de voz anterior **quedará deprecado** cuando terminemos el pase.

Los agentes pasan **por tandas**, de a uno, y **te avisamos antes** de pasar los tuyos. Esta guía te dice qué revisar en tu integración para que el cambio no se note.

> 💡 **En resumen:** si integraste llamadas web con nuestro SDK (`VoiceClient`, como indica la [guía de llamadas web v3](migrar-llamadas-web-v3.md)), **no tienes que cambiar nada**. Las llamadas telefónicas por API tampoco cambian.

---

## Qué cambia y qué no

| | Con el motor anterior | Con VPower |
|---|---|---|
| URL base y API Key | `https://calls.anunzi.net` · `anz_live_…` | **Igual** |
| `agent_id` | El de siempre | **Igual**: sigues usando el mismo ID |
| Llamadas telefónicas (`/v2/create-phone-call`) | Cuerpo y respuesta | **Igual** |
| Llamadas web (`/v3/create-web-call`) | Cuerpo y respuesta | Cuerpo **igual**; en la respuesta, `transport` vale `anunzi` |
| SDK de llamadas web | `VoiceClient` de Anunzi | **El mismo** `VoiceClient`: detecta el motor solo |
| Identificador de llamada (`call_id`) | `call_…` | Empieza con `lk_…` |
| Obtener, listar, actualizar, detener y eliminar llamadas | — | **Igual** (mismas rutas y mismos campos) |
| Gestionar el agente por API (prompt, voz, funciones…) | No disponible | **Disponible**: ver [Gestionar agentes](gestionar-agentes.md) |
| Webhook de eventos de la plataforma | `call.completed` | **Igual** |

---

## Paso 1 — Llamadas web: usa el SDK de Anunzi

Es el único punto que puede requerir un cambio. Revisa qué SDK usa tu frontend:

- **Si importas `VoiceClient` desde `https://panel.anunzi.net/voice/web-sdk.php`**: no tienes que hacer nada. El mismo código funciona con los dos motores, antes y después del pase.
- **Si usas otro SDK de llamadas web** (instalado con npm o copiado de otro lado): reemplázalo **ahora** por el de Anunzi. Con VPower, los otros SDK no pueden conectarse.

```js
import { VoiceClient } from 'https://panel.anunzi.net/voice/web-sdk.php';

const client = new VoiceClient();
client.on('call_started', () => console.log('Llamada iniciada'));
client.on('call_ended',   () => console.log('Llamada terminada'));
client.on('update', (u) => console.log(u.transcript)); // transcripción en vivo

// `call` es la respuesta completa de POST /v3/create-web-call (la crea tu servidor)
await client.startCall({
  accessToken: call.access_token,
  callId:      call.call_id,
  transport:   call.transport,
  url:         call.url,
  iceServers:  call.ice_servers,
});
```

> ⚠️ Pasa **todos** los datos de conexión que devuelve tu servidor, no solo el `accessToken`. Con VPower, `transport` vale `anunzi` y `url` es obligatoria: sin ellas la llamada no conecta.

Los eventos (`call_started`, `call_ready`, `call_ended`, `agent_start_talking`, `agent_stop_talking`, `update`, `error`) y los métodos (`startCall`, `stopCall`, `mute`, `unmute`) son los mismos en los dos motores. Detalle completo en [Crear llamada web](crear-llamada-web.md).

---

## Paso 2 — Revisa si guardas o validas el `call_id`

Si tu sistema valida el formato del identificador de llamada (por ejemplo, que empiece con `call_`), acepta también los que empiezan con `lk_`. Se usan igual en todas las rutas: [Obtener llamada](obtener-llamada.md), [Actualizar](actualizar-llamada.md), [Detener](detener-llamada.md) y [Eliminar](eliminar-llamada.md).

---

## Paso 3 (opcional) — Gestiona tus agentes por API

Con VPower puedes cambiar el agente desde tu sistema, sin entrar al panel: prompt, mensaje inicial, modelo, funciones, voz, idioma, comportamiento y extractores, con borradores y publicación.

- [Gestionar agentes](gestionar-agentes.md): listar, actualizar, publicar y ver versiones.
- [Prompt, modelo y funciones](prompt-y-funciones.md).
- [Voces y números](voces-y-numeros.md).

Mientras un agente sigue en el motor anterior, estas rutas responden `409` con `"code": "agent_not_migrated"`.

---

## Cómo probar antes del pase

1. Pide al equipo de Anunzi una **copia de prueba** de tu agente en VPower (o crea uno de prueba).
2. Crea una llamada web y una telefónica con ese `agent_id` desde tu integración, sin cambiar nada más.
3. Si conecta y recibes el resultado como siempre (consulta y webhook), tu integración ya está lista.

¿Dudas? Escríbenos desde **Contacta con Soporte** en el panel.
