https://d226lax1qjow5r.cloudfront.net/blog/blogposts/best-practices-for-contact-center-with-vonage-voice-api-and-client-sdk/best_practices_contact_center.png

Mejores prácticas para centros de contacto con Vonage Voice API y Client SDK

Publicado el May 9, 2023

Tiempo de lectura: 5 minutos

Introducción

Queremos destacar algunas cosas importantes sobre la creación de un centro de contacto con las API de Vonage que podrían mejorar el rendimiento y la experiencia del usuario.

Tiempo de respuesta de los Webhooks para NCCO

NCCO (Objeto de Control de Llamada) se utiliza para controlar el flujo de una Voice API de voz. Cuando uses NCCO para enrutar las llamadas entrantes a tu centro de contacto, ten en cuenta el tiempo de respuesta de la URL de respuesta de tu aplicación de Vonage, ya que es fundamental para brindar la mejor experiencia al cliente. Si tu punto final de webhook tarda mucho tiempo en devolver una NCCO, por ejemplo, 4 segundos, tu cliente que llama no podrá escuchar nada excepto silencio durante esos 4 segundos.

En el punto final de la URL de respuesta, si el servidor de su aplicación necesita tiempo para realizar algunas consultas que consumen tiempo, puede considerar devolver primero un valor acción 'talk or stream para que la persona que llama sepa que la llamada está conectada y, a continuación, utilizar la acción Modificar una llamada en curso para actualizar la llamada después de haber realizado las consultas necesarias, como encontrar un agente disponible o poner una llamada en cola.

Lo mismo debería aplicarse a todas las URL de eventos de las acciones NCCO que se espera que devuelvan un NCCO, como por ejemplo entrada, conectar (cuando el tipo de evento es síncrono), y notificar. Estas acciones son síncronas, lo que significa que sus siguientes acciones tienen que esperar a que se completen. Por lo tanto, en sus URLs de eventos, usted quiere responder con una NCCO (o respuesta vacía) tan rápido como sea posible para evitar mantener a su cliente en la oscuridad esperando.

Al configurar su aplicación, observará que la dirección URL de reservaque es la URL de reserva donde las API de Vonage intentan recuperar la NCCO cuando tu URL de respuesta o evento es inalcanzable o devuelve ciertos códigos de error HTTP. Es bueno configurar algún manejo predeterminado (como el registro y la devolución de una NCCO predeterminada), ya que las llamadas se interrumpirán si no se devuelve ninguna NCCO.

La configuración predeterminada del tiempo de espera para la URL de respuestas y eventos es de 5 segundos; puedes cambiarla en el panel para desarrolladores de Vonage si es necesario.

¿Desea obtener más información sobre Voice API y NCCO? Voice API y NCCO.

Cola, transferencia y registro

Cola, Transferencia y Registro son funciones esenciales de un centro de contacto que ayudan a gestionar las llamadas de los clientes de forma eficaz. El sitio Cola permite a los clientes esperar en línea hasta que un representante esté disponible, mientras que Transferencia permite a los agentes transferir llamadas a otros agentes. Grabarpermite grabar las llamadas.

Con la acción NCCO conversación, Voice APIy Conversation APIpuede implementar fácilmente Cola y Transferencia para gestionar y transferir llamadas en espera. Tenemos formas fáciles de usar para implementar Grabación de llamadas y también tenemos Conversation API para cuando necesites funciones complejas como Grabación dividida.

Al implementarlos con la API de Vonage, es crucial diferenciar el uuid y uuid_conversación en webhooks de eventos y asócialos correctamente en el servidor de tu aplicación con los eventos de transferencia y grabación, especialmente cuando las llamadas son transferidas de conversación a conversación, y desea grabar todo.

Cuando una llamada (también denominada tramo o tramo de llamada en la Conversation API, véase más información en) se crea usando la Voice API, es decir, cuando una llamada entrante llega a la plataforma de Vonage, o Vonage ha recibido tu solicitud para realizar una llamada salientese le asigna un identificador único - uuid - y se agrega a una conversación (identificada con uuid_conversación). El uuid permanece igual hasta que se completa la llamada, pero uuid_conversación cambia cuando se produce una transferencia en la llamada mientras la grabación está vinculada a una conversación.

Cuando se produce una transferencia, es decir, cuando la acción "conversación"o se ejecuta una solicitud de transferencia se completarecibirá un webhook de transferencia (ver más):

{
  "conversation_uuid_from": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "type": "transfer",
  "uuid": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "conversation_uuid_to": "CON-aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
  "timestamp": "2023-04-12T07:26:42.775720Z"
}

Se sugiere almacenar ambos conversation_uuid_from y conversation_uuid_to si tienes la grabación activada para cada conversación, ya que recibirías un evento de grabación para cada conversación.

Por ejemplo, la siguiente OCN:

[
  {
      "action": "record"
  },
  {
      "action": "talk",
      "text": "You are joining a conference that was created using Vonage's Voice API."
  },
  {
      "action": "conversation",
      "record": true,
      "name": "vonage-conference-abc",
  }
]

Hay una acción de grabación y una acción de conversación con la opción de grabación establecida en true, por lo que recibirás un webhook de evento de transferencia y dos webhooks de evento de grabación:

  • Un evento de grabación para la conversación desde la que se transfirió la llamada (UID_conversación_desde).

  • Otro evento de grabación para la conversación a la que se acaba de añadir la llamada (conversación_uuid_to).

Por lo tanto, es vital asociarlas con los ID correctos para realizar un seguimiento de cada grabación y cada transferencia. No querrás preguntarte más tarde de qué llamada tratan las grabaciones si no guardas todos los conversation_uuid.

Cómo grabar a cada participante en un canal independiente

Grabación dividida hará que la grabación sea un archivo estéreo con un canal con el audio enviado desde la persona que llama y otro canal con el audio escuchado por la persona que llama.

Para añadir Split Recording en tu aplicación, dependiendo de si se trata de una conversación creada con NCCO action connect o NCCO action conversation, puedes elegir:

  • Cuando utilice la acción de conectar, establezca la acción NCCO registrar:

{
  "action": "record",
  "split": "conversation", 
  "channels": 3,//the number of channels to record (maximum 32)
  "format": "wav",
}, 
{
  "action": "connect", ... }

cuando comience la conversación, envía una petición a recordConversation con el cuerpo de la solicitud:

{
   "action": "start",
   "split": "conversation",
   "format": "wav",
   "channels": 3
}

Más sobre grabación

Si sus conversaciones se crean con la acción NCCO connect, le recomendamos encarecidamente que se asegure de almacenar todos los eventos de voz webhook ya que Voice API no los almacenará, especialmente para los eventos de grabación (que tienen url de grabación) que necesitará más tarde para bajar la grabación.

Aunque cuando se crean conferencias con la conversación de acción, hay una manera de recuperar los eventos de grabación que faltan con este Conversation API v0.2 eventos].

Por fin,

Aparte de actualizar regularmente el Client SDK a la última versión, su aplicación se beneficiaría de la implementación de la captura y registro de errores.

Por ejemplo, si el botón "responder" de su centro de contacto no puede conectar la llamada, sería útil lanzar un error y enviarlo a su plataforma de registro de errores con toda la información posible sobre el navegador del usuario, el SO, call_uuid, uid_conversiónetc. Esto proporciona más contexto sobre el impacto del problema y la posible causa al depurar.

try {
  app.on("member:call", (member, call) => {
    // Answer the call.
    $( "#answer" ).click((e) => {
      call.answer().then().catch(error => {
        // Send the error to your error logging platform with additional information
        logError({
          message: 'Failed to answer the call',
          data: [
            member.id,
            member.conversation.id,
            call.id,
          ],
          extra: [
            `Browser: ${navigator.userAgent}`,
            `OS: ${navigator.platform}`
          ]
        });
      });
    });
} catch (error) {
  logError({
    message: `Error: ${error.message}`,
    extra: [
      `Browser: ${navigator.userAgent}`,
      `OS: ${navigator.platform}`
    ]
  });
}

Resumen

Para crear un centro de contacto eficaz con las API de Vonage, se recomienda encarecidamente supervisar el tiempo de respuesta de los webhooks de NCCO (debes habilitar el registro del servidor para monitorear el tiempo de respuesta de las solicitudes HTTP) y asegurarte de que la URL de retorno esté configurada para devolver una NCCO de retorno (configúrala en Panel del cliente de Vonage). También es importante asociar correctamente call uuid y uuid_conversación (más información sobre los conceptos utilizados en Conversation API) en webhooks de eventos para implementar funciones como Queue, Transfer y Record. Por último, implementar la captura y el registro de errores te ayudará a depurar la aplicación creada con el Vonage Client SDK.

Si tienes preguntas o comentarios, únete a nosotros en el Slack para desarrolladores de Vonage.

Compartir:

https://a.storyblok.com/f/270183/400x346/e25af61dbc/yinping-ge.png
Yinping Ge

Customer Solutions Engineer at Vonage