https://a.storyblok.com/f/270183/1368x665/43e8c8dc51/zapier_voice-sms.png

Seguimientos de SMS para llamadas salientes con Vonage y Zapier

Publicado el December 5, 2024

Tiempo de lectura: 8 minutos

SMS Follow Up ExampleSMS Follow Up ExampleEn un artículo anterior, "Hacer llamadas telefónicas desde Google Sheets", mostré lo fácil que es hacer llamadas salientes sin necesidad de un servidor o una aplicación independiente. Todo lo que necesitabas era una hoja de contactos de Google y un agente de AI Studio. En otro artículo "Building a Resilient Voice Agent: Guía de sistemas de conmutación por error," mostré cómo activar un SMS de seguimiento si no se contestaba a la llamada saliente.

Sin embargo, ¡no pensé que alguien los combinaría necesariamente! Gracias a Alice en el Slack de la Comunidad de Vonage, se demostró que estaba equivocado. El problema era que el artículo Resilient Voice Agent se basaba en un servidor Node. ¿Pero qué pasa si quieres construir una solución completamente sin-código / de bajo-código como Alice? ¡Estás de suerte porque haremos justo eso en este artículo!

Este tutorial demostrará cómo puede utilizar Zapier para conectar un agente de voz saliente con un agente de seguimiento de SMS saliente ¡sin necesidad de código!

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 robot de voz saliente

Para crear su agente, siga las instrucciones que se encuentran en la documentación de AI Studio. Hay tres opciones importantes que debes seleccionar:

  • Tipo: Telefonía

  • Plantilla: Empezar de cero

  • Evento: Salida

La funcionalidad de su agente será bastante sencilla: una única llamada robotizada con sus buenos deseos de cumpleaños. Utilizará un único Nodo Hablar y un Nodo Final de Conversación.

AI Studio Bot OverviewAI Studio Bot Overview

Cómo crear parámetros personalizados en AI Studio

Dentro de tu SpeakNode, necesitarás 2 parámetros. Así que abra el panel de Propiedades en el lado izquierdo y elija parámetros. En Parámetros Personalizados cree las siguientes entradas:

  • nombre - @sys.any

  • mensaje - @sys.any

Asegúrese de que los parámetros se han guardado y abra su Nodo Speak. Dentro del nodo, añada el siguiente mensaje. Utilice sus parámetros escribiendo $ seguido del nombre del parámetro. Por ejemplo, para usar el valor de tu nombre, escribirás $nombre.

<speak><break time='1s' /> <p> Dear $name</p> <p>Your loving friend YOUR_NAME has the following birthday message for you: $message </p> <p>Have a wondeful birthday!</p></speak>

Observará que está utilizando Lenguaje de marcado de síntesis de voz para añadir una pausa de un segundo y crear diferentes párrafos para que el agente hable de forma más natural.

Haga clic en Guardar y Salir.

Cómo conectar su agente virtual a un número virtual

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

Cómo crear una base de datos de Google Sheets

Abre Google Sheets y haz clic en Hoja de cálculo en blanco. Dale a tu hoja de cálculo un título bonito como Mensajes de cumpleaños. Además, asigna a tu hoja el nombre cumpleaños.

Su hoja tendrá 4 cabeceras de columna:

  1. nombre

  2. número_teléfono

  3. cumpleaños

  4. mensaje

Añade al menos los datos de 1 amigo, pero para ver la lógica completa añade unos 10.

Google Sheet Sample DataGoogle Sheet Sample Data

  • Para número_teléfonoañada su número u otro número de teléfono al que pueda acceder para recibir SMS de prueba. Numbers debe estar en formato internacional sin ningún + o 00. Por ejemplo, un número de EE.UU. sería 15552345678

    • Asegúrese de que su número_teléfono esté formateada en "Texto sin formato" o tendrá problemas con los datos.

    • Asegúrese de que cumpleaños tenga el formato Fecha tipo. Por ejemplo, 9/26/2008.

Select Plain TextSelect Plain Text

Cómo convertir Google Sheet a JSON

Ahora, ¡convertirás tu hoja de cálculo de Google en una aplicación programable! Abre la pestaña Extensiones y selecciona Apps Scripts. Apps Scripts te permite escribir código sobre aplicaciones de Google Workspace como Google Sheets o Google Docs para automatizar y ampliar sus funciones.

En primer lugar, dé a su nuevo proyecto un título agradable como API de Mensajes de Cumpleaños. Borre el código en code.gs y sustitúyalo por lo siguiente:

function sendBirthdayCall() {
 // Open the spreadsheet by name
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheetByName("birthdays");
  // Get today's date
 var today = new Date();
 var todayDay = today.getDate();
 var todayMonth = today.getMonth() + 1;
  // Get all the data from the sheet
 var data = sheet.getDataRange().getValues();
  // Iterate through each row to check for birthdays
 for (var i = 1; i < data.length; i++) {
   var name = data[i][0];
   var phoneNumber = data[i][1];
   var birthday = new Date(data[i][2]);
   var birthdayDay = birthday.getDate();
   var birthdayMonth = birthday.getMonth() + 1;
   var message = data[i][3];
  
   // Check if today is the person's birthday
   if (birthdayDay === todayDay && birthdayMonth === todayMonth) {
     // Prepare the JSON payload
     var payload = {
       "name": name,
       "phone_number": phoneNumber,
       "birthday": birthday.toISOString(),
       "message": message
     };
     const payload_string = JSON.stringify(payload)
 
     // Send POST request to AI Studio
     sendRequest(payload);
   }
 }
}

Este código crea un archivo sendBirthdayCall que busca en nuestra hoja de cálculo los campos cumpleaños en la hoja. Luego itera a través de cada fila, comprobando si hoy es el cumpleaños de la persona comparando el valor del día y el mes. Si es así, crea el objeto payload que contiene la información del cumpleañero o cumpleañera. A continuación, pasa esta información al comando sendRequest que enviará la información del cumpleaños a AI Studio.

Cómo enviar una solicitud POST de Apps Script

Ahora creará su sendRequest para para activar su Agente Virtual de Salida. Puede pegar el siguiente código debajo de la función enviarLlamadaDeCumpleaños() sección.

Para que este código funcione, tendrás que actualizar 4 valores:

  1. aiStudioUrl

  • El punto final depende de la región que haya seleccionado para su agente:

Para los agentes de la UE →https://studio-api-eu.ai.vonage.com/telephony/make-call

Para agentes estadounidenses --> https://studio-api-us.ai.vonage.com/telephony/make-call

2. X-Vgai-Key

  • Añade tu clave API de AI Studio. Puede encontrar la 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".

3. agent_id

  • Añadir el id de tu agente de Vonage AI Studio. Puedes encontrarlo en los detalles del agente.

4. Estado_url

  • Deje el campo URL_estado en blanco por ahora. Se actualizará con la URL de Zapier.

function sendRequest(payload) {
// Replace with either the US or EU URL
 var url = '';


  // Define headers for the POST request
 var headers = {
   'Content-Type': 'application/json',
   'X-Vgai-Key': '' // Replace with your key
 };
  // Define the body for the POST request
 var body = {
   "to": payload.phone_number,
   "agent_id": "", // Replace with your agent ID
"status_url": "", // Replace with webhook URL from Zapier

   "session_parameters": [
     {
       "name": "name",
       "value": payload.name
     },
     {
       "name": "message",
       "value": payload.message
     }
   ]
 };
  // Make sure to set proper options for your API request (e.g., headers, authentication)
 var options = {
   'method': 'post',
   'headers': headers,
   'payload': JSON.stringify(body)
 };


  // Send the POST request
 var response = UrlFetchApp.fetch(url, options);


 // Add a two-second delay before sending the next request
 Utilities.sleep(2000);
  // Log the response (you can do more error handling here)
 Logger.log(response.getContentText());
}

Ahora puede probar que su código funciona haciendo clic en Ejecutar.

Para las pruebas, asegúrate de que al menos uno de los contactos cumple años el día en curso y tiene un número de teléfono al que puedes acceder (como tu número personal).

Genial, ¡ya tenemos un agente de salida automatizado! A continuación, tenemos que crear el agente de SMS de seguimiento.

Cómo crear un chatbot de SMS de seguimiento

Ahora tendrá que crear un segundo agente. En este ejemplo, utilizaremos SMS como método de conmutación por error., pero también puedes usar 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, he intentado llamarte para desearte un feliz cumpleaños. Espero que tengas un día fantástico".

    • 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. (Opcional) A Enviar correo electrónico que puede configurar para su correo electrónico personal con a asunto y mensaje de su elección

Simple SMS Agent in AI StudioSimple SMS Agent in AI Studio

Por último, publica tu segundo agente como hiciste antes con tu segundo número de Vonage.

Cómo utilizar Zapier para conectar dos agentes de salida

Utilizaremos Zapier para conectar nuestros dos agentes con sólo cuatro pasos:

  1. Captura el webhook sin procesar de AI Studio

  2. Limpiar los datos JSON entrantes

  3. Compruebe si el estado de la llamada era "contestada", si no es así:

  4. Enviar una solicitud POST para activar el seguimiento por SMS

Cómo capturar un Webhook sin procesar en Zapier

En primer lugar, cree un nuevo Zap en blanco. Para su aplicación de activación, seleccione Webhooks por Zapier. Para el evento desencadenante, seleccione Catch Raw Hook.

Select Catch Raw Hook for your Zap TriggerSelect Catch Raw Hook for your Zap Trigger

Cuando hagas click en continuar, Webhook creará una URL webhook. Este endpoint es el endpoint "status_url" que dejamos en blanco en nuestra petición Apps Scripts. Ahora puedes reemplazar la cadena vacía con la URL de tu webhook Zapier.

Zapier Webhook Endpoint used for status_urlZapier Webhook Endpoint used for status_url

Tu script de actualización en Google Sheets debería tener este aspecto:

Updated Apps Scripts code to include Zapier Webhook URLUpdated Apps Scripts code to include Zapier Webhook URL

Ya puedes pulsar Ejecutar en Hojas de cálculo de Google. Pero esta vez, ignora o rechaza la llamada. Esto hará que AI Studio envíe una solicitud al Webhook de Zapier. A continuación, puedes volver a Zapier y probar el activador. Deberías ver que se devuelve un registro. Cuando examines el registro, verás un montón de datos. Puede parecer aterrador, pero no te preocupes; lo limpiaremos a continuación.

Test results for trigger testTest results for trigger test

Cómo limpiar la carga útil JSON en Zapier

En el último paso, devolvimos datos sin formato de nuestra solicitud POST. Puede que hayas notado todo lo bueno que hay dentro del cuerpo en bruto.

Si miras dentro del cuerpo en brutoverás un atributo llamado estado. Esta información de AI Studio nos permite saber si la llamada fue o no contestada. Para obtenerla, añadiremos el atributo Código por Zapier acción.

Add the Code by Zapier as the second step in your ZapAdd the Code by Zapier as the second step in your ZapPara el "Evento de acción", seleccione Ejecutar Javascript. Utilizaremos este bloque de código para limpiar los datos sin procesar y transformarlos en JSON utilizable.

Para los Datos de entrada, cree una nueva clave llamada Carga útil. Para el valor, haga clic en el signo + y seleccione Cuerpo en bruto.

A continuación, para el código personalizado, añada lo siguiente:

let Payload = JSON.parse(inputData.Payload.replace(/%g/,""));
output = [{Payload}];

Este código limpia los datos de entrada y los convierte en un objeto JSON. De esta manera, podemos utilizar las claves y valores para la lógica en los siguientes pasos.

Transform the Raw Body into a Javascript Object called PayloadTransform the Raw Body into a Javascript Object called Payload

Cuando pruebe este bloque, verá que ahora tiene acceso a los campos de datos llamados "Payload From" (su número de Agente de Voz), "Payload To" (su número de teléfono de prueba) y, lo más importante, "Payload Status".

Ahora que tenemos acceso al valor de Payload Status, querremos crear una condición.

Cómo crear condiciones con la acción de filtro de Zapier

Añade otro paso en tu Zap, y añade la función Filtrar por Zapier Acción. Crea la siguiente condición:Solo continuar si: Estado de la carga útil no coincide exactamente con contestado

Create the condition to filter Payload StatusCreate the condition to filter Payload Status

El Zap continuará para todos los casos a menos que el Estado de la carga útil sea igual a "respondido". Así que ya podemos añadir nuestra acción final: ¡conectar con nuestro agente de SMS de seguimiento!

Cómo crear una solicitud POST con Zapier

En nuestro activador, utilizamos Zapier para escuchar las solicitudes POST de AI Studio. Pero ahora, utilizaremos Zapier para enviar una solicitud POST a AI Studio y activar nuestro seguimiento por SMS.

De nuevo, seleccione Webhooks por Zapier para el evento App. Esta vez, para el evento Acción, seleccione POST.

Select POST webhook actionSelect POST webhook action

Haga clic en Continuar para configurar la solicitud POST. Aquí debe configurar seis campos: la URL y el Tipo de carga útil, 3 campos en la sección Datos y un campo en las Cabeceras.

URL

Para la URL, debe comprobar si su agente tiene su sede en EE.UU. o en la UE. Añada la URL correspondiente:

Tipo de carga útil

Cambia el tipo de carga útil a json.

Datos

Añada los 3 campos siguientes con los valores correspondientes:

  1. Clave: a
    Valor: Payload To

  2. Clave: agent_id
    Valor: el ID de su agente SMS saliente; el segundo agente que ha creado

  3. Clave: canal
    Valor: sms

Cabeceras

Añade el siguiente campo y valor:

  1. Llave: X-Vgai-Key
    Valor: tu clave de API de AI Studio

POST request properly formattedPOST request properly formatted

A continuación, puede probar este paso y recibir el SMS en su teléfono. Si todo ha funcionado, publica tu Zap, ¡ya has terminado!

Conclusión

Y eso es todo: ¡una solución telefónica y de SMS totalmente sin código y de código reducido! ¿Pudiste hacerlo funcionar? ¿Tuviste algún problema? ¿Tienes otras plataformas de bajo código además de Zapier y Google Sheets? Como he dicho antes, la inspiración para este tutorial fue una pregunta de la comunidad en nuestra Comunidad Slack. Únete a mí en el canal #ai-studio y hazme saber cómo encontraste este tutorial. También puedes seguir a VonageDev en X para conocer las últimas noticias de los desarrolladores de Vonage.

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.