Compartilhar via


Adicionar atividades de rastreamento ao bot

APLICA-SE A: SDK v4

Uma atividade de rastreamento é uma atividade que seu bot pode enviar para o Bot Framework Emulator. Você pode usar atividades de rastreamento para depurar interativamente um bot, pois elas permitem que você veja informações sobre o bot enquanto ele é executado localmente.

As atividades de rastreamento são enviadas somente para o Emulator e não para nenhum outro cliente nem canal. O Emulator exibe-as no log, mas não no painel de chat principal.

  • As atividades de rastreamento enviadas por meio do contexto de ativação são enviadas por meio dos manipuladores de envio de atividade registrados no contexto do turno.
  • As atividades de rastreamento enviadas por meio do contexto de turnos são associadas à atividade de entrada aplicando a referência de conversa, caso haja uma. Para uma mensagem proativa, a responder à ID será um novo GUID.
  • Independentemente de como é enviada, uma atividade de rastreamento nunca define o sinalizador respondido.

Observação

Os SDKs JavaScript, C# e Python do Bot Framework continuarão a ser compatíveis. No entanto, o SDK Java está sendo desativado, com o suporte final de longo prazo terminando em novembro de 2023.

Os bots existentes criados com o SDK para Java continuarão a funcionar.

Para a criação de novos bots, considere usar o Microsoft Copilot Studio e leia sobre como escolher a solução de copiloto certa.

Para obter mais informações, confira O futuro da criação de bots.

Para usar uma atividade de rastreamento

Para ver uma atividade de rastreamento no Emulator, você precisa de um cenário no qual seu bot envie uma atividade de rastreamento, tal como lançar uma exceção e enviar uma atividade de rastreamento do manipulador "on turn error" do adaptador.

Para enviar uma atividade de rastreamento do bot:

  1. Crie uma atividade.
    • Defina sua propriedade de tipo obrigatório como "rastreamento".
    • Opcionalmente, defina as propriedades nome, rótulo, valor e tipo de valor, conforme apropriado para o rastreamento.
  2. Use o método enviar atividade do objeto de contexto do turno para enviar a atividade de rastreamento.
    • Esse método adiciona valores para as propriedades necessárias restantes da atividade, com base na atividade de entrada. Essas propriedades incluem a ID do canal, o URL do serviço, o remetente e o destinatário.

Para exibir uma atividade de rastreamento no Emulator:

  1. Execute o bot localmente em seu computador.
  2. Teste-o usando o Emulator.
    • Interaja com o bot e use as etapas em seu cenário para gerar a atividade de rastreamento.
    • Quando o bot emite a atividade de rastreamento, a atividade de rastreamento é exibida no log do Emulator.

Aqui está uma atividade de rastreamento que você talvez veja se executar o bot principal sem primeiro configurar a base de informações do QnAMaker da qual o bot depende.

Captura de tela da saída da atividade de rastreamento no emulador.

Adicionar uma atividade de rastreamento ao manipulador "on error" do adaptador

O manipulador on turn error do adaptador captura qualquer exceção não capturada, caso contrário, emitida do bot durante uma rodada. O manipulador de erros é um bom lugar para uma atividade de rastreamento, uma vez que é possível enviar uma mensagem amigável para o usuário e enviar informações de depuração sobre a exceção para o Emulator.

Este código de exemplo é do exemplo Bot Principal. Confira o exemplo completo em C#, JavaScript, Python ou Java.

O manipulador OnTurnError do adaptador cria a atividade de rastreamento para incluir as informações de exceção e as envia para o Emulator.

AdapterWithErrorHandler.cs

    {
        // Log any leaked exception from the application.
        // NOTE: In production environment, you should consider logging this to
        // Azure Application Insights. Visit https://aka.ms/bottelemetry to see how
        // to add telemetry capture to your bot.
        logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");

        // Send a message to the user
        var errorMessageText = "The bot encountered an error or bug.";
        var errorMessage = MessageFactory.Text(errorMessageText, errorMessageText, InputHints.IgnoringInput);
        await turnContext.SendActivityAsync(errorMessage);

        errorMessageText = "To continue to run this bot, please fix the bot source code.";
        errorMessage = MessageFactory.Text(errorMessageText, errorMessageText, InputHints.ExpectingInput);
        await turnContext.SendActivityAsync(errorMessage);

        if (conversationState != null)
        {
            try
            {
                // Delete the conversationState for the current conversation to prevent the
                // bot from getting stuck in a error-loop caused by being in a bad state.
                // ConversationState should be thought of as similar to "cookie-state" in a Web pages.
                await conversationState.DeleteAsync(turnContext);
            }
            catch (Exception e)
            {
                logger.LogError(e, $"Exception caught on attempting to Delete ConversationState : {e.Message}");
            }
        }

        // Send a trace activity, which will be displayed in the Bot Framework Emulator
        await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
    };
}

Próximas etapas