Conversaciones de transición de bot a humanoTransition conversations from bot to human

se aplica a: SDK V4APPLIES TO: SDK v4

Con independencia de cuánta inteligencia artificial posea un bot, todavía puede haber ocasiones en que sea necesario pasar la conversación a un ser humano.Regardless of how much artificial intelligence a bot possesses, there may still be times when it needs to hand off the conversation to a human being. Esto puede que sea necesario 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.This can be necessary either because the bot does not understand the user (because of an AI limitation), or if the request cannot be automated and requires a human action. En tales casos, el bot debe reconocer esta necesidad y proporcionar al usuario una transición sin interrupción.In such cases the bot should recognize when it needs to hand off and provide the user with a smooth transition.

Microsoft Bot Framework es una plataforma abierta que permite a los desarrolladores integrarse con varias plataformas de interacción con agentes.Microsoft Bot Framework is an open platform that allows developers to integrate with a variety of agent engagement platforms.

Modelos de integración del traspasoHandoff integration models

Microsoft Bot Framework admite dos modelos de integración con plataformas de interacción con agentes.Microsoft Bot Framework supports two models for integration with agent engagement platforms. 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.The handoff protocol is identical for both models, however the onboarding details differ between the models and the agent engagement platforms.

El objetivo es no ofrecer una solución universal para la integración con el sistema de un cliente, sino que para proporcionar un lenguaje común y prácticas recomendadas para que los desarrolladores de bot e integradores de sistemas creen sistemas de inteligencia artificial con la intervención humana en el bucle.The goal is not to offer a universal solution for integration with any customer's system, but rather to provide a common language and best practices for bot developers and system integrators building conversational AI systems with human in the loop.

Bot como agenteBot as an agent

En el primer modelo, conocido como "Bot como agente", el bot se conecta a las clasificaciones de los agentes activos conectados al centro de agentes y responde a las solicitudes del usuario como si las solicitudes provinieran de cualquier otro canal de Bot Framework.In the first model, known as "Bot as an agent", the bot joins the ranks of the live agents connected to the agent hub and responds to user requests as if the requests came from any other Bot Framework channel. 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.The conversation between the user and the bot can be escalated to a human agent, at which point the bot disengages from the active conversation.

La principal ventaja de este modelo es su simplicidad: un bot existente se puede incorporar al centro de agentes con el mínimo esfuerzo ya que el centro de agentes se ocupará de toda la complejidad del enrutamiento de mensajes.The main advantage of this mode is in its simplicity – an existing bot can be onboarded to the agent hub with minimal effort, with all of the complexity of message routing taken care of by the agent hub.

Escenario de bot como agente

Bot como proxyBot as a proxy

El segundo modelo se conoce como "Bot como proxy".The second model is known as "Bot as a proxy". El usuario se comunica directamente con el bot, hasta que el bot decide que necesita ayuda de un agente humano.The user talks directly to the bot, until the bot decides that it needs help from a human agent. El componente del enrutador de mensajes del bot redirige la conversación al centro de agentes que lo envía al agente adecuado.The message router component in the bot redirects the conversation to the agent hub, which dispatches it to the appropriate agent. 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.The bot stays in the loop and can collect the transcript of the conversation, filter messages, or provide additional content to both the agent and the user.

La flexibilidad y el control son las principales ventajas de este modelo.Flexibility and control are the main advantages of this model. 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.The bot can support a variety of channels and have control over how the conversations are escalated and routed between the user, the bot, and the agent hub.

Escenario de bot como proxy

Protocolo de entregaHandoff protocol

El protocolo se centra en los eventos de inicio, enviados por el bot al canal y la actualización de estado, enviados por el canal al bot.The protocol is centered around events for initiation, sent by the bot to the channel, and status update, sent by the channel to the bot.

Inicio de la entregaHandoff initiation

El bot crea el evento de inicio de la entrega para iniciar la entrega.The Handoff Initiation event is created by the bot to initiate handoff.

El evento contiene dos componentes:The event contains two components:

  • El contexto de la solicitud de entrega que es necesario para enrutar la conversación al agente adecuado.The context of the handoff request that is necessary to route the conversation to the right agent.
  • La transcripción de la conversación.The transcript of the conversation. El agente puede leer la conversación que tuvo lugar entre el cliente y el bot antes de que se iniciara el traspaso.The agent can read the conversation that took place between the customer and the bot before the handoff was initiated.

Los siguientes son los campos de evento de inicio de la entrega:The following are the handoff initiation event fields:

  • Nombre : name es un campo obligatorio que se establece en "handoff.initiate" .Name - The name is a required field that is set to "handoff.initiate".

  • Valor : el value campo es un objeto que contiene contenido JSON específico del concentrador del agente, como la habilidad necesaria del agente, etc.Value - The value field is an object containing agent hub-specific JSON content, such as required agent skill and so on. Este campo es opcional.This field is optional.

    { "Skill" : "credit cards" }
    
  • Datos adjuntos : attachments es un campo opcional que contiene la lista de Attachment objetos.Attachments - The attachments is an optional field containing the list of Attachment objects. Bot Framework define el tipo de datos adjuntos "transcripción" que se usa para enviar transcripción de conversación a la central del agente, si es necesario.Bot Framework defines the "Transcript" attachment type that is used to send conversation transcript to the agent hub if required. Los datos adjuntos se pueden enviar en línea (de acuerdo con un límite de tamaño) o sin conexión. para ello, proporcione ContentUrl .Attachments can be sent either inline (subject to a size limit) or offline by providing ContentUrl.

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

    Nota

    Los concentradores de agente deben omitir los tipos de datos adjuntos que no entienden.Agent hubs must ignore attachment types they don't understand.

  • Conversación : conversation es un campo obligatorio de tipo ConversationAccount que describe la conversación que se va a entregar.Conversation - The conversation is a required field of type ConversationAccount describing the conversation being handed over. De forma crítica, debe incluir la conversación Id que se puede usar para la correlación con los demás eventos.Critically, it MUST include the conversation Id that can be used for correlation with the other events.

Cuando un bot detecta la necesidad de entregar la conversación a un agente, señala su intención mediante el envío de un evento de inicio de la entrega.When a bot detects the need to hand the conversation off to an agent, it signals its intent by sending a handoff initiation event. En C#, se puede usar un método de API de nivel superior CreateHandoffInitiation como se muestra en el siguiente fragmento de código.In C# an higher level API CreateHandoffInitiation method can be used as demonstrated in the code snippet below.

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

Estado de entregaHandoff status

El centro del agente envía el evento de Estado de entrega al bot.The Handoff Status event is sent to the bot by the agent hub. El evento informa al bot sobre el estado de la operación de entrega iniciada.The event informs the bot about the status of the initiated handoff operation.

Nota

No es necesario que los bots controlen el evento, pero no deben rechazarlos.Bots are not required to handle the event, however they must not reject it.

Los siguientes son los campos de evento de estado de entrega:The following are the handoff status event fields:

  • Nombre : name es un campo obligatorio que se establece en "handoff.status" .Name - The name is a required field that is set to "handoff.status".

  • Valor : value es un campo obligatorio que describe el estado actual de la operación de entrega.Value - The value is a required field describing the current status of the handoff operation. Es un objeto JSON que contiene el campo obligatorio state y un campo opcional message , tal y como se define a continuación.It is a JSON object containing the required field state and an optional field message, as defined below.

stateTiene uno de los siguientes valores:The state has one of the following values:

  • accepted-Un agente aceptó la solicitud y tomó el control de la conversación.accepted- An agent has accepted the request and taken control of the conversation.
  • failed-Error en la solicitud de entrega.failed- Handoff request has failed. messagePuede contener información adicional relevante para el error.The message might contain additional information relevant to the failure.
  • completed -Se ha completado la solicitud de entrega.completed - Handoff request has completed.

El formato y el valor posible del message campo no están especificados.The format and possible value of the message field are unspecified.

  • Finalización correcta de la entrega:Successful handoff completion:

    { "state" : "completed" }
    
  • No se pudo realizar la operación de entrega debido a un tiempo de espera:Handoff operation failed due to a timeout:

    { "state" : "failed", "message" : "Cannot find agent with requested skill" }
    
  • Conversación de - Conversation es un campo obligatorio de tipo ConversationAccount que describe la conversación que se ha aceptado o rechazado.Conversation -Conversationis a required field of type ConversationAccount describing the conversation that has been accepted or rejected. La Id de la conversación debe ser la misma que en el HandoffInitiation que inició la entrega.The Id of the conversation MUST be the same as in the HandoffInitiation that initiated the handoff.

Biblioteca de entregaHandoff library

La biblioteca de entrega se ha creado para complementar el SDK de bot Framework V4 para admitir la entrega. maneraThe Handoff Library has been created to complement the Bot Framework v4 SDK in supporting handoff; specifically:

  • Implementa las adiciones al SDK de bot Framework para admitir la entrega a un agente (también conocido como extensión).Implements the additions to the Bot Framework SDK to support handoff to an agent (also known as escalation.
  • Contiene definiciones de tres tipos de eventos para la señalización de operaciones de entrega.Contains definitions of three event types for signaling handoff operations.

Nota

Las integraciones con concentradores de agente específico no forman parte de la biblioteca.Integrations with specific agent hubs are not part of the library.

Recursos adicionalesAdditional resources