https://d226lax1qjow5r.cloudfront.net/blog/blogposts/voice-enabling-a-text-only-chatbot/chatbots-voice-enable.png

Habilitar por voz un chatbot de sólo texto

Publicado el July 28, 2022

Tiempo de lectura: 11 minutos

Visión general

Aprenda aquí cómo añadir interacción por voz a su chatbot de sólo texto existente.

Esta aplicación utiliza Voice API de Vonage para el reconocimiento de voz y las capacidades de conversión de texto a voz para permitir que tu chatbot escuche las solicitudes habladas de las personas que llaman y reproduzca las respuestas.

Se admiten más de cuarenta idiomas locales para la activación por voz de su chatbot.

Hay dos ejemplos de código de aplicación Voice API y una aplicación chatbot de texto simple en este tutorial; la primera aplicación Voice API se conectará al servicio de aplicación chatbot simple que simula peticiones/respuestas cuyo único propósito es ilustrar cómo un chatbot real puede ser habilitado para voz, y la segunda aplicación Voice API de ejemplo tiene las mismas capacidades de voz básicas que la primera, actualizarás esa aplicación para integrarla con tu chatbot real para peticiones/respuestas usando la primera como referencia.

El código de ambas aplicaciones Voice API admite llamadas de voz entrantes o salientes desde/hacia los usuarios, según sea necesario para el caso de uso de su chatbot.

En este tutorial, utilizaremos y haremos referencia al repositorio Voice API Applications repositorio GitHub y el simulador de chatbot simple repositorio de GitHub.

Requisitos previos

Necesitarás:

  • Node.js,

  • Ngrok,

  • una Account API de Vonage,

  • Opcionalmente Heroku para un despliegue alojado.

A continuación se detalla la configuración de cada requisito previo.

Instalación de Node.js

  • Instale nvm (Gestor de versiones de nodos); si utiliza el sistema operativo Windows, consulte estas notas importantes

  • Instala la versión 16 de Node.js con el comando: nvm install 16

  • Usa la versión 16 de Node.js con el comando: nvm use 16

    • Hemos probado las aplicaciones con Node.js versión 16.15.1

Instalación de Ngrok

Para comenzar a probar rápidamente, puedes ejecutar la aplicación Voice API y la aplicación de simulador de chatbot simple en tu computadora local; sin embargo, deben ser accesibles desde Internet para usar la Voice API de Vonage, por ejemplo, para recibir llamadas de webhook para eventos como llamadas de voz entrantes, llamadas respondidas, transcripciones de reconocimiento de voz. Esta capacidad se logra instalando el servicio de túnel de Internet ngrok.

Cada aplicación necesitará su propio túnel ngrok.

Para configurar ngrok:

  • Instalar ngrok,

  • Asegúrese de que está utilizando la última versión de ngrok y no una versión previamente instalada de ngrok,

  • Regístrese para obtener una cuenta Account,

  • Verify your email address from the email sent by ngrok,

  • Recuperar su Authoken,

  • Ejecute el comando ngrok config add-authtoken <your-authtoken>

  • Configurar ambos túneles

    • Ejecutar ngrok config edit

      • Para una cuenta ngrok libre, añada las siguientes líneas al fichero de configuración de ngrok (bajo la línea authoken):

tunnels:
  	six:
  		proto: http
  		addr: 6000
  	eight:
  		proto: http
  		addr: 8000
  • Para una cuenta ngrok de pagopuede establecer los nombres de host de ngrok que nunca cambiarán en cada nuevo lanzamiento de ngrok; añada las siguientes líneas al archivo de configuración de ngrok (bajo la línea authoken) - establezca los nombres de host (deben ser únicos) a los valores reales deseados:

    tunnels:
      	six:
      		proto: http
      		addr: 6000
      		hostname: youmustsetanamehere6.ngrok.io
      	eight:
      		proto: http
      		addr: 8000
      		hostname: youmustsetanamehere8.ngrok.io

Nota: La aplicación Voice API se ejecutará en el puerto local 8000 y la aplicación de chatbot simple se ejecutará en el puerto local 6000.

Cuenta API de Vonage

Conéctese a su o regístrate para obtener una cuenta API de Vonage.

Ir a Sus AplicacionesAcceder a una aplicación existente o + Crear una nueva aplicación.

En la sección Capacidades (haga clic en [Editar] si no ve esta sección Capacidades):

Activar Voice

  • En URL de respuesta, deje HTTP GET e introduzca https://<host>:<port>/answer (sustituya <host> y <port> por el nombre de host público y, si es necesario, el puerto público del servidor donde se ejecuta la aplicación Voice API de ejemplo), por ejemplo https://yyyyyyyy.ngrok.io/answer o https://myappname.herokuapp.com/answer (véanse las secciones siguientes) o https://myserver2.mycompany.com:40000/answer (despliegue en sus propios servidores)

  • En URL de evento, seleccione HTTP POST (en lugar de HTTP GET) e introduzca https://<host>:<port>/event (sustituya <host> y <port> por el nombre de host público y, si es necesario, el puerto público del servidor en el que se ejecuta la aplicación Voice API de ejemplo), por ejemplo https://yyyyyyyy.ngrok.io/evento https://myappname.herokuapp.com/event ver secciones siguientes(véanse las secciones siguientes) o https://myserver2.mycompany.com:40000/event (despliegue en sus propios servidores)

  • Haga clic en [Generar clave pública y privada] si aún no las ha creado o desea crear unas nuevas y, a continuación, guárdelas como .private.key (observe el punto inicial en el nombre del archivo) en la carpeta que contendrá la aplicación Voice API. IMPORTANTE: No olvide hacer clic en [Guardar cambios] en la parte inferior de la pantalla si ha creado un nuevo conjunto de claves.

  • Vincule un número de teléfono a esta aplicación si aún no se ha vinculado ninguno a la aplicación.

Por favor, tome nota de su ID de solicitud y el número de teléfono vinculado (ya que son necesarios en la siguiente sección).

Para los siguientes pasos, necesitarás:

  • Tu clave API de Vonage (como API_KEY)

  • Tu Secreto de API de Vonageno es un secreto de firma (como API_SECRET)

  • Su ID de aplicación (como APP_ID),

  • El número de teléfono vinculado a su solicitud (como SERVICE_NUMBER), tu teléfono llamará a ese número,

  • El nombre de host y puerto públicos del servidor de chatbot Simple Text-Only (como BOT_SERVER), el argumento no tiene prefijo http:// ni https://, ni / al final, ni sub-ruta, por ejemplo xxxxxxx.ngrok.io o mysimplebotname.herokuapp.com o myserver1.mycompany.com:32000

Configuración de Heroku

Después de probar localmente, en un momento posterior, puede desplegar opcionalmente en entornos alojados en Heroku.

Para configurar Heroku,

Instale git.

Regístrese para obtener una cuenta Heroku Account.

Instale la Heroku línea de comandos e inicie sesión en su cuenta de Heroku.

Para desplegar las Applications, siga las instrucciones de la sección Despliegue en Heroku.

Desarrollo

Veamos cómo funcionan las aplicaciones.

Primera fase

En la primera fase, vamos a utilizar y desplegar la aplicación de referencia voice-on-text-bot-app-with-simple-bot.js del repositorio Voice Enabling Text Bot Application repositoriojunto con la aplicación chatbot simple very-simple-bot.js del repositorio repositorio Voice-Enabling Text Bot Simple Chatbot.

Implantación local en su ordenador para ambas aplicaciones

Architecture diagramVoice enabling text-only chatbot. Local deployment for tests

Descargue el código de la aplicación de referencia del repositorio repositorio a una carpeta local, luego vaya a esa carpeta.

Copie el archivo env.example en un nuevo archivo llamado .env (con un punto delante): cp env.example .env

Edite el archivo .env y establezca los valores de los cinco parámetros (consulte las secciones anteriores):

API_KEY=

API_SECRET=

APP_ID=

BOT_SERVER=

SERVICE_NUMBER=

Instale las dependencias una vez:

npm install

Asegúrese de que ngrok se ha iniciado con ambos túneles como se explica en las secciones anteriores.

Inicie la aplicación:

node voice-on-text-bot-app-with-simple-bot.js

Descargue el código de la aplicación de chatbot simple del repositorio repositorio a una carpeta local, luego ve a esa carpeta.

Inicie la aplicación:

node very-simple-bot.js

Para interactuar mediante llamadas de voz con el sencillo bot, llame al número de teléfono vinculado a su aplicación, el que aparece como SERVICE_NUMBER.

Despliegue en Heroku

Opcionalmente, puede desplegar ambas aplicaciones en entornos alojados en Heroku.

Asegúrate primero de que tus aplicaciones funcionan como se espera con el despliegue local en tu ordenador y de que has configurado Heroku en los requisitos previos.

Vaya a la carpeta donde tiene la aplicación Voice API,

Si aún no dispone de un repositorio git local, cree uno:

git init

git add .

git commit -am "initial"

Comienza creando esta aplicación en Heroku desde la línea de comandos utilizando la CLI de Heroku: Nota: En el siguiente comando, sustituye "myappname" por un nombre único en toda la plataforma Heroku.

heroku create myappname

o heroku create myappname --team <xxxxx> (si su Account de Heroku utiliza equipos)

En tu dashboard de Heroku donde se muestra la página de tu aplicación, haz click en el botón Settings, añade las siguientes Config Vars y establécelas con sus respectivos valores:

API_KEY

API_SECRET

APP_ID

BOT_SERVER (see further below)

SERVICE_NUMBER

PRIVATE_KEY_FILE with the value ./.private.key

Ahora, despliegue la aplicación:

git push heroku master

En tu panel de control de Heroku, donde se muestra la página de tu aplicación, haz clic en el botón Abrir aplicación. Ese nombre de host es el que se utilizará en tu correspondiente Capacidades de la aplicación Voice API de Vonage (haz clic en la aplicación correspondiente y luego en [Editar]).

Por ejemplo, los enlaces respectivos serían (sustituya myappname por el valor real):

https://myappname.herokuapp.com/answer

https://myappname.herokuapp.com/event

Ver más detalles en la sección anterior Cuenta API de Vonage.

Ve a la carpeta donde tienes la aplicación chatbot muy sencilla,

Si aún no dispone de un repositorio git local, cree uno:

ir a esta carpeta de aplicaciones bot simple

git init

git add .

git commit -am "initial"

Crea esta aplicación en Heroku desde la línea de comandos utilizando la CLI de Heroku:

Nota: En el siguiente comando, sustituye "mysimplebotname" por un nombre único en toda la plataforma Heroku.

heroku create mysimplebotname

o heroku create mysimplebotname --team <xxxxx> (si su Account de Heroku utiliza equipos)

Despliegue de la aplicación

git push heroku master

En este caso, al configurar la aplicación Voice API, el parámetro BOT_SERVER para el otro despliegue Heroku será mysimplebotname.herokuapp.com (sustituye mysimplebotname por su valor real, no hay https:// inicial, ni / final).

Para interactuar mediante llamadas de voz con el sencillo bot, llame al número de teléfono vinculado a su aplicación, el que aparece como SERVICE_NUMBER.

Funcionamiento de las Applications

La aplicación voice-on-text-bot-app-with-simple-bot.js:

  • Utiliza Voice API de Vonage con el SDK de servidor Node.js '@vonage/server-sdk',

  • Valores preestablecidos para el:

    • Código de idioma ASR (Automatic Speech Recognition) y TTS (Text-to-Speech), como "languageCode",

    • Saludo inicial, como 'greetingText',

    • y otros parámetros comentados.

  • Gestiona las rutas de los webhooks:

    • /makecall

      • Si desea iniciar llamadas salientes

      • Actualice el número en el objeto callInfo. Debe ser el número internacional completo (formato E.164), con el código de país, sin el signo "+" inicial, sin prefijos internacionales como "011" o "00", sin guiones "-" ni espacios.

      • Llamará a la ruta '/placecall'

        • Para iniciar la llamada saliente, en un navegador web, introduzca la dirección web <this-application-host-name>/placecall, por ejemplo xxxxxxx.ngrok.io/makecall

  • '/placecall'

    • Aquí es donde se realiza realmente una solicitud API de llamada saliente de voz.

  • /respuesta

    • Esta ruta de webhook es llamada por la plataforma Voice API de Vonage en una llamada de voz entrante o cuando se responde una llamada de voz saliente,

    • El tramo de llamada (Voice API) se identifica por su valor UUID,

    • La aplicación devuelve un OCNC donde:

La plataforma Voice API llamará a la URL del webhook especificada en el parámetro eventUrl (ruta /asr) tanto si se ha detectado voz como si no.

  • /evento

    • La plataforma Voice API de Vonage llama a esta ruta de webhook en diferentes estados del tramo de llamada de voz con un valor UUID determinado,

    • En esta aplicación, no hay acciones en respuesta a esta ruta webhook aparte de devolver el código HTTP 200 (ok).

  • /asr

    • La plataforma Voice API de Vonage llama a esta ruta de webhook cuando se obtienen resultados de ASR (reconocimiento automático del habla), ya sea que se haya devuelto una transcripción correctamente o no, por ejemplo, si hubo ruidos en lugar de palabras habladas o si se agotó el tiempo de espera si no se detectó ningún sonido (la duración del tiempo de espera corresponde al parámetro startTimeout del parámetro)

    • Inicia un nuevo ciclo ASR devolviendo un NCCO con "acción": "entrada"

  • '/botreply'

    • Esta ruta webhook es llamada por el chatbot simple para devolver una respuesta de texto de una solicitud de texto,

    • A continuación, inicia un TTS (Text-to-Speech) para reproducir la respuesta del chatbot.

  • En esta aplicación, configure el idioma ASR (Reconocimiento Automático de Voz) y el idioma TTS (Text-To-Speech) (parámetro languageCode) que coincidan con el idioma de tu chatbot de texto. Más de 40 idiomas locales están disponibles con Voice API de Vonage tanto para ASR como para TTS.

  • Las dos últimas líneas de código permiten que esta aplicación Node.js escuche en el puerto local 8000 para un despliegue local o en un puerto local diferente para un despliegue alojado (configurado automáticamente con un despliegue Heroku).

La aplicación very-simple-bot.js:

  • Simula un chatbot de solo texto. Su único propósito es mostrar cómo un chatbot real de solo texto se habilitaría por voz con la aplicación que usa Vonage Voice API,

  • Este ejemplo de chatbot muy sencillo admite los idiomas inglés y francés como ejemplos

  • Las únicas solicitudes admitidas figuran en los respectivos diccionarios botKbEn y botKbFr,

  • Este chatbot muy simple no hace Procesamiento del Lenguaje Natural para las pruebas. Debe decir exactamente una de las peticiones soportadas. De lo contrario, la respuesta será la predeterminada para solicitudes desconocidas,

  • Maneja el webhook '/bot' para recibir peticiones; devolverá la llamada a la URL del webhook que aparece en la petición entrante para proporcionar la respuesta de texto correspondiente,

  • Las dos últimas líneas de código permiten que esta aplicación Node.js escuche en el puerto local 6000 para un despliegue local o en un puerto local diferente para un despliegue alojado (configurado automáticamente con un despliegue Heroku).

Segunda fase

Production architectureVoice Enabling text-only chatbot. Hosted/ Production deployment.

En la segunda fase, vas a actualizar (donde se indique en el interior) el código fuente voice-on-text-bot-app-generic.js para interactuar con tu chatbot real para solicitudes/respuestas de texto y utilizar voice-on-text-bot-app-with-simple-bot.js como referencia, tanto desde el repositorio de la aplicación repositorio de aplicaciones.

No necesitará ningún código del repositorio repositorio del simulador de bots simple.

Interactuarás por voz con tu chatbot llamando al número de teléfono vinculado a tu aplicación, el que aparece como SERVICE_NUMBER.

Conclusión

En este tutorial, aprendiste que usando Voice API de Vonage, puedes habilitar por voz cualquier chatbot de sólo texto, y se admiten muchos idiomas.

Empezarás con una implementación local en tu ordenador con la aplicación Voice API y el chatbot de texto simple para ilustrar cómo puedes habilitar por voz un chatbot de texto.

Opcionalmente, puede desplegar en entornos alojados en Heroku.

Luego, actualizarás la otra aplicación Voice API para agregar sólo el código específico para integrarlo con tu chatbot de texto para solicitudes/respuestas de texto, ya que toda la interacción necesaria con la Voice API de Vonage, incluido el manejo de llamadas de voz entrantes/salientes, el reconocimiento automático de voz y la conversión de texto a voz ya se han implementado en ese archivo de código fuente.

¿Qué te ha parecido este tutorial? ¿Tienes alguna pregunta o comentario sobre Voice enabling a text-only chatbot? Únete a nosotros en Slack para desarrolladores de Vonage. Y síguenos en Twitter para estar al tanto de las últimas actualizaciones de Vonage Developer

Compartir:

https://a.storyblok.com/f/270183/400x401/43538b1c0b/tony-chan.png
Tony ChanIngeniero de soluciones sénior

Ingeniero de soluciones para clientes en Vonage. Con experiencia en gestión de productos, operaciones de redes y sistemas, atención al cliente, control de calidad y gestión de equipos de desarrollo de software, Tony trabaja en el sector de las telecomunicaciones, antes en Francia y ahora en Estados Unidos. Ayuda a grandes y pequeñas empresas de todo el mundo a desarrollar soluciones mediante servicios programables de voz, mensajería, vídeo y autenticación multifactor.