Configurar a entrega a hubs de interação genéricos
Copilot Studio permite que você transfira conversas agente de forma integrada e contextual para um humano agente por meio de um hub de engajamento.
Com algum desenvolvimento personalizado, você pode configurar seu agente para transferir conversas para qualquer hub de engajamento. Este guia descreve como fazer isso.
Pré-requisitos
- Você precisa ter construído um agente usando Copilot Studio.
- Você precisa de um hub de participação que possa interagir programaticamente usando APIs ou SDK.
Importante
Algumas instruções nesta seção exigem o desenvolvimento de software de sua parte ou de seus desenvolvedores. Ele se destina a profissionais de TI experientes, como administradores ou desenvolvedores de TI, que possuem um sólido conhecimento de utilitários, IDEs e ferramentas para desenvolvedores, e que desejam integrar hubs de interação de terceiros ao Copilot Studio.
Visão Geral
Uma entrega completa para um hub de interação segue este padrão:
Um usuário final interage com a tela de conversa do hub de interação.
O hub de engajamento encaminha o bate-papo recebido por meio de recursos de roteamento de bate-papo integrados para um agente.
Um adaptador personalizado retransmite as mensagens de bate-papo recebidas do hub de engajamento para um Copilot Studio agente.
Quando o usuário final dispara a entrega, o Copilot Studio inicia a entrega com o contexto conversacional completo.
O adaptador personalizado intercepta a mensagem de entrega, analisa o contexto completo da conversa e roteia diretamente a conversa escalada para um agente humano qualificado, com base na disponibilidade.
A conversa do usuário final é transmitida sem interrupções e com contexto a um agente humano, que pode retomar a conversa.
Para entregar a conversa a um agente humano, você precisa criar um adaptador de transferência personalizado.
Criar um adaptador de entrega personalizado
Um adaptador conecta conversas de e para seu hub de engajamento agente, retransmitindo e transformando mensagens entre usuários finais, agentes e agentes humanos.
Os hubs de interação mais populares do agente fornecem kits de desenvolvimento de software (SDKs) ou documentam suas APIs publicamente, permitindo que você crie esses adaptadores.
Está fora do escopo deste documento tratar o que um adaptador personalizado pode conter. No entanto, a seguinte mensagem de entrega de exemplo, com base no que o Copilot Studio gera como parte de nossa entrega padrão para uma experiência de agente humano, pode ajudá-lo a começar.
Esses trechos de código e exemplos permitem que você extraia o contexto da conversa para transferir conversas agente de forma integrada e contextual para qualquer hub de engajamento genérico.
Conteúdo de mensagem de exemplo de entrega
A entrega tem suporte atualmente somente pelo Direct Line. Saiba mais sobre como interagir com um agente Direct Line. Na entrega, uma atividade de evento chamada handoff.initiate
é gerada e enviada ao adaptador.
Você pode ver um exemplo completo da atividade de entrega de mensagens em nosso site do GitHub.
Extrair contexto da mensagem de entrega
Para usar o contexto conversacional, você deve analisar a atividade do evento handoff.initiate
.
O trecho de código a seguir analisa a atividade do evento handoff.initiate
e extrai o contexto conversacional. Consulte o exemplo de código completo no GitHub.
public void InitiateHandoff(string botresponseJson)
{
BotResponse response = JsonConvert.DeserializeObject<BotResponse>(botresponseJson);
// Look for Handoff Initiate Activity. This indicates that conversation needs to be handed off to agent
Activity handoffInitiateActivity = response.Activities.ToList().FirstOrDefault(
item => string.Equals(item.Type, ActivityTypes.Event, System.StringComparison.Ordinal)
&& string.Equals(item.Name, HandoffInitiateActivityName, System.StringComparison.Ordinal));
if (handoffInitiateActivity != null)
{
// Read transcript from attachment
if (handoffInitiateActivity.Attachments?.Any() == true)
{
Attachment transcriptAttachment = handoffInitiateActivity.Attachments.FirstOrDefault(a => string.Equals(a.Name.ToLowerInvariant(), TranscriptAttachmentName, System.StringComparison.Ordinal));
if (transcriptAttachment != null)
{
Transcript transcript = JsonConvert.DeserializeObject<Transcript>(transcriptAttachment.Content.ToString());
}
}
// Read handoff context
HandoffContext context = JsonConvert.DeserializeObject<HandoffContext>(handoffInitiateActivity.Value.ToString());
// Connect to Agent Hub
// <YOUR CUSTOM ADAPTER CODE GOES HERE>
}
}