Añadir un susurro de llamada a una llamada entrante

Numbers are everywhere in advertising: on billboards, in TV ads, on websites, in newspapers. A menudo estos Numbers a un mismo centro de llamadas, donde un agente tiene que preguntar por qué llama la persona y dónde vio el anuncio. el anuncio.

Mediante los susurros de llamada, el contexto de la llamada entrante se anuncia al operador del centro de llamadas antes de ser conectado a la persona que llama. Esta guía mostrará una aplicación que implementa este enfoque. Un usuario llamará a uno de dos números. La aplicación responde a la llamada y la persona que llama escucha un mensaje de espera. Mientras tanto, la aplicación también hace una llamada a la operativa del centro de llamadas, reproduce un susurro de llamada diferente en función del número que se haya marcado y, a continuación, conecta a la operativa a la conferencia con la operativa del centro de llamadas. a la conferencia con la persona que llama.

Los ejemplos están escritos en node.js con express, y puedes encontrar el código en GitHub.

En esta guía

Usted verá cómo construir añadir un Call Whisper a una llamada entrante:

  • Cómo funciona - una visión general de quién llama a quién y cómo fluye el proceso a lo largo de la aplicación de ejemplo.
  • Antes de empezar - configure la aplicación y los números necesarios para esta guía.
  • Introducción al código - clonar el repositorio y poner en marcha la aplicación.
  • Guía de códigos - profundizar en los pormenores del funcionamiento de la aplicación.
  • Más información - Echa un vistazo a otros recursos que podrían resultarte útiles.

Cómo funciona

Antes de empezar

Antes de ponernos manos a la obra con el código, hay algunas cosas que debemos hacer primero.

Regístrate en Vonage

Regístrate para obtener un Account de la API de Vonage si aún no tiene uno.

Configurar la CLI

Esta guía utiliza el Herramienta de línea de comandos de VonageCompruebe que está instalado antes de continuar.

Crear una aplicación de voz

Utilice la CLI para crear una aplicación Voice API con el comando webhooks que se encargará de contestar una llamada a tu número de Vonage (/webhooks/voice/answer) y el registro de eventos de llamadas (/webhooks/voice/event), respectivamente.

Estos webhooks deben ser accesibles por los servidores de Vonage, por lo que en esta guía utilizarás ngrok para exponer su entorno de desarrollo local a la Internet pública. Este artículo explica cómo instalar y ejecutar ngrok y configura Vonage para enviar solicitudes.

Si no tienes una aplicación, puedes crear una mediante la CLI

vonage apps create 'Your application'

✅ Creating Application
Saving private key ... Done!
Application created

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
  None Enabled
vonage apps create 'Your application'

✅ Creating Application
Saving private key ... Done!
Application created

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
  None Enabled
vonage apps create 'Your application' ✅ Creating Application Saving private key ... Done! Application created Name: Your application Application ID: 00000000-0000-0000-0000-000000000000 Improve AI: Off Private/Public Key: Set Capabilities: None Enabled

El comando devuelve un ID de aplicación (que debes anotar) y la información de tu clave privada (que puedes ignorar sin problema a efectos de esta guía).

Correr ngrok utilizando el siguiente comando:

ngrok http 3000

Anote el nombre de host temporal que ngrok y utilizarlo en lugar de example.com en el siguiente comando:

vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice `
  --voice-answer-url='https://example.com/webhooks/voice/answer' `
  --voice-event-url='https://example.com/webhooks/voice/event' `
  --voice-fallback-url='https://example.com/webhooks/voice/fallback'
  
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
 VOICE:
    Uses Signed callbacks: On
    Conversation TTL: 41 hours
    Leg Persistence Time: 6 days
    Event URL: [POST] https://example.com/webhooks/voice/event
    Answer URL: [POST] https://example.com/webhooks/voice/answer
    Fallback URL: [POST] https://example.com/webhooks/voice/fallback
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice ^
  --voice-answer-url='https://example.com/webhooks/voice/answer' ^
  --voice-event-url='https://example.com/webhooks/voice/event' ^
  --voice-fallback-url='https://example.com/webhooks/voice/fallback'
  
✅ Fetching Application
✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000

Name: Your application
Application ID: 00000000-0000-0000-0000-000000000000
Improve AI: Off
Private/Public Key: Set

Capabilities:
 VOICE:
    Uses Signed callbacks: On
    Conversation TTL: 41 hours
    Leg Persistence Time: 6 days
    Event URL: [POST] https://example.com/webhooks/voice/event
    Answer URL: [POST] https://example.com/webhooks/voice/answer
    Fallback URL: [POST] https://example.com/webhooks/voice/fallback
vonage apps capabilities update 00000000-0000-0000-0000-000000000000 voice \ --voice-answer-url='https://example.com/webhooks/voice/answer' \ --voice-event-url='https://example.com/webhooks/voice/event' \ --voice-fallback-url='https://example.com/webhooks/voice/fallback' ✅ Fetching Application ✅ Adding voice capability to application 00000000-0000-0000-0000-000000000000 Name: Your application Application ID: 00000000-0000-0000-0000-000000000000 Improve AI: Off Private/Public Key: Set Capabilities: VOICE: Uses Signed callbacks: On Conversation TTL: 41 hours Leg Persistence Time: 6 days Event URL: [POST] https://example.com/webhooks/voice/event Answer URL: [POST] https://example.com/webhooks/voice/answer Fallback URL: [POST] https://example.com/webhooks/voice/fallback

Comprar un número de teléfono

Para gestionar las llamadas entrantes a tu aplicación, necesitas un número de Vonage. Si ya dispones de un número, pasa a la siguiente sección para asociar ese número a tu aplicación.

Puedes utilizar el CLI de Vonage para comprar el número de teléfono:

Buscar un número

Puedes comprar un número mediante la CLI de Vonage. El siguiente comando busca un número para comprarlo (especifica un código de país alternativo de dos caracteres comprar un número en otro país).

vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE  €0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US

✅ Searching for numbers

There is 1 number available for purchase in United States

Number       Type    Features         Monthly Cost  Setup Cost
-----------  ------  ---------------  ------------  ----------
16127779311  Mobile  MMS, SMS, VOICE0.900.00

Use vonage numbers buy to purchase.
vonage numbers search US ✅ Searching for numbers There is 1 number available for purchase in United States Number Type Features Monthly Cost Setup Cost ----------- ------ --------------- ------------ ---------- 16127779311 Mobile MMS, SMS, VOICE €0.90 €0.00 Use vonage numbers buy to purchase.

Comprar un número

Una vez que haya encontrado un número que le satisfaga, puede comprarlo utilizando el botón vonage numbers buy comando:

vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 
✅ Searching for numbers
Are you sure you want to purchase the number 16127779311 for0.90? [y/n] y

✅ Purchasing number
Number 16127779311 purchased

Number: 16127779311 
Country: 🇺🇸 United States
Type: Mobile
Features: MMS, SMS, VOICE
Monthly Cost: €0.90
Setup Cost: €0.00
Linked Application ID: Not linked to any application
Voice Callback: Not Set
Voice Callback Value: Not Set
Voice Status Callback: Not Set
vonage numbers buy US 16127779311 ✅ Searching for numbers Are you sure you want to purchase the number 16127779311 for €0.90? [y/n] y ✅ Purchasing number Number 16127779311 purchased Number: 16127779311 Country: 🇺🇸 United States Type: Mobile Features: MMS, SMS, VOICE Monthly Cost: €0.90 Setup Cost: €0.00 Linked Application ID: Not linked to any application Voice Callback: Not Set Voice Callback Value: Not Set Voice Status Callback: Not Set

Nota Para seguir esta guía, necesitarás dos números

Introducción al código

El código de este proyecto está en GitHub. Se trata de un proyecto de Node.js que utiliza Express y cuyo objetivo es ofrecerte un ejemplo práctico que luego puedas adaptar a tus propias necesidades.

Clona el repositorio

Clona o descarga el repositorio en tu ordenador, en un directorio nuevo.

Configurar los ajustes

Tu aplicación necesitará saber más sobre ti y tu aplicación antes de poder ejecutarse. Copie la .env-example archivo a .env y edite este nuevo archivo para reflejar la configuración que desea utilizar:

  • CALL_CENTER_NUMBER: El número de teléfono en el que se puede contactar con el operador del centro de atención telefónica, como tu número de móvil
  • INBOUND_NUMBER_1: Uno de los números que has comprado
  • INBOUND_NUMBER_2: El otro número que ha comprado
  • DOMAIN: El nombre de dominio donde se ejecutará tu aplicación, por ejemplo el mío es: ff7b398a.ngrok.io

Instala las dependencias

En el directorio donde descargaste el código, ejecuta npm install. Esto instala Express y otras dependencias necesarias para este proyecto.

Iniciar el servidor

Con la configuración hecha y las dependencias en su lugar, ¡tu aplicación está lista para funcionar! Ejecútala con:

npm start

Por defecto, la aplicación se ejecuta en el puerto 3000. Si vas a utilizar ngrokya puedes empezar tu túnel.

Cuando cambie el nombre del túnel ngrok, recuerde actualizar las direcciones URL de su aplicación con la función vonage apps capabilities update mando.

Pruébalo

Probemos la demostración. Para ello, necesitas dos teléfonos (uno que haga de «llamante» y otro que haga de «operador del centro de llamadas»), así que quizá tengas que pedirle a un amigo que te ayude o utilizar Skype para hacer la primera llamada.

  1. Llama a uno de los Numbers que has comprado.
  2. La persona que llama escuchará un mensaje de bienvenida y, a continuación, sonará el número de teléfono del operador del centro de llamadas.
  3. Cuando el operador del centro de atención telefónica responda, escuchará el mensaje «susurrado» antes de que se le conecte con la persona que ha llamado.
  4. Ahora inténtalo de nuevo pero llama al otro número y escucha el "susurro" diferente.

Guía de códigos

La demo es divertida, pero si usted está interesado en la construcción de este usted mismo, entonces hay algunos puntos clave que usted probablemente quieras ver. Esta sección examina las secciones clave del código para cada paso del proceso para que puedas encontrar dónde tienen lugar las cosas y puedas adaptar esta aplicación a tus necesidades.

Responde a la llamada entrante e inicia una llamada saliente

Cada vez que alguien llame a uno de los números vinculados a la aplicación de Vonage, Vonage recibirá una llamada entrante entrante. Vonage notificará a tu aplicación web sobre esa llamada. Para ello, realizará una solicitud de webhook a tu aplicación web answer_url en este caso caso /answer. Cuando se responde a la llamada, la aplicación conecta a esa persona con el operador del centro de llamadas.

lib/rutas.js

app.get('/webhooks/voice/answer', (req, res) => {
  const  answer_url = 'http://'+process.env['DOMAIN']+'/on-answer'
  console.log(answer_url);

  res.json([
    {
      "action": "talk",
      "text": "Thanks for calling. Please wait while we connect you"
    },
    {
      "action": "connect",
      "from": req.query.to,
      "endpoint": [{
        "type": "phone",
        "number": process.env['CALL_CENTER_NUMBER'],
        "onAnswer": {"url": answer_url}
      }]
    }
  ]);
});

Nota: Eche un vistazo al Referencia de Voice API Para más información.

La respuesta que devolvemos es una matriz de NCCO (Objetos de control de llamadas Nexmo). El primero es el mensaje hablado que escucha la persona que llama; el segundo conecta con la otra persona que llama y especifica qué URL debe utilizarse cuando esa persona responde a la llamada.

Reproduce un «Whisper» y conecta la llamada

Cuando el operador del centro de llamadas contesta la llamada, el onAnswer Se utiliza la URL; en nuestra aplicación, esa es la /on-answer punto final. Este es el código que comprueba qué número se ha marcado y determina qué mensaje se debe reproducir.

lib/rutas.js

// Define the topics for the inbound numbers
const topics = {}
topics[process.env['INBOUND_NUMBER_1']] = 'the summer offer';
topics[process.env['INBOUND_NUMBER_2']] = 'the winter offer';

Cuando se conecte la llamada, reproduzca un susurro de llamada al agente mediante el botón talk El personal de NCCO les informa de a qué campaña publicitaria se refiere la llamada, antes de ponerles en contacto con la persona que espera en la conferencia.

lib/rutas.js

app.get('/on-answer', function(req, res) {
  // we determine the topic of the call based on the inbound call number
  const topic = topics[req.query.from]
  res.json([
    // We first play back a little message telling the call center operator what
    // the call relates to. This "whisper" can only be heard by the call center operator
    {
      "action": "talk",
      "text": "Incoming call regarding "+topic
    }
  ]);
});

Aquí hay muchas posibilidades que pueden ayudarte a personalizar los susurros. Puede pasar el número de la persona que llama con el botón url en on-answer y buscarlos, lo que le permitirá saludarlos por su nombre o proporcionarles alguna otra información. Las posibilidades son infinitas, pero esperamos que esta guía le ofrezca un ejemplo práctico que pueda utilizar y personalizar. personalizar.

Más información

  • GitHub contiene todo el código de esta aplicación de ejemplo.
  • Consulte nuestro Guías vocales para descubrir más cosas que puedes hacer con la voz.
  • El Referencia de la Voice API tiene documentación detallada para cada punto final.