Conversaciones de transición de bot a humano

SE APLICA A: SDK v4

Con independencia de cuánta inteligencia artificial posea un bot, todavía podría ser necesario transferir la conversación a un ser humano. Esta transferencia puede ser necesaria porque el bot no entiende al usuario (debido a una limitación de IA) o si la solicitud no se puede automatizar y requiere una acción humana. En tales casos, el bot debe reconocer esta necesidad de transferir la conversación y procurar que la transición sea fácil para el usuario.

Microsoft Bot Framework es una plataforma abierta que permite a los desarrolladores integrarse con varias plataformas de interacción con agentes.

Modelos de integración del traspaso

Microsoft Bot Framework admite dos modelos de integración con plataformas de interacción con agentes. El protocolo de traspaso es idéntico para ambos modelos; sin embargo, los detalles de la incorporación difieren entre los modelos y las plataformas de interacción con agentes.

El objetivo no es ofrecer una solución universal para la integración con el sistema de cualquier cliente, sino más bien proporcionar un lenguaje común y procedimientos recomendados para desarrolladores de bots e integradores de sistemas con los que crear sistemas de IA conversacionales con un humano en el bucle.

Bot como agente

En el primer modelo, conocido como Bot como agente, el bot se conecta a las clasificaciones de los agentes por chat conectados al centro de agentes y responde a las solicitudes del usuario como si las solicitudes provinieran de cualquier otro canal de Bot Framework. La conversación entre el usuario y el bot se puede escalar a un agente humano, momento en el que el bot se desconecta de la conversación activa.

La principal ventaja de este modelo es su simplicidad: un bot existente se puede incorporar al centro de agentes con el mínimo esfuerzo, y el centro de agentes se ocupará de toda la complejidad del enrutamiento de mensajes.

Diagram of an agent hub that can direct messages to a bot or human agents.

Bot como proxy

El segundo modelo se conoce como bot como proxy. El usuario se comunica directamente con el bot, hasta que el bot decide que necesita ayuda de un agente humano. El componente del enrutador de mensajes del bot redirige la conversación al centro de agentes que lo envía al agente adecuado. El bot permanece en el bucle y puede recopilar la transcripción de la conversación, filtrar los mensajes o proporcionar contenido adicional al agente y al usuario.

La flexibilidad y el control son las principales ventajas de este modelo. El bot puede admitir diversos canales y tener control sobre cómo se escalan las conversaciones y se enrutan entre el usuario, el bot y el centro de agentes.

Diagram of a bot that can route messages to an agent hub.

Protocolo de entrega

El protocolo se centra en los eventos para el inicio, enviados por el bot al canal y a la actualización de estado, enviados por el canal al bot.

Iniciación de la transferencia

El bot crea un evento de inicio de transferencia para iniciar la transferencia.

Este evento puede incluir:

  • El contexto de la solicitud de transferencia para enrutar la conversación al agente adecuado.
  • Una transcripción de la conversación, de manera que un agente puede leer la conversación que tuvo lugar entre el cliente y el bot antes de que se iniciara la transferencia.

A continuación se muestran las propiedades comunes del evento de inicio de transferencia:

  • Nombre: obligatorio, la propiedad name debe establecerse en "handoff.initiate".

  • Conversación: obligatorio, la propiedad conversation describe la conversación en el que existe la actividad. La conversación debe incluir la conversación Id.

  • Valor: opcional, la propiedad value puede contener contenido JSON específico del centro de agentes que el centro puede usar para enrutar la conversación a un agente pertinente.

  • Elementos adjuntos: opcional, la propiedad attachments puede incluir una transcripción como un elemento adjunto. Bot Framework define un tipo de elemento adjunto de transcripción. Los elementos adjuntos se pueden enviar insertados (sujetos a un límite de tamaño) o sin conexión, proporcionando ContentUrl.

    handoffEvent.Attachments = new List<Attachment> {
        new Attachment {
            Content = transcript,
            ContentType = "application/json",
            Name = "Transcript",
        }
    };
    

    Nota:

    Los centros de agente deben ignorar los tipos de elementos adjuntos que no reconocen.

Cuando un bot detecta la necesidad de transferir la conversación a un agente, señala su intención mediante el envío de un evento de inicio de transferencia. El SDK para C# incluye un método CreateHandoffInitiation para crear un evento de inicio de transferencia válido.

var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
    EventFactory.CreateHandoffInitiation(
        turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);

Estado de transferencia

El centro del agente envía un evento de estado de transferencia al bot. El evento informa al bot sobre el estado de la operación de transferencia iniciada.

Nota:

Los bots no son necesarios para controlar un evento de estado de transferencia; sin embargo, no deben rechazarlo.

A continuación se muestran los campos de evento de estado de transferencia comunes:

  • Nombre: obligatorio, la propiedad name debe establecerse en "handoff.status".

  • Conversación: obligatorio, la propiedad conversation describe la conversación en el que existe la actividad. La conversación debe incluir la conversación Id.

  • Valor: obligatorio, la propiedad value que describe el estado actual de la operación de transferencia. El valor tiene las siguientes propiedades.

    • Estado: obligatorio, la propiedad state puede tener uno de estos valores:

      Value Significado
      “accepted” Un agente aceptó la solicitud y tomó el control de la conversación.
      “failed” Error en la solicitud de entrega. La propiedad message puede contener información adicional relevante para el error.
      "completed" Se completó la solicitud de transferencia.
    • Mensaje: opcional, la propiedad message es un objeto definido por el centro de agentes.

    Estos son algunos objetos de valor de ejemplo:

    { "state" : "completed" }
    
    { "state" : "failed", "message" : "Can't find agent with requested skill" }
    

Biblioteca de transferencia

La Biblioteca de transferencia se ha creado para complementar el SDK de Bot Framework v4 para admitir la transferencia; en concreto:

  • Implementa las adiciones al SDK de Bot Framework para admitir la transferencia a un agente (también conocido como escalación).
  • Contiene definiciones de tres tipos de eventos para las operaciones de transferencia de señalización.

Nota:

Las integraciones con centros de agentes específicos no forman parte de la biblioteca.

Recursos adicionales