Integra el ChatGPT de OpenAI en Programmable Voice y Functions de Twilio.

March 23, 2023
Redactado por
Revisado por

T-800 de la película

El uso de ChatGPT para potenciar un chatbot interactivo de voz no es solo una novedad, sino que puede ser una manera de obtener información útil de inteligencia empresarial mientras se reservan los agentes humanos dedicados, costosos y que se enfocan en un solo subproceso para conversaciones con las que solo los seres humanos pueden ayudar. En estos días, las personas hablan, escuchan y colaboran con robots todo el tiempo, pero ¿sabes qué es mejor que interactuar con un robot? ¡Interactuar con tres!

En esta publicación, te mostraremos cómo utilizar el reconocimiento de voz nativo de Twilio y las capacidades de texto a voz neuronales de Amazon Polly con ChatGPT para crear un chatbot activado por voz, todo alojado completamente en el entorno de Functions sin servidor de Twilio. También utilizarás la API de eventos de llamada para analizar qué preguntas están realizando y ver las respuestas del bot, lo que nos permite desbloquear los datos propios enriquecidos captados en estas interacciones y enviarlos a plataformas de interacción con el cliente, como Segment, donde puedes utilizarlos para crear perfiles de clientes, comprender sus preferencias y crear las experiencias personalizadas que ellos esperan.

¿Quieres probar la demostración antes de sumergirte en ella? Llama al 1-989-4OPENAI (467-3624) para probarla.

Robot n.°º1: Decodificación de voz humana mediante el reconocimiento de voz

El reconocimiento de voz de Twilio utilizando el verbo <Gather> (Recopilar) de TwiML es una poderosa herramienta que convierte las palabras emitidas en una llamada telefónica en texto. Ofrece una excelente precisión, baja latencia y compatibilidad con numerosos idiomas y dialectos. Históricamente, los desarrolladores de Twilio han utilizado el reconocimiento de voz como una manera de navegar por la respuesta de voz interactiva (IVR) y otros flujos de trabajo de automatización de autoservicio, pero con el lanzamiento de nuevos modelos experimentales de voz, el único límite es ✨tu imaginación ✨.

Robot n.°º2: Dale voz a tu robot con las voces neuronales de Amazon Polly

Con el verbo <Say> (Decir) de TwiML, Twilio proporciona una función de texto a voz (TTS) que utiliza las voces de Amazon Polly que aprovechan el aprendizaje profundo para sintetizar el habla similar a la humana. Las voces neuronales de Polly ofrecen un sonido más natural y realista, lo que proporciona una experiencia de audio atractiva para los usuarios. Gracias a la compatibilidad con varios idiomas, una amplia gama de voces y SSML, la conversión de texto a voz de Twilio te permite personalizar la voz de tu chatbot para que coincida con la identidad de tu marca.

Robot n.°º3: ChatGPT, el compañero conversacional de OpenAI

ChatGPT es un modelo de idioma avanzado desarrollado por OpenAI, capaz de generar texto similar al humano en función de una entrada dada. Puede comprender el contexto, proporcionar respuestas relevantes e incluso participar en tareas creativas, como escribir historias o poemas. Al aprovechar la API de OpenAI, los desarrolladores pueden integrar esta IA directamente en sus aplicaciones, lo que ofrece a los usuarios una experiencia más interactiva e interesante.

La salsa secreta: Twilio Functions

¿Cómo obtendrás estos tres robots para que hablen entre ellos y con tus agentes de llamada? Usando Twilio Functions. Más allá de simplemente darte la capacidad de obtener una prueba de concepto y ejecutarla sin necesidad de utilizar un servidor propio, Functions proporciona capacidades de escalamiento automático, seguridad mejorada y latencia reducida cuando se ejecuta el código dentro de Twilio. Por supuesto, si tienes tu propio servidor en algún lugar, puedes realizar un par de ediciones pequeñas en Javascript y se ejecutará en el entorno Node.js sin ninguna dificultad.

Ahora que tienes los ingredientes, veamos la receta en dos sabores: CLI y GUI.

Robots bailando y Herbie Hancock cantando en el video musical de la canción Rockit.

Prepara tu mente antes de que te derrumbes

Antes de sumergirse en el proceso de integración, necesitarás lo siguiente:

Función para el día siguiente

En primer lugar, pongamos nuestras actividades en segundo plano en orden. Comenzarás creando un nuevo proyecto sin servidor. Ya que instalaste el increíble Kit de herramientas sin servidor de código abierto, puedes hacerlo en una línea pasando el comando a tu terminal:

twilio serverless:init <project-name>

Reemplaza <project-name> con el nombre de tu preferencia; yo denominé al mío three-robot-rhumba.

Ventana de terminal mostrando la inicialización de un proyecto sin servidor de Twilio.

Ingresa el cd al directorio de tu proyecto y actualicemos el archivo .env para proporcionar tu token de autenticación de Twilio como AUTH_TOKEN y tu clave de API de OpenAI como OPENAI_API_KEY. El SID de tu cuenta de Twilio se debería completar automáticamente. Asegúrate de que tu archivo .env se vea así (con los marcadores de posición XXXXX reemplazados con sus respectivas claves):

ACCOUNT_SID=XXXXX
AUTH_TOKEN=XXXXX
OPENAI_API_KEY=XXXXX

Ya que Twilio Functions sin servidor está formado solo por aplicaciones de Node.js, puedes agregar dependencias usando cualquier administrador de paquetes que escriba en package.json. Estoy usando npm porque soy básico. Vuelve a tu terminal e ingresa lo siguiente para instalar el paquete de NPM de OpenAI:

npm install openai@3.3.0

Con el conjunto de variables de entorno y las dependencias agregadas, puedes comenzar a trabajar. Crearás dos funciones: una función /transcribe que utiliza el reconocimiento de voz de Twilio para convertir tus palabras habladas en un texto que ChatGPT puede entender usando el verbo <Gather> (Recopilar) de TwiML y una función /respond que toma el texto generado por el reconocimiento de voz, lo envía a la API de OpenAI y pasa la respuesta al motor de texto a voz neuronal de Amazon Polly de Twilio utilizando el verbo<Say> (Decir) de TwiML.

Para crear una nueva función, abre la carpeta Functions (Funciones) en el directorio de proyecto y crea un archivo JavaScript. Crea las funciones /transcribe y /respond creando un archivo transcribe.js y respond.js en la carpeta.

Perdido en la transcripción

Ahora, abramos transcribe.js y agreguemos el siguiente código:

exports.handler = function(context, event, callback) {
    // Create a TwiML Voice Response object to build the response
    const twiml = new Twilio.twiml.VoiceResponse();

    // If no previous conversation is present, or if the conversation is empty, start the conversation
    if (!event.request.cookies.convo) {
        // Greet the user with a message using AWS Polly Neural voice
        twiml.say({
                voice: 'Polly.Joanna-Neural',
            },
            "Hey! I'm Joanna, a chatbot created using Twilio and ChatGPT. What would you like to talk about today?"
        );
    }

    // Listen to the user's speech and pass the input to the /respond Function
    twiml.gather({
        speechTimeout: 'auto', // Automatically determine the end of user speech
        speechModel: 'experimental_conversations', // Use the conversation-based speech recognition model
        input: 'speech', // Specify speech as the input type
        action: '/respond', // Send the collected input to /respond 
    });

    // Create a Twilio Response object
    const response = new Twilio.Response();

    // Set the response content type to XML (TwiML)
    response.appendHeader('Content-Type', 'application/xml');

    // Set the response body to the generated TwiML
    response.setBody(twiml.toString());

    // If no conversation cookie is present, set an empty conversation cookie
    if (!event.request.cookies.convo) {
        response.setCookie('convo', '', ['Path=/']); 
    }

    // Return the response to Twilio
    return callback(null, response);
};

Si eres nuevo en Functions, permíteme explicarte lo que sucede aquí. La función /transcribe crea una respuesta de voz que genera TwiML basada en la biblioteca auxiliar Node.js de Twilio, inicia una conversación si no existe, escucha la entrada del usuario y pasa esa entrada junto con el historial de la conversación al punto final /respond para su posterior procesamiento.

En la línea 6, la aplicación comprueba si existe una cookie llamada convo. Si no lo hace, o si lo hace, pero está vacía, puedes interpretarlo como que la conversación aún no ha comenzado, por lo que lanzarás un saludo inicial utilizando el verbo <Say> (Decir) de TwiML.

A continuación, el método twiml.gather se utiliza para capturar la entrada del usuario. Los parámetros para la recopilación son:

  • speechTimeout: 'auto': Determina automáticamente cuándo el usuario dejó de hablar, se puede establecer en un número entero positivo, pero la opción automática es la mejor opción para este caso de uso.
  • speechModel: "experimental_conversations": Utiliza un modelo de reconocimiento de voz optimizado para casos de uso conversacional.
  • input: 'speech': Establece el tipo de entrada en voz e ignora cualquier pulsación de tecla (DTMF).
  • action: '/respond': Pasa la entrada de voz del usuario junto con el historial de conversaciones al punto final /respond.

Ahora, debes crear una forma de crear la cookie convo para que la función /respond tenga un lugar para almacenar el historial de conversación que pasará entre la API de OpenAI y nuestros mensajes de voz neuronales de Polly, lo que significa que la app necesita inicializar un objeto Twilio.Response(); y lo hace en la línea 25.

No puedes pasar tanto Twilio.twiml.VoiceResponse();y Twilio.Response(); de nuevo por el controlador, por lo que deberás usar la respuesta que acabas de crear para agregar un encabezado a nuestras solicitudes y establecer el TwiML que generaste con <Gather> (Recopilar) por el cuerpo en las líneas 28 y 31 respectivamente.

Una vez que lo hayas hecho, puedes configurar la cookie response.setCookie(); en la línea 35 antes de pasar la respuesta al controlador para que la ejecute nuestra infraestructura sin servidor en la línea 39. Ahora sí, guarda este archivo y cierra la aplicación.

Llamada y respuesta

A continuación, abramos Respond.js y agreguemos el siguiente código:

// Import the OpenAI module
const { OpenAI } = require("openai");

// Define the main function for handling requests
exports.handler = async function(context, event, callback) {
  // Set up the OpenAI API with the API key from your environment variables
   const openai = new OpenAI({
    apiKey: context.OPENAI_API_KEY, 
  });


  // Set up the Twilio VoiceResponse object to generate the TwiML
  const twiml = new Twilio.twiml.VoiceResponse();

  // Initiate the Twilio Response object to handle updating the cookie with the chat history
  const response = new Twilio.Response();

  // Parse the cookie value if it exists
  const cookieValue = event.request.cookies.convo;
  const cookieData = cookieValue ? JSON.parse(decodeURIComponent(cookieValue)) : null;

  // Get the user's voice input from the event
  let voiceInput = event.SpeechResult;

  // Create a conversation object to store the dialog and the user's input to the conversation history
  const conversation = cookieData?.conversation || [];
  conversation.push({role: 'user', content: voiceInput});

  // Get the AI's response based on the conversation history
  const aiResponse = await createChatCompletion(conversation);


  // Add the AI's response to the conversation history
  conversation.push(aiResponse);

  // Limit the conversation history to the last 20 messages; you can increase this if you want but keeping things short for this demonstration improves performance
  while (conversation.length > 20) {
      conversation.shift();
  }

  // Generate some <Say> TwiML using the cleaned up AI response
  twiml.say({
          voice: "Polly.Joanna-Neural",
      },
      aiResponse
  );

  // Redirect to the Function where the <Gather> is capturing the caller's speech
  twiml.redirect({
          method: "POST",
      },
      `/transcribe`
  );

  // Since we're using the response object to handle cookies we can't just pass the TwiML straight back to the callback, we need to set the appropriate header and return the TwiML in the body of the response
  response.appendHeader("Content-Type", "application/xml");
  response.setBody(twiml.toString());

  // Update the conversation history cookie with the response from the OpenAI API
  const newCookieValue = encodeURIComponent(JSON.stringify({
      conversation
  }));
  response.setCookie('convo', newCookieValue, ['Path=/']);

  // Return the response to the handler
  return callback(null, response);

  // Function to generate the AI response based on the conversation history
  async function generateAIResponse(conversation) {
      const messages = formatConversation(conversation);
      return await createChatCompletion(messages);
  }

  // Function to create a chat completion using the OpenAI API
  async function createChatCompletion(messages) {
      try {
        // Define system messages to model the AI
        const systemMessages = [{
                role: "system",
                content: 'You are a creative, funny, friendly and amusing AI assistant named Joanna. Please provide engaging but concise responses.'
            },
            {
                role: "user",
                content: 'We are having a casual conversation over the telephone so please provide engaging but concise responses.'
            },
        ];
        messages = systemMessages.concat(messages);

        const chatCompletion = await openai.chat.completions.create({
            messages: messages,
            model: 'gpt-4',
            temperature: 0.8, // Controls the randomness of the generated responses. Higher values (e.g., 1.0) make the output more random and creative, while lower values (e.g., 0.2) make it more focused and deterministic. You can adjust the temperature based on your desired level of creativity and exploration.
              max_tokens: 100, // You can adjust this number to control the length of the generated responses. Keep in mind that setting max_tokens too low might result in responses that are cut off and don't make sense.
              top_p: 0.9, // Set the top_p value to around 0.9 to keep the generated responses focused on the most probable tokens without completely eliminating creativity. Adjust the value based on the desired level of exploration.
              n: 1, // Specifies the number of completions you want the model to generate. Generating multiple completions will increase the time it takes to receive the responses.
        });

          return chatCompletion.choices[0].message.content;

      } catch (error) {
          console.error("Error during OpenAI API request:", error);
          throw error;
      }
  }
}

Al igual que con lo anterior, aquí hay un recorrido guiado para saber exactamente lo que está pasando en este código. Comienza importando los módulos requeridos (línea 2) y definiendo la función principal para manejar las solicitudes (línea 5).

Las líneas 7 y 8 establecen la API de OpenAI con la clave de API, mientras que la línea 11 crea el objeto Twilio Voice Response que generará TwiML para convertir las respuestas de ChatGPT en voz para los agentes de llamada. La línea 14 inicia el objeto Twilio Response para actualizar la cookie del historial de conversación y establecer los encabezados y el cuerpo para que se pase TwiML en la respuesta.

Las líneas de la 17 a la 20 analizan el valor de la cookie si esta existe y la línea 23 recupera la entrada de voz del usuario del evento SpeechResult recibido con la función /transcribe. Las líneas 26 y 27 crean una variable de conversación para almacenar el diálogo y agregar la entrada del usuario al historial de conversación.

La línea 30 genera la respuesta de la IA según el historial de conversaciones, y la línea 33 limpia la respuesta de la IA eliminando cualquier nombre de rol innecesario (asistente, Joanna, usuario). La línea agrega la respuesta limpia de la IA al historial de conversaciones.

Las líneas de la 39 a la 41 limitan el historial de conversaciones a los últimos 10 mensajes para mejorar el desempeño y mantener un tamaño razonable de la cookie. Al mismo tiempo, proporcionan al chatbot un contexto suficiente para proporcionar respuestas útiles. Puedes aumentar (o disminuir) esto si lo deseas, pero recuerda que el historial almacenado se transfiere a la API de OpenAI con cada solicitud, de modo que, cuanto más grande sea, más tokens consumirá tu aplicación. Las líneas de la 44 a la 48 generan el verbo <Say> (Decir) de TwiML mediante la respuesta limpia de la IA, y las líneas de la 51 a la 55 redireccionan la llamada a la función /transcribe en la que el verbo <Gather> (Recopilar) captura el discurso del agente de llamada.

Al igual que con /transcribe, nosotros debemos utilizar la respuesta para entregar el TwiML, y las líneas 58 y 59 establecen el encabezado adecuado y devuelven el TwiML en el cuerpo de la respuesta. Las líneas de la 62 a la 67 actualizan la cookie del historial de conversación con la respuesta de la API de OpenAI, y la línea 70 devuelve la respuesta al controlador.

La función generateAIResponse (líneas de la 73 a la 76) formatea la conversación y crea una finalización de chat con la API de OpenAI. La función createChatCompletion (líneas de la 81 a la 88) envía una solicitud a la API de OpenAI para generar una respuesta mediante el modelo GPT-3.5-turbo y los parámetros especificados. Si obtenemos un 500 de la API de OpenAI, no queremos simplemente concluir la conversación, por lo que manejaremos un error de la API con <Say> (Decir) y una redirección de la conversación a la función /transcribe en las líneas 90 a la 107.

También es posible que el tiempo de espera de la solicitud a OpenAI simplemente se agote, por lo que se ha agregado un bloque entre las líneas 109 y 131 para manejar los tiempos de espera con elegancia y redirigir la solicitud a la función /transcribe para intentarlo nuevamente.

Por último, la función formatConversation (líneas de la 136 a la 158) formatea el historial de conversaciones en un formato que la API de OpenAI puede comprender alternando entre los roles assistant y user.

Ahora tu código está actualizado y el conjunto de dependencias y las variables de entorno están configuradas, por lo que ya está todo preparado para la implementación. Con Twilio sin servidor, no podría ser más fácil… ¡es solo un comando!

twilio serverless:deploy

Una vez que la implementación finalice, puedes utilizar las funciones que creaste para capturar la entrada de voz de un agente de llamada, convertirla en texto que se envía a la API de ChatGPT y reproducir la respuesta al agente de llamada en forma de voz generada por IA. ¡Tres robots trabajando juntos, solo para ti!

La banda de música electrónica Kraftwerk actuando en vivo

El modelo

El ejemplo anterior utiliza el modelo gpt-3.5-turbo de OpenAI. Es un modelo bueno (¡y barato!) para fines de desarrollo y prueba de conceptos, pero puede que otros modelos sean mejores para casos de uso específicos. GPT-4 acaba de lanzarse en versión beta limitada, e incluso aquí en Twilio aún no hemos tenido la oportunidad de probarlo, pero, basado en la transmisión en vivo del desarrollador publicada con el anuncio, parece ser una actualización significativa de la versión 3.5 que ha estado impresionando a las personas durante los últimos meses.

Una consideración adicional: GPT-3 es reemplazada por 3.5 (y naturalmente 4), pero los modelos de GPT-3 exponen capacidades de ajuste fino que los modelos más avanzados carecen al momento de la redacción. Por ejemplo, aunque los datos de capacitación sean antiguos, puedes obtener respuestas más rápidas mediante el uso de CURIE y puedes emplear cosas como análisis de opinión y estilos de respuesta. Elige tu propia aventura.

Rikki, no pierdas ese número

Con la función lista e implementada, puedes probarla haciendo una llamada, pero, primero, deberás configurar un número de teléfono para utilizar las funciones que acabas de crear. La CLI proporciona una manera rápida y fácil de hacerlo. Escribe lo siguiente en tu terminal para enumerar los números de teléfono en tu cuenta (suponemos que seguiste el requisito previo y adquiriste un número con anticipación).

twilio phone-numbers:list

Recibirás una lista con los números de teléfono, sus SID y los nombres descriptivos de tu cuenta. Puedes utilizar el SID o el número de teléfono completo con formato E.164 para tu solicitud:

twilio phone-numbers:update <PN SID> –voice-url=<The URL for the /transcribe Function>
OBI-wan Kenobi de la película La guerra de las galaxias dice que nunca ha utilizado una interfaz de línea de comandos y R2-D2 responde con pitidos tristes.

Si las CLI no pasan la comprobación de VIBE, puedes hacer todas las cosas que describimos anteriormente directamente en la consola de Twilio. En primer lugar, en la navegación de la izquierda en la pestaña Develop (Desarrollar), ve a la sección Functions and Assets (Funciones y activos) y haz clic en Services (Servicios). Haz clic en Create Service (Crear servicio).

Servicio de creación de demostración de ChatGPT de Twilio Voice

Dale un nombre a tu Servicio, yo llamaré al mío voice-chatgpt-demo y haz clic en Next (Siguiente).

Servicio de nombre de demostración de ChatGPT de Twilio Voice

Ahora verás la vista Console (Consola) para tu Servicio, con Funciones, Activos, Variables de Entorno y Dependencias en la navegación de la izquierda, y un editor de texto y una consola para editar tu código y monitorear los registros. Lo primero que querrás hacer es configurar tus variables de entorno, así que haz clic en Environment Variables (Variables de entorno) en la esquina inferior derecha.

Configuración del servicio de demostración de ChatGPT de Twilio Voice

El SID y el token de autenticación de tu cuenta de Twilio se completan previamente como variables de entorno, por lo que todo lo que necesitas es agregar tu clave de API de OpenAI. El código de ejemplo se referirá a la clave como OPENAI_API_KEY, por lo que, si buscas una experiencia de edición de copia/pegado de cero, asegúrate de nombrarla de la misma manera. Haz clic en Add (Agregar) cuando hayas terminado.

Agregar variables de entorno a la demostración de ChatGPT de Twilio Voice

A continuación, deberás actualizar nuestras dependencias para incluir el módulo de NPM de OpenAI, de modo que puedas realizar solicitudes a la API de OpenAPI. Haz clic en Dependencies (Dependencias), e ingresa openai en el cuadro de texto Module (Módulo) y 3.3.0 en el cuadro de texto Version (Versión). No olvides hacer clic en Add (Agregar).

Ahora puedes empezar a crear las funciones. Vas a crear dos: /transcribe que hará todo el trabajo pesado desde una perspectiva de reconocimiento de voz y /respond que pasará el texto transcrito a la API de ChatGPT y leerá la respuesta al agente de llamada utilizando una voz de texto a voz neuronal de Amazon Polly.

Haz clic en el botón Add (Agregar) y selecciona Add Function (Agregar función) en el menú desplegable para crear una nueva función y nombrarla /transcribe.

Agregar función a la demostración de ChatGPT de Twilio Voice

Reemplaza el contenido de la nueva función con el fragmento de código que se encuentra aquí y presiona Save (Guardar). La nueva función de fábrica debe verse así cuando termine:

Función de transcripción de la demostración de ChatGPT de Twilio Voice

A continuación, crea otra función y llámala /respond. Reemplaza el contenido de esta nueva función con el fragmento de código que se encuentra aquí y presiona Save (Guardar) nuevamente. Si deseas obtener un recorrido guiado de lo que sucede con precisión en estos ejemplos, consulta la sección de la CLI de esta publicación en la que revisamos el código con mayor detalle.

A continuación, haz clic en el botón Deploy (Implementar). Se implementarán tus funciones guardadas y ahora se pueden utilizar en la configuración del número de teléfono entrante. Haz clic en los tres puntos verticales al lado de /transcribe para seleccionar Copy URL (Copiar URL). Lo necesitaremos en un segundo.

Configuración del número de teléfono de la demostración de ChatGPT de Twilio Voice

En la pestaña Develop (Desarrollar), ve a la sección Phone Numbers (Números de teléfono), luego a Manage (Administrar) y selecciona Active Numbers (Números activos). Una vez que hayas encontrado un número que desees utilizar, desplázate hacia abajo hasta la sección Voice & Fax (Voz y fax) y, en A call comes in (Llamada entrante) selecciona Function (Función). Para Service (Servicio), selecciona el servicio de la función que acabas de crear, que denominamos voice-chatgpt-demo. A continuación, elige la IU para Environment (Entorno) y, por último, selecciona /transcribe para la Function Path (Ruta de la función), ya que aquí es donde tu llamada telefónica debería enrutarse primero.

Ahora, llama al número de teléfono que acabas de configurar para probar todo.

No desmontar

Johnny Five de la película Short Circuit diciendo

Una cosa particularmente genial sobre esta integración es que tanto las entradas como las respuestas están disponibles para ti como desarrollador; el texto de reconocimiento de voz de la persona en forma de parámetro SpeechResult que pasa a la función /respond y las respuestas derivadas de ChatGPT en forma de verbo <Say> (Decir) de TwiML que se ejecuta en las llamadas. Esto significa que estas conversaciones no son cuadros cerrados de inteligencia empresarial y, aunque estas funciones se estén ejecutando en el entorno sin servidor de Twilio, aún puedes echar mano al contenido de la conversación mediante la API de eventos de llamada. A continuación, se explica cómo obtener los detalles mediante la CLI de Twilio:

twilio api:core:calls:events:list --call-sid <The call SID you are interested in> -o json

Mediante esta API, puedes recuperar las solicitudes, las respuestas y los parámetros asociados e introducirlos directamente en tus sistemas internos para hacer cosas como informar a los agentes sobre lo que el agente de llamada ha estado preguntando antes de conectarse o utilizar los datos para decorar los perfiles de tus clientes en una plataforma de datos de clientes como Segment.

Roca robótica

Daft Punk tocando la guitarra eléctrica y la batería en el video musical de la canción Get Lucky.

Publicaciones como McKinsey y Forbes ya están opinando sobre cómo las tecnologías de IA generativa como ChatGPT se pueden utilizar para resolver problemas empresariales, así que ahora que tienes tres robots trabajando para ti, ¿qué puedes hacer con una integración como esta? ¿Qué tal obtener un agente de soporte de escritorio de TI de primera línea? Haz que ChatGPT haga búsquedas en Google para que tu costoso Departamento de TI no tenga que hacerlo y, en caso de que el agente de llamada y ChatGPT no puedan averiguarlo, conecta la llamada a tus agentes. ¿Tienes tiempos de espera prolongados para tus especialistas en servicios de salud? En lugar de ofrecer música de jazz suave a los agentes de llamada, ofréceles la sabiduría de ChatGPT sobre enfermedades comunes no graves mientras esperan.

Resumen

Ahí lo tienes: con la ayuda del reconocimiento de voz de Twilio, Twilio Functions, las voces neuronales de Amazon Polly y la API de OpenAI, ahora has creado tu propio chatbot de voz interactivo. Sin duda, mantente atento a esta área y a los avances en la IA conversacional y las capacidades de chatbot que puedes aprovechar con Twilio.

Michael Carpenter (alias MC) lleva toda su carrera trabajando con la API de telecomunicaciones que lleva haciendo sonar los teléfonos con software desde 2001. Como administrador de productos para Programmable Voice en Twilio, el diagrama de Venn de sus intereses es la intersección de API, SIP, WebRTC y SDK móviles. También sabe mucho sobre Depeche Mode. Comunícate con él mediante mc@twilio.com o LinkedIn.

Una enorme deuda de gratitud a la publicación positiva de Dhruv Patel sobre Cómo llamar a un amigo de la IA usando GPT-3 con Voice y Functions de Twilio. Dhruv también proporcionó una revisión técnica del código en esta publicación. Dhruv Patel es desarrollador en el equipo Developer Voices de Twilio y se lo puede encontrar trabajando en una cafetería con un vaso de cerveza fría, o te puedes comunicar con él mediante dhrpatel@twilio.com o LinkedIn.