Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Note
Este artigo descreve as funcionalidades usadas em agentes ou fluxos de agentes alimentados pelo arnês padrão.
O Copilot Studio permite-lhe passar as conversas com agentes de forma fluida e contextual para um agente humano através de um hub de envolvimento.
Com alguma programação personalizada, pode configurar o seu agente para entregar conversas a qualquer hub de cativação.
Pré-requisitos
- Construíste o teu agente usando o Copilot Studio.
- Precisa de um hub de envolvimento que possa interagir programaticamente usando APIs ou SDK.
Importante
Este artigo exige algumas competências em desenvolvimento de software. Os passos deste artigo destinam-se a profissionais de TI experientes com um sólido conhecimento de ferramentas para programadores, utilitários e ambientes de desenvolvimento integrados (IDEs).
Overview
Uma transferência completa para um centro de interação segue este modelo:
- Um cliente interage com a tela de chat do hub de cativação.
- O centro de interação encaminha o chat recebido para um agente, recorrendo às capacidades incorporadas de encaminhamento de chats.
- Um adaptador personalizado encaminha as mensagens de chat recebidas do hub de interação para um agente do Copilot Studio.
- Assim que o cliente acionar a entrega, o Copilot Studio inicia a entrega com contexto de conversa completo.
- O adaptador personalizado interceta a mensagem de entrega, analisa todo o contexto da conversa e encaminha de forma totalmente integrada a conversa escalada para um agente humano qualificado, com base na disponibilidade.
- O chat do cliente é encaminhado sem interrupções e com o respetivo contexto para um agente humano, que pode retomar a conversa.
Para entregar a conversa a um agente humano, é preciso construir um adaptador de entrega personalizado.
Criar um adaptador de entrega personalizado
Um adaptador faz a ponte entre conversas de e para o seu centro de cativação de agentes, reencaminhando e transformando mensagens entre clientes, agentes e agentes humanos.
Os hubs de cativação de agentes mais populares fornecem kits de desenvolvimento de software (SDKs) ou documentam publicamente as suas APIs, permitindo-lhe criar esses adaptadores.
Este documento não aborda o que um adaptador personalizado poderia conter. No entanto, a seguinte mensagem de transferência de exemplo, com base no que o Copilot Studio gera como parte da nossa experiência padrão de transferência para um agente em direto, pode ajudá-lo a dar os primeiros passos.
Estes fragmentos de código e exemplos permitem extrair o contexto da conversa para distribuir de forma totalmente integrada e contextualmente conversas de agentes para qualquer hub de cativação genérico.
Payload da mensagem de entrega de amostra
Atualmente, Handoff só suporta Direct Line. Para mais informações, consulte como interagir com um agente através do Direct Line. Após a transferência, o adaptador levanta um evento de atividade chamado handoff.initiate e envia-o.
Pode ver uma atividade de mensagem de entrega de amostra completa no nosso site GitHub.
Extrair contexto da mensagem de entrega
Para usar o contexto conversacional, analise a handoff.initiate atividade do evento.
O seguinte fragmento de código analisa a atividade do evento handoff.initiate e extrai o contexto de conversa. 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>
}
}