Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow

Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
Es posible que hayas oído o leído sobre la función Call Screening que Google lanzó para sus teléfonos Pixel en EE.UU. La idea es excelente: cuando recibes una llamada, el asistente virtual comienza a hablar, mientras tú ves esa conversación en forma de chat y puedes intervenir en cualquier momento. Esto es muy útil hoy en día, cuando casi la mitad de las llamadas son spam, pero no deseas perder importantes llamadas de alguien que no está en tu lista de contactos. El único inconveniente es que esta funcionalidad está disponible solo en el teléfono Pixel y únicamente en EE.UU. Bueno, los obstáculos existen para ser superados, ¿verdad? Por eso decidimos explicar cómo crear una solución similar utilizando Voximplant y Dialogflow. Sigue leyendo.

Arquitectura

Propongo no perder tiempo en explicar cómo funcionan Voximplant y Dialogflow; si lo deseas, puedes encontrar información fácilmente en internet. Así que mejor hablemos sobre el concepto de nuestro Call Screening.

Supongamos que ya tienes un número de teléfono que usas diariamente y al que recibes llamadas importantes. En ese caso, necesitaremos un segundo número que se indicará en todas partes: en el correo, en la tarjeta de presentación, cuando llenas formularios en línea, etc. Este número estará conectado al sistema de procesamiento de lenguaje natural (en nuestro caso, Dialogflow) y redirigirá las llamadas a tu número principal, solo si así lo deseas. En forma de esquema, esto se vería así (la imagen es clickeable):
Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
Entendiendo la arquitectura, podemos empezar con la implementación, pero con una salvedad: no vamos a crear una aplicación móvil para mostrar el diálogo entre Dialogflow y el llamante entrante; crearemos una simple aplicación webcon renderizado del diálogo para mostrar claramente el principio de funcionamiento de Call Screening. En esta aplicación habrá un botón Intervene, al pulsarlo, Voximplant conectará al llamante entrante con el destinatario marcado, si este último decide hablar por sí mismo.

Implementación

Inicia sesión en tu cuenta de Voximplant y crea una nueva aplicación, por ejemplo, screening:

Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
Abre la sección ‘Números’ y compra un número que funcionará como intermediario:

Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
A continuación, accede a la aplicación screening, en la sección «Números», pestaña «Disponibles». Aquí verás el número recién comprado. Conéctalo a la aplicación usando el botón «Adjuntar»; en la ventana que aparece, deja todos los valores por defecto y haz clic en «Adjuntar».

Dentro de la aplicación, ve a la pestaña «Escenarios» y crea el escenario myscreening; utilizaremos el código del artículo. Cómo usar el Conector de Dialogflow. El código se modificará ligeramente, ya que necesitamos «ver» el diálogo entre el llamante y el asistente; todo el código se puede tomar aquí.

ATENCIÓN: necesitarás cambiar el valor de la variable server al nombre de tu servidor ngrok (los detalles sobre ngrok se explicarán más adelante). También debes insertar tus valores en la línea 31, donde your phone number es tu número principal (por ejemplo, el móvil personal), y voximplant number es el número que compraste recientemente.

outbound_call = VoxEngine.callPSTN(“YOUR PHONE NUMBER”, “VOXIMPLANT NUMBER”)

La llamada callPSTN ocurrirá en el momento en que decidas intervenir en la conversación y hablar directamente con el abonado entrante.

Después de guardar el escenario, deberás vincularlo al número comprado. Para esto, aún dentro de tu aplicación, ve a la pestaña «Enrutamiento» para crear una nueva regla – botón «Nueva regla» en la esquina superior derecha. Indica un nombre (por ejemplo, allcalls), deja la máscara por defecto (.* – lo que significa que todas las llamadas entrantes serán tratadas con los escenarios seleccionados para esta regla) y especifica el escenario myscreening.

Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
Guarda la regla.

Desde ahora, el número de teléfono está vinculado al escenario. Lo último que necesitas hacer es vincular el bot a la aplicación. Para esto, accede a la pestaña «Conector de Dialogflow», haz clic en el botón «Agregar agente de Dialogflow» en la esquina superior derecha y carga el archivo JSON de tu agente Dialogflow.

Implementamos nuestro propio Google Call Screening basado en Voximplant y Dialogflow
Si necesitas un agente para ejemplo/pruebas, puedes tomar el nuestro desde este enlace: github.com/aylarov/callscreening/tree/master/dialogflow. Pero no esperes mucho de él, es solo un ejemplo que puedes modificar como desees y compartir con confianza los resultados 🙂

Backend simple en NodeJS

Vamos a desplegar un backend sencillo en Node, por ejemplo, así:
github.com/aylarov/callscreening/tree/master/nodejs

Es una aplicación común que requiere solo dos comandos para iniciar:

npm install
node index.js

El servidor se iniciará en el puerto 3000 de su máquina, por lo que para conectarlo a la nube de Voximplant, utilizamos la herramienta ngrok. Cuando la instale ngrok, ejecútelo con el comando:

ngrok http 3000

Verá el nombre de dominio que ngrok ha generado para su servidor local: cópielo y colóquelo en la variable server.

Cliente

La aplicación cliente parece un simple chat que puede descargar desde aquí.

Simplemente copie todos los archivos en un directorio de su servidor web y funcionará. En el archivo script.js, reemplace el valor de la variable server con el nombre de dominio de ngrok y el valor de la variable callee con el número que compró. Guarde el archivo y ejecute la aplicación en el navegador. Si todo está bien, verá la conexión WebSocket en la consola de desarrollador.

Demo

Puede ver la aplicación en acción en este video:

Reproducir video

P. D. Si presiona el botón Intervene, la persona que llama será dirigida a mi número de teléfono, y si presiona Disconnect, ¿entonces...? Correcto, la llamada será desconectada.

Fuente: habr.com
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster