Teléfonos SIP. Ordenadores con auricular. En teoría, se puede hacer mucho con ellos, pero se usan solo para llamadas :-)
Recientemente AsterConf estuvo en la conferencia, y allí los vendedores hablaron sobre sus teléfonos, no vamos a destacar a nadie, todos están bien, en algún lugar mejor, en algún lugar más barato, de hecho están haciendo lo mismo.
Algunos de los proveedores mejoran la calidad del sonido, alguien sujeta una tableta con un Android, alguien intenta agregar algún tipo de aplicación. Y todo para que podamos instalar estos teléfonos en computadoras de escritorio.
Y tal vez los teléfonos son buenos candidatos para el papel del control remoto en el mundo de IoT: hice clic en el botón y obtuve el resultado. Y, en mi humilde opinión, no hay una manera simple y sencilla de conectar los teléfonos a su "Administrador". Como parte de este artículo, quiero mostrar cómo podría parecer simple en un diagrama y una demostración en video.
Y comparte en los comentarios, por favor, que tal vez algo similar ya se ha implementado en alguna parte o complementa sus sugerencias y pensamientos.
Los teléfonos tienen URL de acción y URI de acción.
La URL de acción nos permite enviar diferentes eventos a cualquier url. En la url, podemos especificar variables predefinidas que se rellenarán con datos reales durante una llamada.
Entonces, por ejemplo, se ve la configuración de mi teléfono.
Diseñador de URL de acción en línea para YealinkEl URI de acción nos permite recibir comandos en la dirección IP del teléfono, y el teléfono puede realizar llamadas, responder llamadas por comando, agregar volumen, reiniciar, etc. en el video a continuación puedes ver cómo sucede todo esto. Debemos indicar la dirección de donde vendrán los equipos.

Todo es configurable, ¿cuál es el problema, hermano?
Estas son interfaces bastante funcionales, pero ... son bastante difíciles de integrar. Es decir necesitamos tomar 100,500 acciones para que funcione. O complete 100 campos en la configuración del dispositivo (usted mismo lo ve en la pantalla), o confunda con provisiones y prescriba algunas plantillas de configuración.
Como resultado, hay muchas acciones en las que es fácil cometer un error y no obtener lo que desea, y luego dedicar mucho tiempo a descubrir las razones del comportamiento inapropiado del dispositivo. Y bueno, si te enfrentas a uno y tienes de cinco a diez, cien y un par de vendedores e incluso modelos de diferentes generaciones. Puff puff puff ...
¿Es esto un problema? ¿Alguien necesita administrar el teléfono de un suscriptor? Para el suscriptor? ¿Desde su escritorio, computadora portátil o teléfono inteligente? Soporte técnico? Tanto interna como externa, por ejemplo, un proveedor de central telefónica virtual? ¿Necesito tener acceso al teléfono de manera diferente que solo SIP? Integrar el teléfono con las aplicaciones, evitando la IP-PBX?
No puedo responder inequívocamente, hay desventajas y ventajas. Y para darme cuenta de las ventajas, me gustaría poder conectar rápidamente la URL de acción y el URI de acción a mi "Administrador". Llamo a un administrador un servidor desde el que puedo ver centralmente una lista de teléfonos, su estado, y de cualquiera de ellos realizar alguna acción disponible.
Veamos el diagrama.

Imagine que tenemos un cliente websockets en nuestro teléfono.
Luego, debemos especificar en el teléfono solo la dirección de red del "Administrador" y nuestro teléfono se conectará a ella. Cuando esté conectado, el teléfono enviará su identificación, nombre, mac. Esto nos permitirá compararlo con nuestra lista de suscriptores de PBX, por ejemplo.
Luego nos suscribimos a eventos que ocurren en el teléfono. Hay muchos de ellos, estos son reinscripciones, respuestas a llamadas, pulsaciones de botones, etc. Luego podemos marcar el número de nuestro Administrador enviando un comando. Establezca DND o elimine DND. Luego envío una notificación o recordatorio al teléfono, establezco un nuevo logotipo.
¿Qué hay de la seguridad? En general, los teléfonos SIP pueden funcionar para NAT, no necesitan una dirección externa. Pero si configura el puerto del servidor web del teléfono en la red Action URI (donde el área de administración, por cierto, funciona), espere sorpresas desagradables.
Pero si el teléfono se conecta al "Administrador" a través de WebSockets, entonces esta es su iniciativa y su derecho, puede desconectarse, y si se conecta al servidor remoto debido a NAT, se verá como una conexión de navegador.
Basta de palabras, más cerca del punto. Escribí un pequeño cliente telefónico (que en mi opinión debería estar en el teléfono), que se conecta al servidor a través del conector web. Además, hay un navegador conectado a este servidor, que puede recibir mensajes del teléfono y enviar comandos allí.
El cliente es solo un contenedor para la URL de acción y el URI de acción, que funciona con el teléfono a través de sus interfaces familiares y envuelve todos los datos en un socket web. En los sockets web tenemos mensajes JSON regulares con los que cualquier desarrollador web puede trabajar.
Mira el video, todo es bastante simple. Todo el código es lo suficientemente mínimo como para mostrar el concepto.
¿Qué está pasando en el video?
- iniciamos el servidor que acepta conexiones en websockets,
- Iniciamos el cliente (que funciona por Action URL y URI con el teléfono)
- el cliente se conecta al servidor
- iniciamos el servidor web (con la página donde se encuentra el código para conectarse desde el navegador a través de websockets)
- abre la página en el navegador, la página se conecta al servidor
- estamos enviando una solicitud de información desde la página
- la solicitud llega hasta el teléfono y devuelve información sobre las líneas telefónicas
- también podemos enviar diferentes equipos
- incluido el comando para hacer una llamada
- y luego el comando colgar
- Todos los datos son visibles en el registro de la página, así como en la consola del servidor y teléfono del cliente.
- entonces puedes ver cómo reacciona a los comandos desde la página del teléfono
Por lo tanto, conectar el teléfono al Administrador es solo una dirección. Y los mensajes de los sockets web a una presentación diferente y viceversa pueden ser de cualquier desarrollador. En mi caso, una página está conectada al Administrador. En general, puede ser un sistema más complejo que procesará comandos y enviará mensajes al teléfono.
Tener un método de conexión simple puede ser conveniente y, por lo tanto, más fácil de aprender. A través de esta interfaz, en teoría, es posible enviar nuevas configuraciones y mensajes adicionales, lo que facilita la integración del teléfono en cualquier infraestructura.
En general, estos son solo mis pensamientos sobre los resultados de ver nuevos productos en Asterkonf. Estaré encantado de ver en los comentarios los pros y los contras. Y tal vez uno de los fabricantes verá lo racional en esto e introducirá el chip :-)
Proyecto Github