Udostępnij za pośrednictwem


Debugowanie bota za pomocą oprogramowania pośredniczącego inspekcji

DOTYCZY: ZESTAW SDK w wersji 4

W tym artykule opisano sposób debugowania bota przy użyciu oprogramowania pośredniczącego inspekcji. Ta funkcja umożliwia emulatorowi platformy Bot Framework debugowanie ruchu do i z bota oraz wyświetlanie bieżącego stanu bota. Możesz użyć komunikatu śledzenia, aby wysłać dane do emulatora, a następnie sprawdzić stan bota w dowolnym momencie konwersacji.

Używamy narzędzia EchoBot utworzonego lokalnie przy użyciu platformy Bot Framework w wersji 4 w przewodniku Szybki start Tworzenie bota, aby pokazać, jak debugować i sprawdzać stan komunikatu bota. Możesz również debugować bota przy użyciu środowiska IDE lub debugowania za pomocą emulatora platformy Bot Framework, ale aby debugować stan, musisz dodać oprogramowanie pośredniczące inspekcji do bota. Przykłady botów inspekcji są dostępne dla języków C#, JavaScript, Java i Python.

Uwaga

Zestawy SDK języka JavaScript, C# i Python platformy Bot Framework będą nadal obsługiwane, jednak zestaw SDK języka Java jest wycofywany z ostatecznym długoterminowym wsparciem kończącym się w listopadzie 2023 r.

Istniejące boty utworzone za pomocą zestawu JAVA SDK będą nadal działać.

W przypadku tworzenia nowego bota rozważ użycie agentów usługi Power Virtual Agents i przeczytaj o wyborze odpowiedniego rozwiązania czatbota.

Aby uzyskać więcej informacji, zobacz Przyszłość tworzenia botów.

Wymagania wstępne

Aktualizowanie emulatora do najnowszej wersji

Przed użyciem oprogramowania pośredniczącego inspekcji bota w celu debugowania bota zaktualizuj emulator do wersji 4.5 lub nowszej. Sprawdź najnowszą wersję aktualizacji.

Aby sprawdzić wersję emulatora, wybierz pozycję Pomoc, a następnie pozycję Informacje w menu. Zobaczysz bieżącą wersję emulatora.

Aktualizowanie kodu bota

Stan inspekcji i oprogramowanie pośredniczące inspekcji są konfigurowane w pliku Startup.cs , a następnie używane przez adapter.

Startup.cs

});

services.AddSingleton<ConversationState>();

// Create the Bot Framework Authentication to be used with the Bot Adapter.

AdapterWithInspection.cs

{
    public class AdapterWithInspection : CloudAdapter
    {
        public AdapterWithInspection(BotFrameworkAuthentication auth, IConfiguration configuration, InspectionState inspectionState, UserState userState, ConversationState conversationState, ILogger<IBotFrameworkHttpAdapter> logger)
            : base(auth, logger)
        {
            // Inspection needs credentials because it will be sending the Activities and User and Conversation State to the emulator
            var credentials = new MicrosoftAppCredentials(configuration["MicrosoftAppId"], configuration["MicrosoftAppPassword"]);

            Use(new InspectionMiddleware(inspectionState, userState, conversationState, credentials));

            OnTurnError = async (turnContext, exception) =>
            {
                // Log any leaked exception from the application.
                logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");

                // Send a message to the user
                await turnContext.SendActivityAsync("The bot encountered an error or bug.");
                await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");

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

Zaktualizuj klasę bota w pliku EchoBot.cs .

EchoBot.cs

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    var conversationStateProp = _conversationState.CreateProperty<CustomState>("customState");
    var convProp = await conversationStateProp.GetAsync(turnContext, () => new CustomState { Value = 0 }, cancellationToken);

    var userStateProp = _userState.CreateProperty<CustomState>("customState");
    var userProp = await userStateProp.GetAsync(turnContext, () => new CustomState { Value = 0 }, cancellationToken);

    await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text} conversation state: {convProp.Value} user state: {userProp.Value}"), cancellationToken);

    convProp.Value++;
    userProp.Value++;
}

Lokalne testowanie bota

Po zaktualizowaniu kodu możesz uruchomić bota lokalnie i przetestować funkcję debugowania przy użyciu dwóch emulatorów: jeden do wysyłania i odbierania komunikatów, a drugi do sprawdzania stanu komunikatów w trybie debugowania. Aby przetestować bota lokalnie:

  1. Przejdź do katalogu bota w terminalu i wykonaj następujące polecenie, aby uruchomić bota lokalnie:

    dotnet run
    
  2. Otwórz emulator. Wybierz pozycję Otwórz bota. Wypełnij pola Adres URL bota wartościami http://localhost:3978/api/messages MicrosoftAppId i MicrosoftAppPassword. Jeśli masz bota JavaScript, możesz znaleźć te wartości w pliku env bota. Jeśli masz bota języka C#, te wartości można znaleźć w pliku appsettings.json . W przypadku bota Java można znaleźć te wartości w pliku application.properties . Wybierz pozycję Połącz.

  3. Teraz otwórz kolejne okno emulatora. To drugie okno emulatora będzie działać jako debuger. Postępuj zgodnie z instrukcjami opisanymi w poprzednim kroku. Zaznacz pozycję Otwórz w trybie debugowania, a następnie wybierz pozycję Połączenie.

  4. W tym momencie zobaczysz polecenie z unikatowym identyfikatorem (/INSPECT attach <identifier>) w emulatorze debugowania. Skopiuj całe polecenie z identyfikatorem z emulatora debugowania i wklej je w polu czatu pierwszego emulatora.

    Uwaga

    Unikatowy identyfikator jest generowany za każdym razem, gdy emulator jest uruchamiany w trybie debugowania po dodaniu oprogramowania pośredniczącego inspekcji w kodzie bota.

  5. Teraz możesz wysyłać wiadomości w polu czatu pierwszego emulatora i sprawdzać komunikaty w emulatorze debugowania. Aby sprawdzić stan komunikatów, wybierz pozycję Stan bota w emulatorze debugowania i rozwiń wartości w prawym oknie JSON. Stan bota zostanie wyświetlony w emulatorze debugowania:

    stan bota

Sprawdzanie stanu bota skonfigurowanego na platformie Azure

Jeśli chcesz sprawdzić stan bota skonfigurowanego na platformie Azure i połączyć się z kanałami (takimi jak Teams), musisz zainstalować i uruchomić narzędzie ngrok.

Uruchamianie narzędzia ngrok

Na tym etapie zaktualizowano emulator do najnowszej wersji i dodano oprogramowanie pośredniczące inspekcji w kodzie bota. Następnym krokiem jest uruchomienie narzędzia ngrok i skonfigurowanie lokalnego bota. Przed uruchomieniem narzędzia ngrok należy uruchomić bota lokalnie.

Aby uruchomić bota lokalnie:

  1. Przejdź do folderu bota w terminalu i ustaw rejestrację npm, aby używać najnowszych kompilacji

  2. Uruchom bota lokalnie. Zobaczysz, że bot uwidacznia numer portu, taki jak 3978.

  3. Otwórz kolejny wiersz polecenia i przejdź do folderu projektu bota. Uruchom następujące polecenie:

    ngrok http 3978
    
  4. Aplikacja ngrok jest teraz połączona z lokalnym uruchomionym botem. Skopiuj bezpieczny publiczny adres IP (HTTPS).

    ngrok success

Aktualizowanie zasobu bota

Teraz, gdy lokalny bot jest połączony z serwerem ngrok, możesz skonfigurować zasób bota na platformie Azure tak, aby używał adresu URL narzędzia ngrok.

  1. Przejdź do zasobu bota na platformie Azure. W menu po lewej stronie w obszarze Ustawienia wybierz pozycję Konfiguracja.

    1. Ustaw punkt końcowy obsługi komunikatów na skopiowany adres IP ngrok. W razie potrzeby dodaj /api/messages po adresie IP. Na przykład https://e58549b6.ngrok.io/api/messages.

    2. Wybierz pozycję Włącz punkt końcowy przesyłania strumieniowego.

      Ustawianie punktu końcowego

    3. Wybierz pozycję Zastosuj, aby zapisać zmiany.

      Napiwek

      Jeśli opcja Zastosuj nie jest włączona, możesz usunąć zaznaczenie pola wyboru Włącz punkt końcowy przesyłania strumieniowego i wybrać pozycję Zastosuj, a następnie zaznaczyć pozycję Włącz punkt końcowy przesyłania strumieniowego i ponownie wybrać pozycję Zastosuj . Upewnij się, że opcja Włącz punkt końcowy przesyłania strumieniowego jest zaznaczona, a konfiguracja punktu końcowego jest zapisywana.

  2. Przejdź do grupy zasobów bota.

    1. Wybierz pozycję Wdrożenie, a następnie wybierz zasób bota, który został wcześniej wdrożony pomyślnie. Wybierz pozycję Szablon z menu po lewej stronie, aby pobrać identyfikatory MicrosoftAppId i MicrosoftAppPassword dla aplikacji internetowej skojarzonej z botem.

      Pobieranie danych wejściowych

    2. Zaktualizuj plik konfiguracji bota (appsettings.json dla języka C# lub env for JavaScript) przy użyciu wartości MicrosoftAppId i MicrosoftAppPassword.

  3. Uruchom emulator, wybierz pozycję Otwórz bota i wprowadź http://localhost:3978/api/messages adres URL bota. Wypełnij pola Identyfikator aplikacji firmy Microsoft i hasło aplikacji firmy Microsoft przy użyciu tych samych identyfikatorów MicrosoftAppId i MicrosoftAppPassword dodanych do pliku konfiguracji bota. Następnie wybierz pozycję Połączenie.

  4. Uruchomiony bot jest teraz połączony z zasobem bota na platformie Azure. Aby przetestować bota na platformie Azure w usłudze czat internetowy, przejdź do zasobów bota, wybierz pozycję Testuj w czat internetowy i wyślij komunikaty do bota.

Włączanie trybu debugowania

  1. W emulatorze wybierz pozycję Debuguj, a następnie rozpocznij debugowanie.

  2. Wprowadź adres IP narzędzia ngrok (nie zapomnij dodać /api/messages) dla adresu URL bota (na przykład https://e58549b6.ngrok.io/api/messages).

    1. W polu Identyfikator aplikacji firmy Microsoft wprowadź identyfikator aplikacji bota.
    2. W polu Hasło aplikacji firmy Microsoft wprowadź wpis tajny aplikacji bota.
    3. Upewnij się, że opcja Otwórz w trybie debugowania jest również zaznaczona.
    4. Wybierz pozycję Połącz.
  3. Po włączeniu trybu debugowania emulator generuje identyfikator UUID. Identyfikator UUID jest unikatowym identyfikatorem generowanym za każdym razem, gdy uruchamiasz tryb debugowania w emulatorze.

  4. Skopiuj i wklej identyfikator UUID do pola Testuj w czat internetowy czatu w polu czatu kanału. W polu czatu zostanie wyświetlony komunikat "Dołączony do sesji, cały ruch jest replikowany do inspekcji".

Możesz rozpocząć debugowanie bota, wysyłając wiadomości w polu czatu skonfigurowanego kanału. Lokalny emulator automatycznie zaktualizuje komunikaty ze wszystkimi szczegółami dotyczącymi debugowania. Aby sprawdzić stan komunikatów bota, wybierz pozycję Stan bota i rozwiń wartości w odpowiednim oknie JSON.

debugowanie oprogramowania pośredniczącego inspekcji

Następne kroki