Integración con Twilio

Configuraciones / Twilio

La integración de Zadarma y Twilio permite dirigir las llamadas entrantes de los números virtuales de Zadarma a su Twilio y procesarlas según sus configuraciones actuales de Twilio. También puede realizar llamadas salientes desde Twilio a través de su cuenta en Zadarma con las tarifas rentables de Zadarma..

1. Configuración de llamadas entrantes

Agregar el dominio SIP en Twilio.

En su cuenta de Twilio abra el apartado Twilio Console → Voice → SIP Domains y pulse el botón + para agregar un nuevo dominio.

Ejemplo de configuración del dominio:

  • FRIENDLY NAME - nombre del dominio, por ejemplo, zadarma;
  • SIP URI - dominio, nombre arbitrario, para la comodidad se puede usar el número virtual.

SIP Domain URL

En el apartado Voice Authentication agregue por turnos tres IP ACCESS CONTROL LISTS que contendrá las direcciones IP de confianza de Zadarma desde los cuales Twilio recibirá las llamadas entrantes. Esas direcciones IP las encontrará en el apartado Configuración → Números virtuales o simplemente cópielos de estas instrucciones.

  • FRIENDLY NAME - sipurifr.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.216 /32

IP ACCESS CONTROL LISTS

  • FRIENDLY NAME - sipuriny.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.155.33 /32

IP ACCESS CONTROL LISTS

  • FRIENDLY NAME - sipde.zadarma.com
  • CIDR NETWORK ADDRESS - 185.45.152.174 /32

IP ACCESS CONTROL LISTS

Asegúrese de que los tres IP ACCESS CONTROL LISTS agregados están seleccionados en los ajustes del dominio SIP.

Voice Authentication

Más abajo, en el apartado Call Control Configuration en el parámetro A CALL COMES IN seleccione qué gestionara las llamadas entrantes, si ya tiene el enrutamiento configurado en Twilio - seleccione su opción, por ejemplo Studio y su Flow (escenario) para las llamadas entrantes, pulse Save para guardar los ajustes de su dominio SIP.

Call Control Configuration

Ejemplo Flow (escenario) para las llamadas entrantes


A continuación, en los ajustes de SIP Domain en el apartado SIP Registration se debe habilitar la opción de registrarse cambiando el interruptor a Enabled.

SIP Registration

Más abajo, en CREDENTIAL LISTS se debe seleccionar el SIP Endpoint existente que recibirá las llamadas entrantes con la ayuda de softphone. Si todavía no tiene SIP Endpoint créelo pulsar el botón "+".

Agregar SIP Endpoint


La configuración del dominio SIP ha finalizado, pulse el botón Save.

2. Envío de llamadas a Twilio

En el punto anterior, añadimos el dominio SIP en Twilio, que contiene el URI SIP necesario para el enrutamiento:

  1. Abra en Zadarma el apartado Configuración → Números virtuales.
  2. Oulse el icono ⚙ en su número (ajustes).
  3. Abra la pestaña "Servidor externo".
  4. Habilite la opción "Servidor externo (SIP URI)".
  5. En el campo emergente inserte el SIP URI: sip:15551111111@15551111111.sip.twilio.com

    - donde 15551111111.sip.twilio.com – es su SIP URI de los ajustes del dominio SIP en Twilio.

  6. Pulse "Guardar".

La configuración de llamadas entrantes ha finalizado.

2. Configuración de llamadas salientes desde Twilio

Las llamadas salientes desde Twilio se pueden realizar mediante varias opciones, veamos el ejemplo de iniciar una llamada a través de Twilio REST API (Calls API).

En el siguiente ejemplo se mostrará la creación de una conferencia entre un SIP Endpoint en el que está configurado el softphone y un número externo (llamada a través de Zadarma).

En el ejemplo se utilizará un script en Python. Antes de comenzar, asegúrese de que Python y la biblioteca Twilio estén instalados en su sistema (www.twilio.com/docs/libraries/reference/twilio-python).

Para autenticar la solicitud, es necesario utilizar el Account SID y el Auth Token, los cuales puede encontrar en el Account Dashboard de Twilio, en la esquina superior izquierda de la página.

Para la autorización de la llamada saliente se usará el SIP y la contraseña desde el área personal de Zadarma.

Cree el script call.py con el siguiente contenido:


from twilio.rest import Client

# Datos de la cuenta de Twilio
ACCOUNT_SID = "Account_SID_value"
AUTH_TOKEN = "Auth_Token_value"
TWILIO_NUMBER = "+15559999999"  # Número confirmado en Twilio para Caller ID
CONFERENCE_NAME = "MyConferenceRoom"

#Datos del SIP de Zadarma 
ZADARMA_SIP_URI = "sip:+525500000777@sip.zadarma.com"  # A dónde llamamos desde Zadarma
ZADARMA_SIP_USER = "12345"  # en lugar de 12345 debe indicar su SIP de Zadarma
ZADARMA_SIP_PASSWORD = "my_sip_password"  # Contraseña del SIP Zadarma

# SIP Endpoint (local)
SIP_ENDPOINT = "sip:11111@15551111111.sip.twilio.com"  # Su SIP Endpoint en el que está configurado el softphone para recibir la llamada

# Inicialización del cliente de Twilio
client = Client(ACCOUNT_SID, AUTH_TOKEN)

# La función de agregar al participante en la conferencia
def add_to_conference(to_number, from_number=None, sip_auth_user=None, sip_auth_password=None):
    call_params = {
        "to": to_number,
        "from_": from_number if from_number else TWILIO_NUMBER,
        "twiml": f"""<Response>
                        <Dial>
                            <Conference>{CONFERENCE_NAME}</Conference>
                        </Dial>
                     </Response>"""
    }

    # Agregamos la autenticación
    if sip_auth_user and sip_auth_password:
        call_params["sip_auth_username"] = sip_auth_user
        call_params["sip_auth_password"] = sip_auth_password

    call = client.calls.create(**call_params)
    print(f"Llamada al {to_number} iniciada, SID: {call.sid}")

# Inicio de llamada
add_to_conference(ZADARMA_SIP_URI, from_number=TWILIO_NUMBER, sip_auth_user=ZADARMA_SIP_USER, sip_auth_password=ZADARMA_SIP_PASSWORD)  # Llamada al número externo desde Zadarma
add_to_conference(SIP_ENDPOINT)  # Conectamos SIP Endpoint

print(f"La conferencia '{CONFERENCE_NAME}' se ha creado")

Guarde y lance su script call.py. Si todo está configurado correctamente, las llamadas se recibirán en el softphone y en el número externo desde su SIP de Zadarma.