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 no es ofrecer una solución universal para la integración con el sistema de ningún cliente, sino proporcionar un lenguaje común y procedimientos recomendados para desarrolladores de bots e integradores de sistemas que construyen sistemas de inteligencia artificial de conversación con personas 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 iniciación, 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.

Iniciación de entregaHandoff initiation

El bot crea el evento Handoff Initiation 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:

  • Contexto de la solicitud de entrega necesaria para enrutar la conversación al agente correcto.The context of the handoff request that is necessary to route the conversation to the right agent.
  • 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.

Estos son los campos de evento de inicio de 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 campo es un objeto que contiene contenido JSON específico del centro de agentes, como la aptitud value de agente necesaria, y así sucesivamente.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 attachments adjuntos: 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 la transcripción de conversación al centro 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 (sujeto a un límite de tamaño) o sin conexión proporcionando 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 centros de agentes deben omitir los tipos de datos adjuntos que no entienden.Agent hubs must ignore attachment types they don't understand.

  • Conversación: es conversation un campo obligatorio de tipo que describe la conversación que se ConversationAccount está entregando.Conversation - The conversation is a required field of type ConversationAccount describing the conversation being handed over. Fundamentalmente, 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 iniciación de 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 CreateHandoffInitiation superior, como se muestra en el fragmento de código siguiente.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 de agentes envía el evento Handoff Status 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

Los bots no son necesarios para controlar el evento, pero no deben rechazarlo.Bots are not required to handle the event, however they must not reject it.

Estos son los campos de eventos 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: es value 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 necesario y un state campo message opcional, tal como se define a continuación.It is a JSON object containing the required field state and an optional field message, as defined below.

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

  • accepted- Un agente ha aceptado la solicitud y ha tomado 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. puede message contener información adicional relacionada con 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 de entrega correcta:Successful handoff completion:

    { "state" : "completed" }
    
  • Error en 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 Conversation es un campo obligatorio de tipo que describe la conversación que se ha aceptado ConversationAccount o rechazado.Conversation -Conversationis a required field of type ConversationAccount describing the conversation that has been accepted or rejected. El Id de la conversación DEBE ser el mismo que en handoffInitiation que inició la entrega.The Id of the conversation MUST be the same as in the HandoffInitiation that initiated the handoff.

Biblioteca handoffHandoff library

La biblioteca Handoff se ha creado para complementar el SDK Bot Framework v4 en la entrega complementaria; Específicamente:The 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 señalar operaciones de entrega.Contains definitions of three event types for signaling handoff operations.

Nota

Las integraciones con centros de agentes específicos no forman parte de la biblioteca.Integrations with specific agent hubs are not part of the library.

Recursos adicionalesAdditional resources