Compartilhar via


Publicar um agente em aplicativos móveis ou personalizados

Você pode conectar seu agente a um aplicativo personalizado para que os usuários do aplicativo possam interagir com o agente diretamente do aplicativo.

Na maioria dos casos, seu aplicativo personalizado é um aplicativo para dispositivo móvel baseado na Web ou aplicativo ou adaptador nativo para outros serviços exigidos por sua empresa.

Existem procedimentos diferentes para conectar ao seu aplicativo móvel, dependendo se ele é um aplicativo baseado na Web ou nativo.

A conexão do seu agente a um aplicativo baseado na Web é relativamente simples, pois envolve a cópia de um trecho de código no seu aplicativo. No entanto, aplicativos baseados na Web e aplicativos nativos ou personalizados ainda exigem considerável conhecimento de desenvolvedor para integrar totalmente o agente ao seu aplicativo. Os dois procedimentos são descritos neste artigo.

Pré-requisitos

Conectar o agente a um aplicativo baseado na Web

  1. No Copilot Studio, no menu de navegação, selecione Canais.

  2. Selecione o bloco Aplicativo móvel para abrir a janela de configuração.

  3. Copie o código na seção Aplicativos baseados na Web e o forneça aos desenvolvedores do aplicativo para adicionar ao seu aplicativo baseado na Web.

    Adicione um agente ao aplicativo baseado na Web.

Conecte seu agente a um aplicativo nativo ou personalizado

Gorjeta

Embora esta seção descreva como se conectar a um aplicativo móvel, o mesmo processo pode ser aplicado a aplicativos personalizados ou nativos, como aplicativos IoT (Internet das Coisas).

Se seu objetivo é conectar-se aos canais do Serviço de Bot do Azure, além de seguir as instruções aqui, seus desenvolvedores podem aprender mais em Publicar um agente a canais do Serviço de Bot do Azure.

Importante

De acordo com as instruções nesta seção, seus desenvolvedores ou você precisam desenvolver um software. As instruções pressupõem um nível de experiência indicado para profissionais de TI experientes, como administradores de TI ou desenvolvedores que tenham um reconhecimento sólido de ferramentas para desenvolvedores, utilitários e IDEs (ambientes de desenvolvimento integrado).

Referências

As instruções neste documento fazem referência ao seguinte material de origem:

Recuperar os parâmetros de agente do Copilot Studio

Para se conectar ao agente compilado, você precisa recuperar o nome e o ponto de extremidade do token do agente para identificá-lo.

  1. No Copilot Studio, navegue até a página Visão geral do agente e copie o nome do agente.

  2. Selecione Canais>Aplicativo móvel.

  3. Na página Aplicativo móvel, ao lado de Ponto de extremidade do Token, selecione Copiar. Você precisa desse ponto de extremidade para a etapa Obter token do Direct Line.

    Obtenha os parâmetros do agente.

Obter token da Direct Line

Para iniciar uma conversa com o agente, você precisa de um token do Direct Line. Esse token pode ser obtido fazendo uma solicitação GET para o ponto de extremidade indicado na tela do Copilot Studio. Esse token deve então ser usado como cabeçalho para chamadas subsequentes à API do directline.

Exemplo:

GET <BOT TOKEN ENDPOINT>

Se a solicitação for bem-sucedida, o ponto de extremidade retornará um token do Direct Line, um tempo de expiração e um conversationId para o agente solicitado.

Exemplo:

{
    "token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
    "expires_in": 3600,
    "conversationId": "abc123"
}

Obter exemplo de código de token do Direct Line

O exemplo a seguir recebe um token do Direct Line para um agente do Copilot Studio.

/// <summary>
/// Get directline token for connecting bot
/// </summary>
/// <returns>directline token as string</returns>
public async Task<DirectLineToken> GetTokenAsync(string url)
{
    try
    {
        return await _httpClient.GetFromJsonAsync<DirectLineToken>(url);
    }
    catch (HttpRequestException ex)
    {
        throw ex;
    }        
}
/// <summary>
/// class for serialization/deserialization DirectLineToken
/// </summary>
public class DirectLineToken
{
  public string Token { get; set; }
  public int Expires_in { get; set; }
  public string ConversationId { get; set; }
}

O objeto de resposta é o mesmo da solicitação GET que vimos anteriormente.

{
  "token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
  "expires_in": 3600,
  "conversationId": "abc123"
}

Usar o Direct Line para se comunicar com o agente

Depois que você recuperar o token do Direct Line, tudo estará pronto para conversar com o agente do Copilot Studio com o Direct Line. Para começar uma conversa e enviar e receber mensagens, siga as instruções em Direct Line API do Bot Framework.

O exemplo a seguir inicia uma conversa e envia e recebe mensagens de um agente do Copilot Studio.

  1. Inicialize uma instância DirectLineClient com o token da Direct Line e inicie uma conversa:

       // Use the retrieved token to create a DirectLineClient instance
       using (var directLineClient = new DirectLineClient(token))
       {
           var conversation = await directLineClient.Conversations.StartConversationAsync();
           string conversationtId = conversation.ConversationId;
       }
    
  2. Depois de iniciada, cada conversa pode ser identificada e conectada usando a combinação de token e conversationtId. Envie uma mensagem de usuário para uma conversa existente:

       // Use the retrieved token to create a DirectLineClient instance
       // Use the conversationId from above step
       // endConversationMessage is your predefined message indicating that user wants to quit the chat
       while (!string.Equals(inputMessage = /*Get_User_Input()*/, endConversationMessage, StringComparison.OrdinalIgnoreCase))
       {
           using (var directLineClient = new DirectLineClient(token))
           {
               // Send user message using directlineClient
               // Payload is a Microsoft.Bot.Connector.DirectLine.Activity
               await directLineClient.Conversations.PostActivityAsync(conversationtId, new Activity()
               {
                   Type = ActivityTypes.Message,
                   From = new ChannelAccount { Id = "userId", Name = "userName" },
                   Text = inputMessage,
                   TextFormat = "plain",
                   Locale = "en-Us",
               });
           }
       }
    
  3. Recupere a resposta do agente usando o mesmo token e conversationId. As atividades de resposta do Direct Line recuperadas contêm as mensagens do usuário e do agente. Você pode filtrar as atividades de resposta pelo nome do seu agente para obter apenas a mensagem de resposta do agente.

       // Use the same token to create a directLineClient
       using (var directLineClient = new DirectLineClient(token))
       {
           // To get the first response set string watermark = null
           // More information about watermark is available at
           // https://learn.microsoft.com/azure/bot-service/rest-api/bot-framework-rest-direct-line-1-1-receive-messages?view=azure-bot-service-4.0
    
           // response from bot is of type Microsoft.Bot.Connector.DirectLine.ActivitySet
           ActivitySet response = await directLineClient.Conversations.GetActivitiesAsync(conversationtId, watermark);
    
           // update watermark from response
           watermark = response?.Watermark;
    
           // response contains set of Activity from both user and bot
           // To display bot response only, filter Activity.From.Name equals to your bot name
           List<Activity> botResponses = response?.Activities?.Where(x =>
                     x.Type == ActivityTypes.Message &&
                       string.Equals(x.From.Name, /*Bot_Name*/, StringComparison.Ordinal)).ToList();
    
           // Display botResponses
       }
    

Atualizar token da Direct Line

Talvez você precise adicionar código para atualizar o token do Direct Line caso o aplicativo tenha uma conversa longa com o agente. O token expira, mas pode ser atualizado antes de expirar; saiba mais em Autenticação da Direct Line.

O seguinte exemplo atualiza o token para uma conversa do Copilot Studio existente:

  // DirectLine provides a token refresh method
  // Requires the currentToken valid when refreshing
  string refreshToken = new DirectLineClient(currentToken).Tokens.RefreshToken().Token;
  // create a new directline client with refreshToken
  directLineClient = new DirectLineClient(refreshToken);
  // use new directLineClient to communicate to your bot

Analisar o conteúdo da conversa do agente

Depois que você inicia uma conversa com o agente, o conteúdo JSON da conversa usará a atividade do Direct Line do Microsoft Bot Framework padrão. Saiba mais em Bot Framework Direct Line API.

Tratar a atividade de entrega

Se seu aplicativo tiver que transferir para um provedor de agente humano, você precisará tratar a atividade de entrega. A atividade de entrega é enviada quando chega no nó "Transferir para agente". Você pode saber mais sobre o conteúdo da atividade de entrega.

Disparar uma mensagem de boas-vindas

Se você deseja que seu agente envie o tópico do sistema de saudação automaticamente quando um usuário inicia uma conversa, envie uma atividade com Type=event e Name=startConversation.