Configurar a entrega a hubs de interação genéricos

Importante

As capacidades e os recursos do Power Virtual Agents agora fazem parte do Microsoft Copilot Studio após investimentos significativos em IA generativa e integrações aprimoradas no Microsoft Copilot.

Alguns artigos e capturas de tela podem fazer referência ao Power Virtual Agents enquanto atualizamos a documentação e o conteúdo do treinamento.

O Copilot Studio permite entregar conversas do copiloto sem interrupções e com contexto a um agente humano por meio de um hub de interação.

Com algum desenvolvimento personalizado, você pode configurar seu copiloto para entregar conversas para qualquer hub de interação. Este guia descreve como fazer isso.

Pré-requisitos

Importante

De acordo com as instruções nesta seção, seus desenvolvedores ou você precisam desenvolver um software. Elas destinam-se a profissionais de TI experientes, como administradores ou desenvolvedores de TI, que possuem um sólido entendimento de utilitários, IDEs e ferramentas para desenvolvedores, e que desejam integrar hubs de interação de terceiros ao Copilot Studio.

Visão Geral

ILUSTRAÇÃO MOSTRANDO O FLUXO DE DADOS DO ADAPTADOR GENÉRICO.

Uma entrega completa para um hub de interação segue este padrão:

  1. Um usuário final interage com a tela de conversa do hub de interação.

  2. O hub de interação direciona a conversa recebida para um copiloto, por meio dos recursos internos de roteamento de conversas.

  3. Um adaptador personalizado retransmite as mensagens de conversa recebidas do hub de interação para um copiloto do Copilot Studio.

  4. Quando o usuário final dispara a entrega, o Copilot Studio inicia a entrega com o contexto conversacional completo.

  5. 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.

  6. 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 une as conversas do hub de interação do agente e para ele, retransmitindo e transformando mensagens entre usuários finais, copilotos e agentes humanos.

Os hubs de interação mais populares fornecem SDKs ou documentam suas APIs publicamente, permitindo que você crie esses adaptadores.

Embora esteja fora do escopo deste documento explicar o que um adaptador personalizado pode conter, o exemplo de mensagem de entrega a seguir, com base no que o Copilot Studio gera como parte da nossa experiência de entrega padrão para um agente humano, pode ser uma introdução.

Esses exemplos e trechos de código permitem que você extraia o contexto da conversa para transferir, de maneira contínua e contextualizada, as conversas do copiloto para qualquer hub de interação 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 copiloto pelo 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>
    }
}