Conectar Vapi a un troncal SIP español

Vapi conecta con cualquier operador mediante una credencial BYO SIP trunk que se crea por API. Esta guía recorre las tres llamadas necesarias — credencial, número y llamada de prueba — con numeración española en E.164.

Última revisión: · Contenido verificado por Universal Telecom.

Qué consigues

Terminación española a precio de operador para los agentes de voz que ya tienes montados en Vapi: conectas por SIP y las llamadas salen y entran por nuestra red en España.

  • Precio de operador terminación española por un troncal local, sin tarifa internacional
  • CDR por llamada registro detallado para facturar a tus clientes minuto a minuto
  • CLI auténtico presentas numeración española real: más descuelgues
  • DTMF garantizado RFC 2833 extremo a extremo: tus agentes navegan IVRs

Consumo mínimo 150 €/mes, alta del troncal en 48 h, sin permanencia. Facturación por segundos, sin establecimiento. La tarifa de terminación por minuto va en el rate deck que te mandamos con el alta.

Datos del troncal

Esto es lo que vas a introducir en Vapi. Los datos de conexión son individuales por cliente y te los entregamos con el alta (48 h); el resto es fijo y puedes dejarlo preparado.

Host SIP de terminación Con el alta (48 h)
IPs y puertos de señalización Con el alta (48 h)
Autenticación Credenciales con el alta (48 h)
Códecs G.711 A-law (PCMA) y G.711 µ-law (PCMU)
DTMF RFC 2833 (telephone-event), extremo a extremo
Formato de numeración E.164 con prefijo: +34XXXXXXXXX en destino y en CLI
CLI de salida Número español asignado o portado al troncal (no se permite CLI ajeno)

Configuración en Vapi, paso a paso

En Vapi el troncal externo no se configura en el dashboard sino por API: una credencial de tipo byo-sip-trunk y un número byo-phone-number asociado a ella.

  1. Elige la región y no la mezcles. Vapi tiene región EU con API y SIP propios: si tu organización está alojada en la UE, usa https://api.eu.vapi.ai con sip.eu.vapi.ai; en la región US, https://api.vapi.ai con sip.vapi.ai. Su documentación exige mantener API y host SIP en la misma región. Para tráfico español, la región EU reduce latencia de señalización.
  2. Crea la credencial byo-sip-trunk con el host del troncal y las credenciales que te entregamos con el alta:
    curl -X POST "$VAPI_API_BASE_URL/credential" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer TU_CLAVE_PRIVADA_VAPI" \
      -d '{
        "provider": "byo-sip-trunk",
        "name": "Troncal Universal Telecom",
        "gateways": [{ "ip": "<host-del-troncal>" }],
        "outboundLeadingPlusEnabled": true,
        "outboundAuthenticationPlan": {
          "authUsername": "<usuario-del-alta>",
          "authPassword": "<contraseña-del-alta>"
        }
      }'
    outboundLeadingPlusEnabled: true hace que Vapi marque en E.164 con +34, que es el formato que espera el troncal. Guarda el id de la credencial que devuelve la API. Vapi desaconseja la autenticación solo por IP en troncales compartidos: si tu alta llega con usuario y contraseña van en outboundAuthenticationPlan; si llega con autenticación por IP, la credencial se crea sin ese bloque y las IPs se cierran en el alta.
  3. Asocia tu número español a esa credencial:
    curl -X POST "$VAPI_API_BASE_URL/phone-number" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer TU_CLAVE_PRIVADA_VAPI" \
      -d '{
        "provider": "byo-phone-number",
        "name": "Numero ES principal",
        "number": "+34XXXXXXXXX",
        "numberE164CheckEnabled": true,
        "credentialId": "<id-de-la-credencial>"
      }'
    El número es el que te asignamos (o portas) con el alta: será tu CLI de salida y tu número de entrada.
  4. Entrantes. Vapi recibe las llamadas en {+34XXXXXXXXX}@<credential_id>.sip.vapi.ai (o .sip.eu.vapi.ai en la región EU). Pásanos el credential_id y dejamos el troncal apuntando ahí; el intercambio de IPs de señalización de ambos lados se cierra en el alta (las de Vapi están publicadas en su documentación de red).
  5. Llamada de prueba por API, con tu assistantId y el phoneNumberId del paso 3:
    curl -X POST "$VAPI_API_BASE_URL/call/phone" \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer TU_CLAVE_PRIVADA_VAPI" \
      -d '{
        "assistantId": "<assistant-id>",
        "customer": { "number": "+34910000002" },
        "phoneNumberId": "<phone-number-id>"
      }'
    Sigue después la sección de verificación, más abajo.

Si la creación de la credencial falla con un error de gateway, revisa que el host del troncal esté escrito sin sip: ni puerto, tal y como te lo entregamos. Vapi publica una guía específica de errores de credencial BYO en su documentación.

Documentación oficial citada

Ejemplo SIP: el INVITE que debe salir de Vapi

Así debe verse una llamada saliente correcta hacia el troncal (<host-del-troncal> es el host que te entregamos con el alta; los números son de ejemplo):

INVITE sip:+34912345678@<host-del-troncal> SIP/2.0
From: <sip:+34910000001@<host-plataforma>>;tag=8a71b2
To: <sip:+34912345678@<host-del-troncal>>
P-Asserted-Identity: <sip:+34910000001@<host-plataforma>>
Contact: <sip:agente@<host-plataforma>>
Content-Type: application/sdp

m=audio 40000 RTP/AVP 8 0 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
  • Request-URI y To: destino en E.164 con +34. Sin prefijos de escape (00, 011) ni números nacionales a 9 cifras.
  • From y P-Asserted-Identity: tu CLI español en E.164. El PAI es el que valida la identidad en la red; si tu plataforma solo permite fijar el From, es suficiente.
  • SDP: ofrece PCMA (G.711 A-law, el códec de la red española) y telephone-event para DTMF por RFC 2833.

Verificación: tres llamadas y el CDR

  1. Saliente a un fijo español. Lanza una llamada de prueba desde Vapi a un fijo (+34 91… / +34 95…). Debe establecer en 1–3 s con audio en ambos sentidos. Si hay audio en un solo sentido, revisa NAT/puertos RTP en tu lado o en el firewall de la plataforma.
  2. CLI en un móvil. Llama a un móvil tuyo: debe presentarse el número español asignado, no "desconocido" ni un número extranjero. Ese CLI es el que decide los descuelgues en salientes.
  3. DTMF contra un IVR. Llama a un IVR real (vale el de tu propia centralita) y haz que el agente marque una opción. La cifra debe registrarse a la primera; si no llega, comprueba que la plataforma envía RFC 2833 y no tonos en banda (inband).

Cada llamada queda en el CDR con origen, destino, duración por segundos e importe: es la base para facturar a tus clientes minuto a minuto. El acceso al detalle de CDR te lo entregamos con el alta.

Tarifas y alta

Terminación por minuto En el rate deck (a demanda)
Consumo mínimo 150 €/mes
Numeración local desde 3 €/mes según país
Alta del troncal en 48 h, sin permanencia

Cuéntanos qué montas sobre Vapi y te devolvemos credenciales del troncal, rate deck con tus rutas reales y esta guía con tus datos.

Universal Telecom Experts S.L.U., operador registrado en la CNMC. UTIO es nuestra línea de agentes de IA.