Partilhar via


Criar cliente .NET para se conectar à extensão do Serviço de Aplicativo de Linha Direta

A partir de 1º de setembro de 2023, é altamente recomendável empregar o método de Etiqueta de Serviço do Azure para isolamento de rede. A utilização do DL-ASE deve ser limitada a cenários altamente específicos. Antes de implementar esta solução em um ambiente de produção, recomendamos consultar sua equipe de suporte para obter orientação.

APLICA-SE A: SDK v4

Este artigo descreve como criar um cliente .NET em C# que se conecta à extensão do Serviço de Aplicativo de Linha Direta. Por favor, leia também este artigo complementar Configurar bot .NET para extensão.

Pré-requisitos

  • Uma conta do Azure.
  • Um bot implantado no portal do Azure .

Obtenha a chave secreta da Linha Direta

  1. No browser, aceda ao Portal do Azure.
  2. No portal do Azure, localize seu recurso de Bot do Azure.
  3. Selecione Canais em Configurações.
  4. Se ainda não estiver ativado, selecione o canal de Linha Direta para ativá-lo.
  5. Selecione Linha direta em Canais depois de ativá-la.
  6. Vá para a seção Sites . Normalmente, há um Default_Site , a menos que você o tenha excluído ou renomeado.
  7. Selecione o botão Mostrar link (ícone de olho) para revelar uma das chaves, copie e salve seu valor. Você usará esse valor na seção Criar um cliente C# Direct Line.

Nota

Esse valor é o segredo do cliente da Linha Direta usado para se conectar à extensão do Serviço de Aplicativo de Linha Direta. Você pode criar sites adicionais se quiser e usar esses valores secretos também.

Criar um cliente C# Direct Line

As interações com a extensão do Serviço de Aplicativo de Linha Direta acontecem de forma diferente da Linha Direta tradicional porque a maioria das comunicações acontece por meio de um WebSocket. O cliente Direct Line atualizado inclui classes auxiliares para abrir e fechar um WebSocket, enviar comandos através do WebSocket e receber Atividades de volta do bot. Esta seção descreve como criar um cliente C# simples para interagir com um bot.

  1. No Visual Studio, crie um novo projeto de aplicativo de console do .NET Core.

  2. Clone o cliente Direct Line do repositório GitHub e inclua-o em seu projeto.

  3. Crie um cliente e gere um token usando um segredo. Esta etapa é a mesma que criar qualquer outro cliente C# Direct Line, exceto o ponto de extremidade que você precisa usar em seu bot, anexado com o caminho .bot/ conforme mostrado a seguir. Não se esqueça do final /.

    string endpoint = "https://<your_bot_name>.azurewebsites.net/.bot/";
    string secret = "<your_bot_direct_line_secret_key>";
    
    var tokenClient = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(secret));
    var conversation = await tokenClient.Tokens.GenerateTokenForNewConversationAsync();
    

    Veja o seguinte:

    • O valor do ponto de extremidade é a URL do bot obtida quando implantou o bot no Azure. Para obter mais informações, consulte Configurar bot .NET para extensão.
    • O valor secreto mostrado como YOUR_BOT_SECRET é o valor que você salvou anteriormente da seção sites.
  4. Depois de ter uma referência de conversa da geração de um token, você pode usar essa ID de conversa para abrir um WebSocket com a nova StreamingConversations propriedade no DirectLineClient. Para fazer isso, você precisa criar um retorno de chamada que será invocado quando o bot quiser enviar ActivitySets ao cliente:

    public static void ReceiveActivities(ActivitySet activitySet)
    {
        if (activitySet != null)
        {
            foreach (var a in activitySet.Activities)
            {
                if (a.Type == ActivityTypes.Message && a.From.Id.Contains("bot"))
                {
                    Console.WriteLine($"<Bot>: {a.Text}");
                }
            }
        }
    }
    
  5. Agora você está pronto para abrir o WebSocket na StreamingConversations propriedade usando o token da conversa, conversationIde seu ReceiveActivities retorno de chamada:

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. O cliente agora pode ser usado para iniciar uma conversa e enviar Activities para o bot:

    
    var startConversation = await client.StreamingConversations.StartConversationAsync();
    var from = new ChannelAccount() { Id = "123", Name = "Fred" };
    var message = Console.ReadLine();
    
    while (message != "end")
    {
        try
        {
            var response = await client.StreamingConversations.PostActivityAsync(
                startConversation.ConversationId,
                new Activity()
                {
                    Type = "message",
                    Text = message,
                    From = from
                });
        }
        catch (OperationException ex)
        {
            Console.WriteLine(
                $"OperationException when calling PostActivityAsync: ({ex.StatusCode})");
        }
        message = Console.ReadLine();
    }