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.
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
- FRIENDLY NAME - sipuriny.zadarma.com
- CIDR NETWORK ADDRESS - 185.45.155.33 /32
- FRIENDLY NAME - sipde.zadarma.com
- CIDR NETWORK ADDRESS - 185.45.152.174 /32
Asegúrese de que los tres IP ACCESS CONTROL LISTS agregados están seleccionados en los ajustes del dominio SIP.
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.
Ejemplo Flow (escenario) para las llamadas entrantes▾
Si ha seleccionado su opción en A CALL COMES IN - sáltese este apartado, aquí se muestra el ejemplo de creación de un Flow simple para las llamadas entrantes en editor visual de Twilio Studio.
1. Entre en Twilio Console → Studio y pulse el botón Create new Flow. Inserte FLOW NAME, por ejempo Incoming calls.
2. Seleccione la plantilla Start from scratch y pulse Next.
3. Arrastre el bloque "Gather Input on Call" (para el menú IVR) y conéctelo con el "Trigger" (Llamada entrante).
4. Indique el mensaje de voz (Texto a voz o URL de audio).
5. Configure el manejo de las opciones seleccionadas (1 – para ventas, 2 – para soporte, etc.).
A continuación, es necesario crear dos Set Variables para modificar el número del que llama a partir del encabezado From.
Cree el primer Set Variables con Variable Name: step1_caller_id y Value:
{{contact.channel.address | replace: "sip:", "" }}
Cree el segundo Set Variables (después del primero) Variable Name: clean_caller_id y Value:
{{flow.variables.step1_caller_id | replace: "@sip.zadarma.com", "" }}
Agregue la transferencia de la llamada entrante a una extensión utilizando "Connect Call To".
CONNECT CALL TO – seleccione SIP Endpoint.
En SIP ENDPOINT inserte su URL, por ejemplo sip:11111@15551111111.sip.twilio.com
En CALLER ID
{{flow.variables.clean_caller_id}}
Guarde la configuración de los widgets y publique el flujo haciendo clic en "Publish".
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.
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▾
Si ya dispone de SIP Endpoint puede saltarse este paso.
- FRIENDLY NAME - my twilio extension.
- USERNAME - login arbitrario, por ejemlo 11111.
- PASSWORD - contraseña para iniciar sesión, invente una contraseña difícil, al menos 12 caractetes.
El softphone se conectará a su dominio, por ejemplo, 15551111111.sip.twilio.com, y utilizará el USERNAME y PASSWORD para la autorización.
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:
- Abra en Zadarma el apartado Configuración → Números virtuales.
- Oulse el icono ⚙ en su número (ajustes).
- Abra la pestaña "Servidor externo".
- Habilite la opción "Servidor externo (SIP URI)".
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.
- 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.