Fazer a transição de conversas do bot para humanos
APLICA-SE A: SDK v4
Independentemente do nível de inteligência artificial de um bot, ele ainda pode precisar entregar a conversa para um ser humano. Essa entrega pode ser necessária se o bot não entender o usuário (devido a uma limitação da IA) ou se a solicitação não puder ser automatizada e exigir uma ação humana. Nesses casos, o bot deve reconhecer quando precisa entregar a conversa a um ser humano e fornecer ao usuário uma transição tranquila.
O Microsoft Bot Framework é uma plataforma aberta que permite aos desenvolvedores fazer a integração a uma variedade de plataformas de participação do agente.
Modelos de integração de entrega
O Microsoft Bot Framework dá suporte a dois modelos de integração às plataformas de participação do agente. O protocolo de entrega é idêntico para ambos os modelos; no entanto, os detalhes de integração diferem entre os modelos e as plataformas de participação do agente.
O objetivo não é oferecer uma solução universal de integração ao sistema de qualquer cliente, mas sim uma linguagem comum e as melhores práticas para desenvolvedores de bots e integradores de sistemas com os quais construir sistemas de IA de conversação com um ser humano no loop.
Bot como um agente
No primeiro modelo, conhecido como Bot como um agente, o bot une as classificações dos agentes humanos conectados ao hub do agente e responde às solicitações do usuário como se as solicitações viessem de qualquer outro canal do Bot Framework. A conversa entre o usuário e o bot pode ser encaminhada para um agente humano. Nesse ponto o bot se desconecta da conversa ativa.
A principal vantagem desse modelo é a simplicidade: um bot existente pode ser integrado com o mínimo de esforço ao hub do agente que, por sua vez, lidará com toda a complexidade dos roteiros de mensagens.
Bot como um proxy
O segundo modelo é conhecido como bot como um proxy. O usuário se comunica diretamente com o bot, até que o bot decida que precisa da ajuda de um agente humano. O componente de roteador de mensagem no bot redireciona a conversa para o hub do agente, que a expede para o agente apropriado. O bot permanece no loop e pode coletar a transcrição da conversa, filtrar mensagens ou fornecer conteúdo adicional ao agente e ao usuário.
A flexibilidade e o controle são as principais vantagens desse modelo. O bot pode dar suporte a vários canais e ter controle sobre como as conversas são escalonadas e encaminhadas entre o usuário, o bot e o hub do agente.
Protocolo de entrega
O protocolo é centrado em eventos para iniciação, enviados pelo bot para o canal, e atualização de status, enviada pelo canal para o bot.
Iniciação da entrega
Um evento de iniciação de entrega é criado pelo bot para iniciar a entrega.
O evento pode incluir:
- O contexto da solicitação de entrega para encaminhar a conversa para o agente correto.
- Uma transcrição da conversa, para que o agente possa ler a conversa que ocorreu entre o cliente e o bot antes do início da entrega.
Veja a seguir as propriedades comuns de evento de iniciação de entrega:
Nome: obrigatório, a propriedade nome deve ser definida como "handoff.initiate".
Conversa, obrigatória, a propriedade conversa que descreve a conversa na qual ocorre a atividade. A conversa deve incluir a conversa
Id
.Valor: opcional, a propriedade valor pode conter o conteúdo JSON específico para hub do agente que o hub pode usar para encaminhar a conversa para um agente relevante.
Anexos: opcionais, a propriedade anexos pode incluir uma transcrição como anexo. O Bot Framework define um tipo de anexo de transcrição. Um anexo pode ser enviado de modo embutido (sujeito a um limite de tamanho) ou off-line fornecendo
ContentUrl
.handoffEvent.Attachments = new List<Attachment> { new Attachment { Content = transcript, ContentType = "application/json", Name = "Transcript", } };
Observação
Os hubs de agente devem ignorar os tipos de anexo que eles não entendem.
Quando um bot detecta a necessidade de entregar a conversa para um agente, ele sinaliza tal intenção enviando um evento de iniciação de entrega.
O SDK para C# inclui um método CreateHandoffInitiation
para criar um evento válido de iniciação de entrega.
var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
EventFactory.CreateHandoffInitiation(
turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);
Status da entrega
Um evento de status da entrega é enviado ao bot pelo hub do agente. O evento informa o bot sobre o status da operação de entrega iniciada.
Observação
Os bots não são obrigados a lidar com um evento de status de entrega. No entanto, eles não devem rejeitá-lo.
Veja a seguir os campos comuns de evento de status de entrega:
Nome: obrigatório, a propriedade nome deve ser definida como "handoff.status".
Conversa, obrigatória, a propriedade conversa que descreve a conversa na qual ocorre a atividade. A conversa deve incluir a conversa
Id
.Valor, obrigatório, é a propriedade valor que descreve o status atual da operação de entrega. O valor tem as propriedades a seguir.
Estado: obrigatório, a propriedade estado pode ter um destes valores:
Valor Significado “aceito” Um agente aceitou a solicitação e assumiu o controle da conversa. “falhou” A solicitação de entrega falhou. A propriedade mensagem pode conter informações adicionais relevantes sobre a falha. “concluído” A solicitação de entrega foi concluída. Mensagem: opcional, a propriedade mensagem é um objeto definido pelo hub do agente.
Aqui estão alguns exemplos de objetos de valor:
{ "state" : "completed" }
{ "state" : "failed", "message" : "Can't find agent with requested skill" }
Biblioteca de entregas
A Biblioteca de entregas foi criada para complementar o SDK do Bot Framework v4 especificamente no suporte à entrega:
- Implementa as adições ao SDK do Bot Framework para oferecer suporte à entrega para um agente (também conhecido como escalonamento).
- Contém definições de três tipos de eventos para operações de entrega de sinalização.
Observação
As integrações com hubs de agente específicos não fazem parte da biblioteca.