Ir al contenido
Guía

Gemini Live en una llamada real con la API de Wixzel Voice

Cuatro peticiones HTTP te llevan de una cuenta vacía a un teléfono sonando con el modelo Gemini Live de Google en la línea: conectar tu troncal SIP, registrar un número, crear un agente en tiempo real y hacer la llamada. Una quinta consulta el registro, con la transcripción y lo que costó la llamada. Con tu operador ya configurado lleva unos 10 minutos. El motor Gemini Live cuesta $0.0491 por minuto conectado, el precio más bajo de la lista de precios, así que una llamada de tres minutos sale por unos $0.15, facturados por segundo desde un saldo prepago, más la tarifa de tu operador.

Por · Publicado el · Actualizado el

Duración
Unos 10 minutos con tu operador ya configurado
Tiempo de motor
$0.0491 por minuto conectado

¿Qué necesitas antes de empezar?

  • Una clave de API de Wixzel Voice con crédito. La recarga mínima es de $5.
  • Una troncal SIP en tu operador y un número en ella que el operador te permita mostrar como identificador de llamada.
  • curl, jq y uuidgen.

¿Cómo construyes esto en Wixzel Voice, paso a paso?

  1. 01Conecta tu troncal SIP

    Define tu clave y la base de la API una vez, y luego crea la troncal. tee guarda la respuesta completa, porque además del id necesitas dos valores de ella:

    shell
    export WIXZEL_API_KEY="wv_live_..."
    API=https://api.voice.wixzel.com/v1
    
    TRUNK_ID=$(curl -s $API/sip-trunks \
      -H "Authorization: Bearer $WIXZEL_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "My carrier",
        "host": "sip.your-carrier.example",
        "username": "your-sip-username",
        "password": "your-sip-password"
      }' | tee trunk.json | jq -r .id)
    
    jq -r '.platform_ip, .origination_uri' trunk.json

    Omite username y password si tu operador autoriza por IP. En cualquier caso, añade platform_ip a la lista de IP permitidas del operador para que acepte llamadas desde la plataforma; origination_uri es adonde el operador debe enviar las llamadas entrantes, algo que esta guía no necesita.

  2. 02Registra el número desde el que vas a llamar

    Usa tu propio número, en formato E.164:

    shell
    NUMBER_ID=$(jq -n --arg trunk "$TRUNK_ID" \
      '{phone_number: "+14155550100", sip_trunk_id: $trunk}' |
      curl -s $API/phone-numbers \
        -H "Authorization: Bearer $WIXZEL_API_KEY" \
        -H "Content-Type: application/json" \
        -d @- | jq -r .id)
  3. 03Crea el agente Gemini Live

    La voz es un solo modelo en tiempo real en lugar de tres etapas:

    shell
    AGENT_ID=$(jq -n --arg number "$NUMBER_ID" '{
        name: "Gemini Live",
        system_prompt: "You are a friendly assistant on a phone call. Keep answers to one or two sentences.",
        opening_message: "Hi, this is an automated assistant. Do you have a minute?",
        outbound_phone_number_id: $number,
        voice: { realtime: { model: "google/gemini-live", voice: "Charon" } }
      }' |
      curl -s $API/agents \
        -H "Authorization: Bearer $WIXZEL_API_KEY" \
        -H "Content-Type: application/json" \
        -d @- | jq -r .id)

    voice.realtime entrega todo el turno (escuchar, razonar y hablar) a Gemini Live, así que no hay bloque stt, llm ni tts; la API rechaza una voz que nombre ambas formas. Charon es una de las voces predefinidas de Gemini, y GET /v1/engines/gemini_live/voices las lista todas con las descripciones de una palabra de Google.

    outbound_phone_number_id le da al agente un identificador de llamada, y eso es lo que permite que la siguiente petición omita from_number_id.

  4. 04Haz la llamada

    Sustituye el número to por el teléfono al que quieres llamar:

    shell
    CALL_ID=$(jq -n --arg agent "$AGENT_ID" '{to: "+14155551234", agent_id: $agent}' |
      curl -s $API/calls \
        -H "Authorization: Bearer $WIXZEL_API_KEY" \
        -H "Idempotency-Key: $(uuidgen)" \
        -H "Content-Type: application/json" \
        -d @- | jq -r .id)

    La API responde 201 con status: "queued" al instante, y el teléfono suena un momento después. Idempotency-Key es obligatorio aquí: si la red agota el tiempo de espera, no sabes si la llamada se hizo, y un reintento con la misma clave devuelve la llamada original en lugar de marcar dos veces, así que conserva la clave si programas reintentos. Una llamada que no puede cubrir sus primeros 15 segundos se rechaza con 402 antes de marcar.

  5. 05Consulta qué pasó

    La quinta petición consulta la llamada:

    shell
    curl -s $API/calls/$CALL_ID \
      -H "Authorization: Bearer $WIXZEL_API_KEY" | jq
    Example response, shortened
    {
      "id": "6a96a3ead6e886d42462dd3e",
      "object": "call",
      "session_id": "sip-5b0c7c0e-9d1f-4c52-8a9e-2f0d3a4b6c7d",
      "status": "completed",
      "direction": "outbound",
      "channel": "phone",
      "engine": "gemini_live",
      "to": "+14155551234",
      "duration_seconds": 94,
      "cost_micros": 76923,
      "failure_code": null,
      "failure_reason": null,
      "transcript": [
        { "role": "assistant", "content": "Hi, this is an automated assistant. Do you have a minute?" },
        { "role": "user", "content": "Sure, go ahead." }
      ]
    }

    status pasa de queued por ringing e in-progress a completed, o termina como failed, busy o no-answer. cost_micros se escribe cuando la llamada se liquida (1 000 000 equivale a $1.00) y queda en null en una llamada que nunca se conectó, porque esa llamada no se cobra. Cuando una llamada falla, failure_code es la causa Q.850 del operador (17 ocupado, 19 sin respuesta, 21 rechazada por el operador) y failure_reason dice qué hacer al respecto. GET /v1/usage/events?session_id=… detalla cada cargo.

¿Cuánto cuesta esto en Wixzel Voice?

Tiempo de motor para llamadas de 3 minutos con el motor gemini-live a $0.0491 por minuto conectado: unos $0.15 por llamada. La telefonía es tu propia troncal con la tarifa de tu operador y no está incluida.

Costo mensual de motor de lo que construye esta guía
Llamadas al mesMinutos conectadosCosto de motor al mes
300900$44.19
15004500$221
600018.000$884

La cifra por minuto corresponde a un ritmo de habla típico e incluye la cuota de orquestación. Gemini Live se mide en tokens de audio mientras la llamada está en curso, así que una llamada con poca conversación cuesta menos que la estimación y una con mucha conversación, más. La respuesta de ejemplo de arriba calcula el precio de una llamada de 94 segundos con la tarifa por minuto. Tu operador factura la línea por separado, sin margen.

Prepago, sin suscripción y sin plan gratuito: agrega crédito desde $5 y el uso lo va consumiendo. Calcula tu propia combinación.

¿Qué límites de Wixzel Voice se aplican a esto?

  • Las llamadas telefónicas necesitan tu propia troncal SIP. Wixzel Voice no vende, porta ni aloja números. Puede comprarte uno en una cuenta de Twilio, Telnyx, Plivo, Vobiz o Vonage que conectes desde la consola, facturado por tu operador.
  • Una llamada de prueba con POST /v1/agents/{id}/test-call dice su frase mediante el pipeline de voz classic, porque Gemini Live no tiene un modo de frase única. Para oír la propia voz de Gemini, haz una llamada normal.
  • Por defecto, cada cuenta puede tener cinco llamadas en curso a la vez; el límite se amplía a petición.
  • No se publica ninguna cifra de latencia: un motor en tiempo real responde tan rápido como el propio modelo. Los cambios de comportamiento de Wixzel Voice se publican detrás de un encabezado Wixzel-Version con fecha.

Preguntas frecuentes

¿Puede Gemini Live hacer llamadas telefónicas?

Gemini Live es un modelo, no un servicio telefónico. Wixzel Voice une ambos: crea un agente cuya voz sea {"realtime": {"model": "google/gemini-live"}}, y POST /v1/calls marca un número real por tu propia troncal SIP con Gemini Live en la línea.

¿Necesito una clave de Google Cloud o de la API de Gemini?

No. En la plataforma alojada, las cuentas de los proveedores son de Wixzel Voice. Una sola clave de API wv_live_ y un saldo prepago cubren Gemini Live y todos los demás motores.

¿Qué voces puede usar Gemini Live en una llamada?

Sus voces predefinidas, como Charon, Kore y Puck. GET /v1/engines/gemini_live/voices las lista todas. Una voz de la lista de otro motor se rechaza al crear el agente.

¿Cuánto cuesta una llamada telefónica con Gemini Live?

$0.0491 por minuto conectado a un ritmo de habla típico, unos $0.15 por tres minutos, facturados por segundo desde crédito prepago, más la tarifa de tu operador. Una llamada que nunca se conecta no cuesta nada.

¿El agente Gemini Live también puede atender llamadas entrantes?

Sí. Pon el agente como inbound_agent_id del número de teléfono con PATCH /v1/phone-numbers/{id}, y apunta la ruta entrante de tu operador al origination_uri de la troncal.

Dónde leer más

  • Inicio rápidodocumentación

    Las mismas cuatro peticiones, también con los SDK de TypeScript y Dart.

  • Motores de vozdocumentación

    La forma de voz en tiempo real, las listas de voces y los idiomas.

  • Troncales SIPdocumentación

    Lista de IP permitidas, enrutamiento entrante y qué significa cada código de fallo.

  • Idempotenciadocumentación

    Por qué POST /v1/calls necesita una clave y cómo funcionan las repeticiones.

API para telefonía con agentes

Acerca de Wixzel Voice

Wixzel Voice es una API de IA de voz para crear agentes de IA que hacen y contestan llamadas telefónicas reales a través de tu propia troncal SIP, o que hablan con personas en tus apps web y móviles. Una clave de API y un saldo prepagado cubren todos los motores de voz, con cobro por segundo de uso real.

Dale a Claude una línea telefónica con el MCP de Wixzel Voice

Claude, en Claude Code o claude.ai, haciendo una llamada real por tu troncal SIP y leyéndote la transcripción, con una confirmación antes de marcar.

Recepcionista con IA para Twilio en Node.js con Wixzel Voice

Tu número actual de Twilio atendido por un recepcionista de IA que agenda citas en la API, hecho en Node.js.

Agente telefónico en hindi y malayalam con sarvam en Wixzel Voice

Dos agentes telefónicos, uno en hindi y otro en malayalam, con los modelos de Sarvam para idiomas de la India, que atienden o hacen llamadas por tu troncal SIP.

Añade un agente de voz a Flutter por WebSocket con Wixzel Voice

Una app Flutter en la que los usuarios hablan con tu agente de voz por WebSocket, con la clave de API guardada en tu servidor y sin ningún número de teléfono.

Haz una campaña de calificación de leads con IA con Wixzel Voice

Una lista de leads llamados por tu agente a través de tu troncal SIP, en lotes ajustados a tu límite de llamadas simultáneas, con el estado y la transcripción de cada llamada.

Añade una mascota de IA que habla a tu web con Wixzel Voice

Una mascota que habla en la esquina de tu sitio web, a la que los visitantes llaman desde el navegador, limitada a tus dominios y a tus límites diarios, con cada persona que llama registrada.

Muestra la mascota de tu agente en Flutter con Wixzel Voice

Una pantalla de Flutter con la mascota de tu agente, que mueve la boca con la voz del agente durante una llamada en tiempo real, con tu clave de API guardada en tu servidor.