Transição de conversas de bot para humano
APLICA-SE A: SDK v4
Independentemente da quantidade de inteligência artificial que um bot possui, ele ainda pode precisar passar a conversa para um ser humano. Essa transferência pode ser necessária se o bot não entender o usuário (por causa de uma limitação de 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 e fornecer ao usuário uma transição suave.
O Microsoft Bot Framework é uma plataforma aberta que permite que os desenvolvedores se integrem a várias plataformas de envolvimento de agentes.
Modelos de integração Handoff
O Microsoft Bot Framework suporta dois modelos para integração com plataformas de envolvimento de agentes. O protocolo de transferência é idêntico para ambos os modelos, no entanto, os detalhes de integração diferem entre os modelos e as plataformas de envolvimento do agente.
O objetivo não é oferecer uma solução universal para integração com o sistema de qualquer cliente, mas sim fornecer uma linguagem comum e melhores práticas para desenvolvedores de bots e integradores de sistemas com os quais construir sistemas de IA conversacionais com um humano no loop.
Bot como agente
No primeiro modelo, conhecido como bot como agente, o bot se junta às fileiras dos agentes ao vivo 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 escalada para um agente humano, momento em que o bot se desliga da conversa ativa.
A principal vantagem desse modelo é sua simplicidade — você pode adicionar um bot existente ao hub do agente com o mínimo de esforço, e o hub do agente lidará com a complexidade do roteamento de mensagens.
Bot como proxy
O segundo modelo é conhecido como bot como proxy. O usuário fala diretamente com o bot, até que o bot decida que precisa da ajuda de um agente humano. O componente do roteador de mensagens no bot redireciona a conversa para o hub do agente, que a envia para o agente apropriado. O bot permanece no loop e pode coletar a transcrição da conversa, filtrar mensagens ou fornecer conteúdo adicional para o agente e o usuário.
Flexibilidade e controlo são as principais vantagens deste modelo. O bot pode suportar vários canais e ter controle sobre como as conversas são escaladas e roteadas entre o usuário, o bot e o hub do agente.
Protocolo de transferência
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 Handoff
Um evento de iniciação de handoff é criado pelo bot para iniciar o handoff.
O evento pode incluir:
- O contexto da solicitação de transferência, para encaminhar a conversa para um agente apropriado.
- Uma transcrição da conversa, para que um agente possa ler a conversa que ocorreu entre o cliente e o bot antes da transferência ser iniciada.
A seguir estão as propriedades comuns do evento de iniciação de handoff:
Name: Obrigatório, a propriedade name deve ser definida como "handoff.initiate".
Conversação: Obrigatório, a propriedade conversation descreve a conversa na qual a atividade existe. A conversa deve incluir a conversa
Id
.Value: opcional, a propriedade value pode conter conteúdo JSON específico do hub do agente que o hub pode usar para rotear a conversa para um agente relevante.
Anexos: Opcionalmente, a propriedade attachments pode incluir uma transcrição como anexo. O Bot Framework define um tipo de anexo de transcrição . Um anexo pode ser enviado em linha (sujeito a um limite de tamanho) ou offline fornecendo
ContentUrl
.handoffEvent.Attachments = new List<Attachment> { new Attachment { Content = transcript, ContentType = "application/json", Name = "Transcript", } };
Nota
Os hubs de agente devem ignorar os tipos de anexo que não entendem.
Quando um bot deteta a necessidade de entregar a conversa a um agente, ele sinaliza sua intenção enviando um evento de iniciação de entrega.
O SDK para C# inclui um método para criar um CreateHandoffInitiation
evento de iniciação de transferência 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 transferência
Um evento de status de transferência é enviado ao bot pelo hub do agente. O evento informa o bot sobre o status da operação de transferência iniciada.
Nota
Os bots não são obrigados a lidar com um evento de status de transferência, no entanto, eles não devem rejeitá-lo.
A seguir estão os campos comuns do evento de status de transferência:
Nome: Obrigatório, a propriedade name deve ser definida como "handoff.status".
Conversação: Obrigatório, a propriedade conversation descreve a conversa na qual a atividade existe. A conversa deve incluir a conversa
Id
.Value: Required, a propriedade value que descreve o status atual da operação de handoff. O valor tem as seguintes propriedades.
State: Obrigatório, a propriedade state pode ter um destes valores:
Valor Significado "aceito" Um agente aceitou o pedido e assumiu o controle da conversa. "falhou" O pedido de transferência falhou. A propriedade message pode conter informações adicionais relevantes para a falha. "concluído" O pedido de transferência foi concluído. Mensagem: Opcional, a propriedade message é 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 Handoff
A Biblioteca Handoff foi criada para complementar o SDK do Bot Framework v4 no suporte à transferência, especificamente:
- Implementa as adições ao SDK do Bot Framework para dar suporte à transferência para um agente (também conhecido como escalonamento).
- Contém definições de três tipos de eventos para operações de transferência de sinalização.
Nota
As integrações com hubs de agente específicos não fazem parte da biblioteca.