https://d226lax1qjow5r.cloudfront.net/blog/blogposts/building-a-resilient-voice-agent-a-guide-to-failover-systems/voiceagent.png

Creación de un agente de voz resistente: Guía de sistemas de conmutación por error

Publicado el April 23, 2024

Tiempo de lectura: 8 minutos

Si nació después de 1980, hay un 80% de probabilidades de que tema contestar o hacer llamadas telefónicas (según estudios realizados en Alemania y Estados Unidos). estudios realizados en Alemania y EE.UU.). Para las empresas, eso significa que pronto más de la mitad de la población mundial de consumidores estará predispuesta a la "telefonobia".

Aunque llegar a los clientes a través de llamadas de voz es un medio eficaz de comunicación, las empresas harían bien en implementar formas alternativas para adaptarse a las preferencias de sus clientes. Una solución sencilla sería el seguimiento por SMS, WhatsApp o correo electrónico. Esto podría tener muchas aplicaciones en el mundo real: confirmación de citas, recordatorios de pago, marketing saliente, etc.

AI Studio de Vonage te permite crear chatbots de telefonía saliente en una plataforma intuitiva sin código/con código bajo. La plataforma es fácil de usar y te permite crear potentes integraciones para llevar la experiencia del cliente al siguiente nivel. En esta entrada de blog, aprenderá a activar una llamada saliente de su agente y luego enviar un mensaje SMS de seguimiento y un correo electrónico cuando la llamada no tiene éxito.

Requisitos previos

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Cómo crear un chatbot de telefonía saliente

Para crear su agente, siga las instrucciones de la documentación de AI Studio aquí. Hay tres opciones importantes para nuestro agente, seleccione:

  • Tipo: Telefonía

  • Plantilla: Empezar de cero

  • Evento: Salida

Como la funcionalidad que quieres crear se basa en que la llamada falle de alguna manera, sólo necesitarás construir el agente más simple. Añade un único "Nodo "Hablar a tu agente y añade una frase para que el agente la diga. Después añade un nodo Finalizar Llamada para finalizar el flujo.

Simple Voice Agent in AI StudioSimple Voice Agent in AI Studio

El último paso es conectar a su agente a un número virtual. Esta guía explica cómo publicar su agente.

Cómo activar un chatbot de telefonía saliente

Ahora que ha creado su agente, tendrá que activar la API de llamadas salientes de AI Studio API de llamadas salientes. Para ello puedes utilizar Postman. Una vez conectado, crea una nueva Colección. Luego crearás una nueva petición HTTP de tipo POST.

Puede ver la ubicación de su agente en Detalles del agente.

Cabeceras

En la pestaña Encabezados, tienes que añadir tu AI Studio X-Vgai-Key. Encontrará el icono X-Vgai-Key en la parte superior derecha del lienzo de AI Studio. Haz clic en el icono "usuario" y, a continuación, en "Generar clave API".

Outbound Agent Triggered From PostmanOutbound Agent Triggered From Postman

Cuerpo

Ahora abra la pestaña Body y seleccione la pestaña raw option y en el desplegable seleccione JSON. Por último, añade lo siguiente:

{

    "to": “TESTING_NUMBER",
    "agent_id": "YOUR_AGENT_ID",
    "status_url": ""

}

Sustituya TESTING_NUMBER por tu número de teléfono o el número al que quieras recibir la llamada. El número debe estar en formato internacional, sin mayúsculas ni minúsculas. + o 0. Reemplaza YOUR_AGENT_ID con la identificación de tu agente de Vonage AI Studio. Puedes encontrarlo en los detalles del agente. Deja status_url en blanco por ahora. Esto se actualizará con la URL del servidor de tu aplicación.

Outbound Agent Postman Request with DataOutbound Agent Postman Request with Data

Pulsa "Guardar" y pon a prueba a tu agente haciendo clic en "Enviar". Deberías recibir una llamada de tu agente, ¿no es genial?

Cómo crear una aplicación de nodo para gestionar una llamada fallida

Ahora vas a crear una aplicación para manejar esa status_url llamada. Abre tu terminal y crea un nuevo proyecto:

mkdir aistudio-failover-example cd aistudio-failover-example

A continuación, inicialice el proyecto como una Node e instale el paquete Express paquete:

npm init -y npm install express

Por último, cree un archivo llamado app.js. Aquí es donde vivirá nuestro código.

touch app.js

Añade lo siguiente al archivo app.js. Este código, en gran parte repetitivo, crea un servidor Express que se ejecuta en el puerto 3000 y gestiona las peticiones POST. Cuando se recibe una solicitud POST, la aplicación se console.log el contenido de la solicitud.

// app.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;

// Use bodyParser middleware to parse JSON requests
app.use(bodyParser.json());

// Handle POST requests to the root endpoint
app.post('/', (req, res) => {
  
  // Display the payload in the console
  console.log('Received POST request. Payload:', req.body);

  // Send a response back to the client
  res.status(200).send('POST request received successfully');
});

// Start the server
app.listen(port, () => {
  console.log(\`Server is running on http://localhost:${port}\`);
});

Ahora guarda tu app.js y ejecuta la aplicación:

node app.js

Por último, tendrá que exponer su aplicación mediante utilizando ngrok. Abre una nueva pestaña en tu terminal y ejecuta:

ngrok http 3000

En tu terminal ngrok creará una URL de túnel para ti. Ahora necesitarás copiar/pegar tu URL de túnel para el valor de status_url en el cuerpo de tu petición Postman.

Outbound Voice Agent with Status URL WebhookOutbound Voice Agent with Status URL Webhook

Ahora puede pulsar Enviar para probar la llamada. Pero esta vez no respondas a la llamada. A continuación, vuelve a la pestaña de tu terminal que está ejecutando el servidor de tu aplicación. Deberías ver la carga útil de la solicitud POST de AI Studio.

Node Server with Status URL PayloadNode Server with Status URL Payload

¿Por qué es posible que no reciba una solicitud POST?

Si no recibe una carga útil y se ha asegurado de haberlo hecho todo correctamente, ¡puede que no sea culpa suya! El endpoint status_url se basa en la información recibida de los operadores de telefonía. Los datos proporcionados varían de un país a otro e incluso de un proveedor a otro. Puede comprobarlo probando con números de teléfono de distintos proveedores de red.

Cómo crear un chatbot de SMS con tolerancia a fallos

Ahora necesitarás crear un segundo agente. En este ejemplo, utilizaremos SMS como método de conmutación por error, pero también puedes utilizar WhatsApp o HTTP de forma similar. Hay tres opciones importantes para nuestro agente, seleccione:

  • Tipo: SMS

  • Plantilla: Empezar de cero

  • Evento: Salida

Nuestro agente SMS será bastante sencillo. Añadir 2 nodos:

  1. A Enviar SMS nodo con el texto "¡Hola, hemos intentado llamarte!".

    • El campo "Para" debe establecerse con el parámetro de sistema $SENDER_PHONE_NUMBER, que obtendrá su valor de la solicitud que enviaremos a Studio en la siguiente sección.

    • El campo "De" debe sustituirse por $AGENT_PHONE_NUMBER.

  2. A Enviar Email que puede configurar en su correo electrónico personal con el asunto y el mensaje que desee.

Simple SMS Agent in AI StudioSimple SMS Agent in AI Studio

Pero, ¿cómo se activará este agente? Lo ha adivinado. A través de una petición POST similar a la de nuestro agente Voice. Esta petición POST vendrá desde dentro de nuestra aplicación de nodos. Para ello necesitaremos el paquete paquete axios. Así que detenga su servidor e instale axios:

npm i axios

Entonces necesitarás actualizar un poco tu archivo app.js. Tendremos que requerir el paquete axios, preparar nuestra Solicitud de SMS saliente con las cabeceras y los datos necesarios, y luego lanzar la solicitud una vez que hayamos recibido el estado de nuestro agente de Voice. Puedes ver cómo queda el código final:

// app.js

const express = require('express');
const bodyParser = require('body-parser');
const axios = require('axios');

const url = 'https://studio-api-eu.ai.vonage.com/messaging/conversation';
const data = {
  "to": "DESTINATION_NUMBER",
  "agent_id": "YOUR_AGENT_ID",
  "channel": "sms"
  // optional to pass status_url
  // "status_url": "string"
}

const headers = {
  'Content-Type': 'application/json',
  'X-Vgai-Key': 'YOUR_VGAI_KEY',
};

const app = express();
const port = 3000;

// Use bodyParser middleware to parse JSON requests
app.use(bodyParser.json());

// Handle POST requests to the root endpoint
app.post('/', (req, res) => {
  axios.post(url, data, { headers })
    .then(response => {
    
    })
    .catch(error => {
      console.error('Error:', error);
    });

  // Send a response back to the client
  res.status(200).send('POST request received successfully');
});

app.get('/', (req, res) => {
  // Send a response back to the client
  res.status(200).send('GET request received successfully');
});


// Start the server
app.listen(port, () => {
  console.log(`Server is running on http://localhost:${port}`);
});

Y ya está. Ejecuta la solicitud del cartero, ignora la llamada y recibirás un mensaje de texto en tu teléfono y un correo electrónico en tu bandeja de entrada. ¿No es genial?

Tenga en cuenta que agent_id debe ser el ID de su agente SMS saliente; el segundo agente que ha creado.

Conclusión

En este tutorial, hemos cubierto cómo construir un chatbot de telefonía saliente usando AI Studio de Vonage y cómo activarlo usando una solicitud POST. También hemos explorado cómo crear una aplicación Node para manejar una llamada fallida y enviar un mensaje de seguimiento por SMS o correo electrónico. Siguiendo los pasos descritos en este tutorial, puedes crear una experiencia de cliente fluida que se adapte a las preferencias de los consumidores modernos.

Queremos saber cómo disfrutas (o detestas) AI Studio. Ponte en contacto conmigo en nuestro Slack de la comunidad de desarrolladores o en X, antes conocido como Twitter. Este artículo se inspiró en una pregunta de nuestro Slack, así que ¿quién sabe? Puede que mi próxima entrada en el blog esté inspirada en ti.

Recursos adicionales

Compartir:

https://a.storyblok.com/f/270183/384x384/e4e7d1452e/benjamin-aronov.png
Benjamin AronovDefensor del Desarrollador

Benjamin Aronov es desarrollador de Vonage. Es un constructor de comunidades con experiencia en Ruby on Rails. Benjamin disfruta de las playas de Tel Aviv, a la que llama hogar. Su base en Tel Aviv le permite conocer y aprender de algunos de los mejores fundadores de startups del mundo. Fuera de la tecnología, a Benjamin le encanta viajar por el mundo en busca del perfecto pain au chocolat.