Megosztás a következőn keresztül:


Robot hibakeresése ellenőrző köztes szoftverrel

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

Ez a cikk azt ismerteti, hogyan lehet hibakeresést végezni egy roboton az ellenőrző köztes szoftverrel. Ez a funkció lehetővé teszi a Bot Framework Emulator számára, hogy hibakeresést hajtson végre a robotba és azon kívül, valamint hogy lássa a robot aktuális állapotát. Nyomkövetési üzenet használatával adatokat küldhet az Emulátornak, majd megvizsgálhatja a robot állapotát a beszélgetés bármely során.

A Robot keretrendszer v4 használatával helyileg létrehozott EchoBotot használunk a Robot létrehozása rövid útmutatóban , amely bemutatja a robot üzenetállapotának hibakeresését és vizsgálatát. A robotok hibakeresését ide vagy Hibakeresés funkcióval is elvégezheti a Bot Framework Emulator használatával, de a hibakereséshez ellenőrző köztes szoftvereket kell hozzáadnia a robothoz. Az ellenőrzőrobot-minták C#, JavaScript, Java és Python esetén érhetők el.

Feljegyzés

A Bot Framework JavaScript, C# és Python SDK-k továbbra is támogatottak lesznek, a Java SDK-t azonban 2023 novemberében végső hosszú távú támogatással kivonják.

A Java SDK-val létrehozott meglévő robotok továbbra is működni fognak.

Új robotépítéshez fontolja meg a Power Virtual Agents használatát, és olvassa el a megfelelő csevegőrobot-megoldás kiválasztását.

További információ: A robotépítés jövője.

Előfeltételek

Az Emulator frissítése a legújabb verzióra

Mielőtt robotvizsgálati köztes szoftverrel hibakeresést végez a roboton, frissítse az Emulátort a 4.5-ös vagy újabb verzióra. Frissítésekért tekintse meg a legújabb verziót .

Az Emulator verziójának ellenőrzéséhez válassza a Súgó, majd a Névjegy lehetőséget a menüben. Ekkor megjelenik az Emulator aktuális verziója.

A robotkód frissítése

A vizsgálati állapot és a vizsgálati köztes szoftver konfigurálva van a Startup.cs fájlban, majd az adapter használja.

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

Frissítse a robotosztályt a EchoBot.cs fájlban.

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++;
}

A robot helyi tesztelése

A kód frissítése után helyileg futtathatja a robotot, és tesztelheti a hibakeresési funkciót két Emulátor használatával: az egyik az üzenetek küldéséhez és fogadásához, a másik pedig az üzenetek állapotának hibakeresési módban történő vizsgálatához. A robot helyi tesztelése:

  1. Nyissa meg a robot könyvtárát egy terminálban, és hajtsa végre a következő parancsot a robot helyi futtatásához:

    dotnet run
    
  2. Nyissa meg az Emulátort. Válassza a Robot megnyitása lehetőséget. Töltse ki a robot URL-címét a MicrosoftAppId és a MicrosoftAppPassword értékekkelhttp://localhost:3978/api/messages. Ha JavaScript-robottal rendelkezik, ezeket az értékeket megtalálhatja a robot .env fájljában. Ha rendelkezik C#-robottal, ezeket az értékeket a appsettings.json fájlban találja. Java-robot esetén ezeket az értékeket az application.properties fájlban találja. Válassza a Kapcsolódás lehetőséget.

  3. Most nyisson meg egy másik Emulator-ablakot. Ez a második Emulator-ablak hibakeresőként fog működni. Kövesse az előző lépésben leírt utasításokat. Jelölje be a Megnyitás hibakeresési módban jelölőnégyzetet, majd válassza a Csatlakozás.

  4. Ekkor megjelenik egy egyedi azonosítóval (/INSPECT attach <identifier>) rendelkező parancs a hibakeresési Emulátorban. Másolja ki a teljes parancsot a hibakereső Emulátor azonosítójával, és illessze be az első Emulátor csevegőablakába.

    Feljegyzés

    Minden alkalommal egyedi azonosító jön létre, amikor az Emulátor hibakeresési módban indul el, miután hozzáadta az ellenőrző köztes szoftvert a robot kódjához.

  5. Most már küldhet üzeneteket az első Emulátor csevegőablakában, és megvizsgálhatja az üzeneteket a hibakereső Emulátorban. Az üzenetek állapotának vizsgálatához válassza a Robot állapota lehetőséget a hibakeresési Emulátorban, és bontsa ki az értékeket a jobb oldali JSON-ablakban. A robot állapotát a hibakeresési Emulátorban láthatja:

    robot állapota

Az Azure-ban konfigurált robot állapotának vizsgálata

Ha meg szeretné vizsgálni az Azure-ban konfigurált és csatornákhoz (például Teamshez) csatlakoztatott robot állapotát, telepítenie és futtatnia kell az ngrokot.

Ngrok futtatása

Ezen a ponton frissítette az Emulatort a legújabb verzióra, és hozzáadta az ellenőrző köztes szoftvereket a robot kódjához. A következő lépés az ngrok futtatása és a helyi robot konfigurálása. Az ngrok futtatása előtt helyileg kell futtatnia a robotot.

A robot helyi futtatása:

  1. Nyissa meg a robot mappáját egy terminálban, és állítsa be az npm-regisztrációt a legújabb buildek használatára

  2. Futtassa helyileg a robotot. Látni fogja, hogy a robot egy ilyen 3978portszámot tesz elérhetővé.

  3. Nyisson meg egy másik parancssort, és nyissa meg a robot projektmappáját. Futtassa az alábbi parancsot:

    ngrok http 3978
    
  4. Az ngrok mostantól csatlakozik a helyileg futó robothoz. Másolja ki a biztonságos (HTTPS) nyilvános IP-címet.

    ngrok siker

A roboterőforrás frissítése

Most, hogy a helyi robot csatlakozott az ngrokhoz, konfigurálhatja a roboterőforrást az Azure-ban az ngrok URL-címének használatára.

  1. Nyissa meg a roboterőforrást az Azure-ban. A bal oldali menü Gépház területén válassza a Konfiguráció lehetőséget.

    1. Állítsa az üzenetkezelési végpontot a másolt ngrok IP-címre. Szükség esetén adjon hozzá /api/üzeneteket az IP-cím után. Például: https://e58549b6.ngrok.io/api/messages.

    2. Válassza a Streamvégpont engedélyezése lehetőséget.

      Végpont beállítása

    3. A módosítások mentéséhez válassza az Alkalmaz lehetőséget.

      Tipp.

      Ha az Alkalmazás nincs engedélyezve, törölje a jelet a Streamvégpont engedélyezése jelölőnégyzetből, és válassza az Alkalmaz lehetőséget, majd jelölje be a Streamvégpont engedélyezése jelölőnégyzetet, majd kattintson ismét az Alkalmaz gombra. Győződjön meg arról, hogy a streamvégpont engedélyezése be van jelölve, és a végpont konfigurációja mentésre kerül.

  2. Nyissa meg a robot erőforráscsoportját.

    1. Válassza az Üzembe helyezés lehetőséget, majd válassza ki a korábban sikeresen üzembe helyezett roboterőforrást. A bal oldali menüBen válassza a Sablon lehetőséget a robothoz társított webalkalmazásHoz tartozó MicrosoftAppId és MicrosoftAppPassword beszerzéséhez.

      Bemenetek lekérése

    2. Frissítse a robot konfigurációs fájlját (appsettings.json a C#-hoz vagy a .env for JavaScripthez) a MicrosoftAppId és a MicrosoftAppPassword használatával.

  3. Indítsa el az Emulátort, válassza a Robot megnyitása lehetőséget, és írja be http://localhost:3978/api/messages a robot URL-címét. Töltse ki a Microsoft Alkalmazásazonosítót és a Microsoft App jelszavát ugyanazzal a MicrosoftAppId és MicrosoftAppPassword azonosítóval, mint amit a robot konfigurációs fájljában hozzáadott. Ezután válassza a Csatlakozás.

  4. A futó robot most már csatlakozik a robot erőforrásához az Azure-ban. Ha tesztelni szeretné a robotot az Azure-ban webchat, nyissa meg a robot erőforrásait, válassza a Tesztelés webchat lehetőséget, és küldjön üzeneteket a robotnak.

Hibakeresési mód engedélyezése

  1. Az Emulátorban válassza a Hibakeresés lehetőséget, majd indítsa el a hibakeresést.

  2. Adja meg az ngrok IP-címét (ne felejtsen el /api/üzeneteket hozzáadni) a robot URL-címéhez (példáulhttps://e58549b6.ngrok.io/api/messages).

    1. A Microsoft Alkalmazásazonosító mezőben adja meg a robot alkalmazásazonosítóját.
    2. A Microsoft App jelszavához adja meg a robot alkalmazáskulcsát.
    3. Győződjön meg arról, hogy a Megnyitás hibakeresési módban is be van jelölve.
    4. Válassza a Kapcsolódás lehetőséget.
  3. Ha engedélyezve van a hibakeresési mód, az Emulátor létrehoz egy UUID azonosítót. Az UUID egy egyedi azonosító, amely minden alkalommal létrejön, amikor elindítja a hibakeresési módot az Emulátorban.

  4. Másolja és illessze be az UUID-t a tesztbe webchat csatorna csevegőablakában. A csevegőablakban a "Munkamenethez csatolva, minden forgalom replikálva van ellenőrzésre" üzenet jelenik meg.

A robot hibakereséséhez küldjön üzeneteket a konfigurált csatorna csevegőablakában. A helyi Emulator automatikusan frissíti az üzeneteket a hibakeresés minden részletével. A robot üzenetállapotának vizsgálatához válassza a Robot állapota lehetőséget, és bontsa ki az értékeket a megfelelő JSON-ablakban.

debug-inspection-middleware

Következő lépések