Hinzufügen von Ablaufverfolgungsaktivitäten zu Ihrem Bot

GILT FÜR: SDK v4

Eine Ablaufverfolgungsaktivität ist eine Aktivität, die von Ihrem Bot an den Bot Framework Emulator gesendet werden kann. Sie können Ablaufverfolgungsaktivitäten verwenden, um einen Bot interaktiv zu debuggen, da diese Ihnen das Anzeigen von Informationen zu Ihrem Bot während der lokalen Ausführung ermöglichen.

Ablaufverfolgungsaktivitäten werden nur an den Emulator und nicht an andere Clients oder Kanäle gesendet. Vom Emulator werden sie im Protokoll angezeigt, aber nicht im Hauptbereich des Chats.

  • Ablaufverfolgungsaktivitäten, die über den Turn-Kontext gesendet werden, fließen über die SendActivity-Handler, die für den Turn-Kontext registriert wurden.
  • Über den Turn-Kontext gesendete Ablaufverfolgungsaktivitäten werden der eingehenden Aktivität zugeordnet, indem der Konversationsverweis angewendet wird, falls vorhanden. Bei einer proaktiven Nachricht handelt es sich bei der ReplyTo-ID um eine neue GUID.
  • Unabhängig von der Art des Sendevorgangs wird für eine Ablaufverfolgungsaktivität niemals das Flag responded (Beantwortet) festgelegt.

Hinweis

Die JavaScript-, C#- und Python-SDKs für Bot Framework werden weiterhin unterstützt, das Java-SDK wird jedoch eingestellt und der langfristige Support endet im November 2023.

Bestehende Bots, die mit dem Java SDK erstellt wurden, werden weiterhin funktionieren.

Wenn Sie einen neuen Bot erstellen möchten, sollten Sie den Einsatz von Power Virtual Agents in Betracht ziehen und sich über die Auswahl der richtigen Chatbot-Lösung informieren.

Weitere Informationen finden Sie unter Die Zukunft des Bot-Buildings.

Verwenden einer Ablaufverfolgungsaktivität

Zum Anzeigen einer Ablaufverfolgungsaktivität im Emulator benötigen Sie ein Szenario, bei dem Ihr Bot eine Ablaufverfolgungsaktivität sendet, z. B. zum Auslösen einer Ausnahme und Senden einer Ablaufverfolgungsaktivität über den onTurnError-Handler des Adapters.

Gehen Sie beim Senden einer Ablaufverfolgungsaktivität von Ihrem Bot wie folgt vor:

  1. Erstellen Sie eine neue Aktivität.
    • Legen Sie die benötigte type-Eigenschaft auf „trace“ fest.
    • Legen Sie optional die Eigenschaften name, label, value und value type so fest, wie dies für die Ablaufverfolgung geeignet ist.
  2. Verwenden Sie die SendActivity-Methode des Turn-Kontext-Objekts, um die Ablaufverfolgungsaktivität zu senden.
    • Mit dieser Methode werden Werte für die verbleibenden erforderlichen Eigenschaften der Aktivität basierend auf der eingehenden Aktivität hinzugefügt. Hierzu gehören die Eigenschaften channel ID, service URL, from und recipient.

Zeigen Sie eine Ablaufverfolgungsaktivität im Emulator wie folgt an:

  1. Führen Sie den Bot lokal auf Ihrem Computer aus.
  2. Testen Sie ihn mit dem Emulator.
    • Interagieren Sie mit dem Bot, und verwenden Sie die Schritte in Ihrem Szenario, um die Ablaufverfolgungsaktivität zu generieren.
    • Wenn Ihr Bot die Ablaufverfolgungsaktivität ausgibt, wird sie im Emulatorprotokoll angezeigt.

Hier ist eine Ablaufverfolgungsaktivität angegeben, die ggf. im folgenden Fall angezeigt wird: Sie führen den „Core Bot“ aus, ohne zuerst die QnAMaker-Wissensdatenbank einzurichten, die vom Bot verwendet wird.

Screenshot der Ausgabe der Ablaufverfolgungsaktivität im Emulator.

Hinzufügen einer Ablaufverfolgungsaktivität zum OnError-Handler des Adapters

Der onTurnError-Handler fängt alle Ausnahmen ab, die vom Bot während eines Turns ausgelöst und nicht anderweitig abgefangen werden. Der Fehler-Handler ist ein guter Ort für eine Ablaufverfolgungsaktivität, da Sie eine benutzerfreundliche Nachricht an den Benutzer und Debuginformationen zur Ausnahme an den Emulator senden können.

Dieser Beispielcode stammt aus dem BeispielCore Bot. Das vollständige Beispiel finden Sie unter C#, JavaScript, Python oder Java.

Mit dem OnTurnError-Handler des Adapters wird die Ablaufverfolgungsaktivität erstellt, um die Ausnahmeinformationen einzufügen, und an den Emulator gesendet.

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");
    };
}

Nächste Schritte