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


Hibakeresési irányelvek

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

A robotok összetett alkalmazások, és számos rész együtt működik. Mint minden más összetett alkalmazás, ez is okozhat érdekes hibákat, vagy a robot a várttól eltérő viselkedést okozhat.

Hibakeresés, a robot néha nehéz feladat. Minden fejlesztő saját előnyben részesített módon hajthatja végre ezt a feladatot. Az alábbi irányelvek a legtöbb robotra vonatkozó javaslatokat ismertetik.

Miután ellenőrizte, hogy a robot működik-e, a következő lépés a csatorna csatlakoztatása. Ehhez üzembe helyezheti a robotot egy átmeneti kiszolgálón, és létrehozhat egy saját közvetlen vonalas ügyfelet a robot számára a csatlakozáshoz. További információ: Robot csatlakoztatása Direct Line.

A saját ügyfél létrehozásával meghatározhatja a csatorna belső működését, és tesztelheti, hogy a robot hogyan reagál bizonyos tevékenységcserékre. Miután csatlakozott az ügyfélhez, futtassa a teszteket a robot állapotának beállításához és a funkciók ellenőrzéséhez. Ha a robot egy olyan funkciót használ, mint a beszéd, ezek a csatornák lehetővé tehetik a funkció ellenőrzésének módját.

Megjegyzés

Robot Azure-ban való üzembe helyezésekor a webchat csatorna alapértelmezés szerint ki van építve.

A Bot Framework Emulator és a webchat Azure Portal használatával további betekintést nyerhet abba, hogyan teljesít a robot a különböző csatornákkal való interakció során.

A robot hibakeresése a többi többszálas alkalmazáshoz hasonlóan működik, és töréspontokat állíthat be, vagy használhat olyan funkciókat, mint az azonnali ablak.

A robotok egy eseményvezérelt programozási paradigmát követnek, amelyet nehéz lehet észszerűsíteni, ha nem ismeri. Az az elképzelés, hogy a robot állapot nélküli, többszálas, és aszinkron/várakozási hívásokkal foglalkozik, váratlan hibákat okozhat. Miközben a robot hibakeresése a többi többszálú alkalmazáshoz hasonlóan működik, néhány javaslatot, eszközt és erőforrást is bemutatunk, amelyek segíthetnek.

A robottevékenységek megismerése az Emulator használatával

A robot a normál üzenettevékenység mellett különböző típusú tevékenységekkel is foglalkozik. Ezeknek a tevékenységeknek a megértése segít a robot hatékony kódolásában, és lehetővé teszi annak ellenőrzését, hogy a robot által küldött és fogadott tevékenységek a vártak-e. Az Emulator használatával láthatja, hogy mik ezek a tevékenységek, mikor történnek, és milyen információkat tartalmaznak. További információ: Hibakeresés az Emulátor használatával.

Felhasználói interakciók mentése és lekérése átiratokkal

Az Azure Blob-átirat-tároló egy speciális erőforrást biztosít, ahol a felhasználók és a robot közötti interakciókat tartalmazó átiratokat is tárolhat és lekérhet .

Emellett a felhasználói beviteli interakciók tárolása után az Azure "Storage Explorer" használatával manuálisan is megtekintheti a blob átirattárolójában tárolt átiratokban tárolt adatokat. Az alábbi példa megnyitja a "storage explorer" elemet a "mynewtestblobstorage" beállításaiból. Mentett felhasználói bevitel megnyitásához válassza a következőt: Blob Container > ChannelId > TranscriptId > ConversationId

Példa egy blobát átirattárolóban tárolt átirat-bejegyzésre.

Ez megnyitja a tárolt felhasználói beszélgetési bemenetet JSON formátumban. A felhasználói bevitel a "text:" billentyűvel együtt megmarad. A robot átiratfájljának létrehozásával és használatával kapcsolatos további információkért lásd : A robot hibakeresése átiratfájlokkal.

A köztes szoftver működése

Előfordulhat, hogy a köztes szoftver nem intuitív, amikor először próbálja meg használni, különösen a végrehajtás folytatásával vagy rövidzárolásával kapcsolatban. A köztes szoftver egy forduló kezdő vagy záró peremén hajthat végre egy hívást a next() meghatalmazottnak diktálva, amikor a végrehajtást átadják a robotlogikának.

Ha több köztes szoftvert használ, és a folyamat így van orientált, a meghatalmazott átadhatja a végrehajtást egy másik köztes szoftvernek. A robot köztes szoftver folyamatának részletei segíthetnek egyértelműbbé tenni ezt az elképzelést.

Ha a next() meghatalmazott nincs meghívva, ezt rövidzárlat-útválasztásnak nevezzük. Ez akkor fordul elő, ha a köztes szoftver megfelel az aktuális tevékenységnek, és megállapítja, hogy nem szükséges továbbadni a végrehajtást.

Annak megértése, hogy mikor és miért segíthetnek a köztes szoftver rövidzárlatai annak jelzésében, hogy melyik köztes szoftver legyen az első a folyamatban. Emellett az SDK vagy más fejlesztők által biztosított beépített köztes szoftverek esetében is fontos megérteni, hogy mire számíthat. Egyesek hasznosnak találják, ha először saját köztes szoftvereket hoz létre, hogy kísérletezzen egy kicsit, mielőtt belemerül a beépített köztes szoftverbe.

A robot vizsgálati köztes szoftverrel történő hibakereséséről további információt a Robot hibakeresése vizsgálati köztes szoftverrel című témakörben talál.

Az állapot ismertetése

Az állapot nyomon követése fontos része a robotnak, különösen az összetett feladatok esetében. Általában az ajánlott eljárás a tevékenységek lehető leggyorsabb feldolgozása, és a feldolgozás befejezése, hogy az állapot megmaradjon. A tevékenységek szinte egyszerre küldhetők el a robotnak, és zavaró hibákat okozhatnak az aszinkron architektúra miatt.

A legfontosabb, hogy győződjön meg arról, hogy az állapot úgy marad meg, hogy megfeleljen az elvárásainak. A fenntartott állapottól függően a Cosmos DB-hez és az Azure Table Storage-hoz készült tárolóemulátorok segíthetnek az állapot ellenőrzésében az éles tároló használata előtt.

Fontos

A Cosmos DB tárolási osztály elavult. Az eredetileg a CosmosDbStorage használatával létrehozott tárolók nem tartalmaztak partíciókulcs-készletet, és megkapták a _/partitionKey alapértelmezett partíciókulcsát.

A Cosmos DB-tárolóval létrehozott tárolók a Cosmos DB particionált tárolóival használhatók. További információ: Particionálás az Azure Cosmos DB-ben .

Azt is vegye figyelembe, hogy az örökölt Cosmos DB-tárterülettől eltérően a Cosmos DB particionált tárolója nem hoz létre automatikusan adatbázist a Cosmos DB-fiókjában. Manuálisan kell létrehoznia egy új adatbázist, de hagyja ki a tároló manuális létrehozását, mivel a CosmosDbPartitionedStorage létrehozza a tárolót.

Tevékenységkezelők használata

A tevékenységkezelők egy másik összetettségi réteget is bevezethetnek, különösen azért, mert minden tevékenység független szálon (vagy webmunkásokon fut, az Ön nyelvétől függően). Attól függően, hogy a kezelők mit csinálnak, ez olyan problémákat okozhat, amelyekben az aktuális állapot nem a várt.

A beépített állapot egy forduló végén lesz megírva, azonban az adott folyamat által létrehozott tevékenységek a turn folyamattól függetlenül hajthatók végre. Ez gyakran nem érint minket, de ha egy tevékenységkezelő módosítja az állapotot, akkor a módosítást tartalmazó állapotra van szükség. Ebben az esetben a turn folyamat megvárhatja, amíg a tevékenység befejezi a feldolgozást, mielőtt befejezi, hogy meggyőződjön arról, hogy az adott turn megfelelő állapotát rögzíti.

A küldési tevékenység metódusa és kezelői egyedi problémát jelentenek. Ha egyszerűen meghívja a küldési tevékenységet a küldési tevékenység kezelőjéből, a szálak végtelen elágaztatását okozza. A probléma megkerülésére többféleképpen is lehetőség van, például ha további üzeneteket fűz a kimenő információkhoz, vagy kiír egy másik helyre, például a konzolra vagy egy fájlba, hogy elkerülje a robot összeomlását.

Éles robot hibakeresése

Amikor a robot éles környezetben van, az ngrok használatával bármilyen csatornáról hibakeresést végezhet. A robot több csatornához való közvetlen kapcsolata a Bot Framework egyik kulcsfontosságú funkciója. További információ: Robot hibakeresése bármely csatornáról az ngrok használatával , valamint képesség- vagy képességfelhasználó hibakeresése.

Következő lépések

További források