Conectar Twilio
Conecta Twilio con EspoCRM para los mensajes (SMS/MMS) y, si Twilio es tu sistema telefónico, para las llamadas con un softphone o el teléfono del navegador.
Los mensajes siempre pasan por Twilio. Las llamadas también pueden pasar por Twilio si no usas 3CX.
En las direcciones de abajo, cambia https://crm.example.com por tu URL del sitio. Las pantallas de Twilio se
indican con sus nombres en inglés.
Conecta la cuenta
- Abre Administración → Integraciones → S+M EspoCRM VOIP · Twilio y marca la casilla para activarla.
- Completa Account SID de Twilio y Auth Token de Twilio (consola de Twilio → Account → API keys & tokens), y
el Código de país predeterminado (
1para Estados Unidos y Canadá). - Guarda. Tus números de Twilio se agregan en Administración → S+M EspoCRM VOIP → Números de Twilio.
Mensajes (SMS/MMS)
Elige quién usa cada número
Abre Números de Twilio. Los números se agregan solos al guardar la configuración de Twilio y una vez al día; nada de lo que configures se sobrescribe. Para cada número:
- Estado: Inactivo para un número que este CRM no debe usar (sus mensajes se ignoran y nadie puede enviar desde él).
- Número predeterminado para mensajes nuevos.
- Usuarios que pueden enviar mensajes y Equipos que pueden enviar mensajes. Los administradores siempre pueden enviar. Todos los que pueden ver un Contacto, Cliente potencial o Cuenta pueden leer sus mensajes.
- Avisar primero (sin usuario asignado) y Avisar también en cada mensaje (consulta Uso diario).
- SID del Messaging Service de Twilio (opcional,
MG…): envía los mensajes de este número por ese servicio.
Importante
Quien puede enviar desde un número ve todas las conversaciones de ese número, también con personas que no están en el CRM. Elige los usuarios y equipos de cada número teniéndolo en cuenta.
Dirige el número a EspoCRM
- En la consola de Twilio, abre Phone Numbers → Manage → Active numbers → tu número → Messaging configuration. Anota adónde van hoy sus mensajes: un número envía sus mensajes a un solo lugar.
- En A message comes in, elige Webhook
https://crm.example.com/api/v1/SmVoip/twilio/sms, HTTP POST. Guarda.
Los informes de entrega no necesitan nada más: EspoCRM envía su dirección con cada mensaje.
Bajas
Cuando alguien responde STOP (o STOPALL, UNSUBSCRIBE, CANCEL, END, QUIT, REVOKE, OPTOUT), Twilio le contesta y EspoCRM marca el número como Dado de baja: no se le pueden enviar mensajes hasta que responda START (o YES, UNSTOP). Twilio contesta HELP e INFO.
Mensajes desde flujos de trabajo
En Administración → SMS, elige el proveedor de SMS S+M EspoCRM VOIP (Twilio) para que los flujos de trabajo de EspoCRM puedan enviar mensajes, desde el número predeterminado.
Llamadas por Twilio
Sáltate esta parte si tus llamadas pasan por 3CX.
1. Un dominio SIP para los softphones
- En la consola de Twilio, Voice → SIP domains → Credential lists: crea una lista (por ejemplo
Telefonos empresa) con un usuario y una contraseña segura para cada persona, por ejemplojperez. - SIP domains → Create SIP Domain, por ejemplo
tuempresa.sip.twilio.com:- Voice Authentication → Credential lists: tu lista.
- SIP Registration: Enabled, con la misma lista.
- A call comes in: el flujo de Studio de salida (paso 3), cuando exista.
- Call status changes:
https://crm.example.com/api/v1/SmVoip/twilio/status, POST.
- Si el 911 debe funcionar desde los softphones, configura una dirección de emergencia en Twilio.
En la configuración de Twilio en EspoCRM, completa Dominio SIP e Identificador de llamada para el botón Llamar
(tu número de Twilio, por ejemplo +18885551234) y, si quieres, Grabar las llamadas hechas con el botón Llamar. En
cada Usuario, completa SIP Username con su usuario del dominio SIP (jperez).
2. Llamadas entrantes: un flujo de Studio
En Studio → Flows, crea un flujo (por ejemplo Entrantes) desde cero. Desde la salida Incoming Call del
disparador:
- Make HTTP Request
crm_ringing: POST, Form URL Encoded, URLhttps://crm.example.com/api/v1/SmVoip/twilio/ringing, con los parámetrosCallSid={{trigger.call.CallSid}},From={{trigger.call.From}},To={{trigger.call.To}}ySipUser=jperez. Conecta Success y Fail al siguiente widget, para que las llamadas sigan sonando aunque el CRM no responda. - Connect Call To
ring_user: SIP Endpointsip:jperez@tuempresa.sip.twilio.com(usuario y contraseña vacíos), Caller ID{{trigger.call.From}}, un tiempo de espera como 30 segundos y Record Call activado si quieres grabaciones. - Split Based On
answered, desde Connected Call Ended, sobre{{widgets.ring_user.DialCallStatus}}: si es Equal Tocompleted, un Say/Play de despedida; si no, un Say/Play de saludo y luego Record Voicemail (duración máxima de 120 segundos). - Publish.
Después, en la Voice configuration del número: A call comes in → Studio Flow → tu flujo, y Call status
changes → https://crm.example.com/api/v1/SmVoip/twilio/status, HTTP POST.
3. Llamadas salientes: un segundo flujo de Studio
Crea un flujo (por ejemplo Salientes). Desde la salida Incoming Call del disparador (una llamada desde un
softphone llega al dominio SIP como llamada entrante):
- Make HTTP Request como
crm_ringing, sinSipUser. Success y Fail → siguiente. - Connect Call To: Single Number con el valor de abajo y tu número de Twilio como Caller ID.
- Publish, y elige este flujo como A call comes in del dominio SIP.
{{trigger.call.To | remove: "sip:" | split: "@" | first}}Marca desde el softphone como +1XXXXXXXXXX. El registro de llamadas de Twilio muestra dos filas por llamada;
EspoCRM registra una sola Llamada.
4. El softphone
En Zoiper (o cualquier softphone SIP), agrega una cuenta SIP: dominio tuempresa.sip.twilio.com, el usuario y la
contraseña de la persona, transporte UDP. Debe mostrar Registered. En un ordenador, hazlo la app predeterminada
para los enlaces de teléfono.
Advertencia
En un móvil, usa un softphone con notificaciones push (por ejemplo Zoiper Pro). Las apps gratuitas se duermen en segundo plano y las llamadas van directo al buzón de voz.
5. El teléfono del navegador (opcional)
Contesta y haz llamadas dentro de EspoCRM con el micrófono del ordenador.
- Consola de Twilio → Account → API keys & tokens → Create API key (tipo Standard). Copia el SID (
SK…) y el Secret (se muestra una sola vez) en API Key SID (teléfono del navegador) y API Key Secret (teléfono del navegador). - Voice → Manage → TwiML apps → Create: Voice Request URL = la dirección webhook de tu flujo de salida (haz
clic en el disparador del flujo para verla), POST; Status callback URL =
https://crm.example.com/api/v1/SmVoip/twilio/status. Copia su SID (AP…) en TwiML App SID (teléfono del navegador). - Para que suenen a la vez el navegador y el softphone: en el flujo de entrada, agrega un widget TwiML Redirect,
POST, URL
https://crm.example.com/api/v1/SmVoip/twilio/dial?user=jperez&timeout=30&record=1&flow=FW…(FW…es el SID del flujo;record=0para no grabar). Conectacrm_ringinga él en lugar de aring_user, conecta su salida Return al splitansweredy cambia el split a{{widgets.<nombre del widget>.DialCallStatus}}. Publica.
Luego cada persona lo activa en EspoCRM: Llamadas en la barra superior → Activar el teléfono del navegador, y permite el micrófono.
Prueba
- Escribe al número de Twilio desde tu móvil: en segundos aparece Nuevo mensaje de …. Responde desde EspoCRM.
- Responde STOP: EspoCRM muestra Dado de baja. Responde START para deshacerlo.
- Con llamadas por Twilio: llama al número desde un teléfono que esté en el CRM; suena el softphone y la ventana emergente muestra el registro. Cuelga: se registra una "llamada entrante" realizada.
Si no pasa nada, consulta Solución de problemas.