
CERNphone: telefonía para más de 5.000 usuarios
Cambiar la telefonía de una institución como el CERN no es cambiar una aplicación cualquiera: es tocar un servicio que miles de personas usan a diario para trabajar. Cuando hubo que jubilar Skype for Business, la respuesta fue construir algo propio.
Trabajé en CERNphone, el sistema que lo sustituyó e integró los sistemas de telecomunicaciones del CERN en aplicaciones de escritorio desarrolladas dentro de casa. Hoy da servicio a más de 5.000 usuarios y gestiona unas 30.000 llamadas al día.
El problema
La telefonía corporativa no perdona los fallos. Si el correo se retrasa cinco minutos, nadie lo nota. Si una llamada no entra, se nota.
El CERN necesitaba cuatro cosas:
- Desligarse de Skype for Business sin interrumpir el servicio.
- Conectar con sus sistemas de telecomunicaciones ya existentes.
- Dar a cada persona un cliente que funcionase igual de bien en macOS, Windows y Linux.
- Respetar su modelo de números: usuarios inscritos a varios números —individuales o de servicio— con delegaciones entre compañeros.
Eso descartaba comprar una solución cerrada y esperar que encajara: había que construir la integración a medida.
Cómo se construyó
El trabajo se repartió en tres piezas.
Escritorio multiplataforma
Una única base de código para los tres sistemas de escritorio:
Electroncomo contenedor de la aplicación.ReactyReduxpara la interfaz y la gestión del estado.SIP.JSpara la voz.
SIP.JS implementa SIP —el protocolo estándar sobre el que funciona la telefonía IP— usando WebSockets como transporte. La aplicación registra, emite y recibe llamadas hablando directamente con la infraestructura de telefonía.
API de sesiones, escalada en OpenShift
Detrás de los clientes, una API REST en Python se encarga de gestionar las sesiones. La pieza clave es dónde vive: desplegada en OpenShift, los servicios escalan horizontalmente —cuando la carga sube, la plataforma levanta más réplicas en lugar de crecer la máquina—. Centralizar esa lógica en el servidor mantiene los clientes ligeros y el comportamiento consistente entre plataformas.
Móvil y provisioning
Para el móvil no escribimos una aplicación desde cero: optamos por aplicaciones open source basadas en SIP.js con una capa visual personalizada. El trabajo propio estuvo en el sistema de provisioning, que vincula cada app de iOS y Android con la cuenta del usuario y los números que tiene autorizados.
Y los números no son triviales. En CERNphone una misma persona puede estar inscrita a varios números —individuales o números de servicio— y las delegaciones permiten que otro usuario atienda sus llamadas cuando no está disponible.
El resultado
CERNphone sustituyó Skype for Business y hoy da servicio a más de 5.000 personas con unas 30.000 llamadas diarias, desde aplicaciones de escritorio y móvil.
Qué se puede trasladar
La lección no es «usa Electron y SIP.JS». Es que la telefonía de una organización puede integrarse en sus propias aplicaciones cuando se entiende el protocolo y se construye sobre él. Y que no todo hay que construirlo: en el móvil, la mejor decisión fue personalizar un softphone open source y poner el esfuerzo en el provisioning.
Para cualquier institución que quiera controlar sus comunicaciones —o conectar la voz con sus sistemas internos— este proyecto es la prueba de que se puede hacer. Y a escala.