Udostępnij za pośrednictwem


Wskazówki dotyczące debugowania

DOTYCZY: Zestaw SDK w wersji 4

Boty to złożone aplikacje, z wieloma częściami, które współpracują ze sobą. Podobnie jak każda inna złożona aplikacja, może to prowadzić do pewnych interesujących usterek lub spowodować, że bot zachowuje się inaczej niż oczekiwano.

Debugowanie— bot może czasami być trudnym zadaniem. Każdy deweloper ma własny preferowany sposób realizacji tego zadania. Poniższe wskazówki to sugestie dotyczące większości botów.

Po sprawdzeniu, czy bot działa, następnym krokiem jest połączenie go z kanałem. W tym celu możesz wdrożyć bota na serwerze przejściowym i utworzyć własnego klienta linii bezpośredniej dla bota w celu nawiązania połączenia. Aby uzyskać więcej informacji, zobacz Łączenie bota z Direct Line.

Tworzenie własnego klienta pozwala zdefiniować wewnętrzne działania kanału i przetestować sposób reagowania bota na niektóre wymiany działań. Po nawiązaniu połączenia z klientem uruchom testy, aby skonfigurować stan bota i zweryfikować funkcje. Jeśli bot korzysta z funkcji takiej jak mowa, za pomocą tych kanałów może zaoferować sposób weryfikacji tej funkcjonalności.

Uwaga

Podczas wdrażania bota na platformie Azure kanał czat internetowy jest domyślnie aprowizowany.

Korzystanie zarówno z Bot Framework Emulator, jak i czat internetowy za pośrednictwem Azure Portal w tym miejscu może zapewnić lepszy wgląd w sposób działania bota podczas interakcji z różnymi kanałami.

Debugowanie bota działa podobnie do innych aplikacji wielowątkowych, z możliwością ustawiania punktów przerwania lub używania funkcji, takich jak natychmiastowe okno.

Boty podążają za modelem programowania opartego na zdarzeniach, co może być trudne do racjonalizacji, jeśli nie znasz go. Pomysł bota jest bezstanowy, wielowątkowy i radzenie sobie z wywołaniami asynchronicznych/await może spowodować nieoczekiwane błędy. Podczas debugowania bota działa podobnie do innych aplikacji wielowątkowych, omówimy pewne sugestie, narzędzia i zasoby, które pomogą.

Opis działań bota za pomocą emulatora

Bot zajmuje się różnymi typami działań oprócz normalnego działania komunikatu . Zrozumienie tych działań pomoże Ci wydajnie kodować bota i umożliwia zweryfikowanie działań wysyłanych i odbieranych przez bota. Za pomocą emulatora zostaną wyświetlone informacje o tych działaniach, ich wystąpieniu i informacjach, które zawierają. Aby uzyskać więcej informacji, zobacz Debugowanie za pomocą emulatora.

Zapisywanie i pobieranie interakcji użytkownika z transkrypcjami

Magazyn transkrypcji obiektów blob platformy Azure udostępnia wyspecjalizowany zasób, w którym można przechowywać i pobierać transkrypcje zawierające interakcje między użytkownikami a botem.

Ponadto po zapisie interakcji wejściowych użytkownika możesz użyć "Eksploratora magazynu" platformy Azure, aby ręcznie wyświetlić dane zawarte w transkrypcjach przechowywanych w magazynie transkrypcji obiektów blob. Poniższy przykład otwiera pozycję "Eksplorator magazynu" z ustawień "mynewtestblobstorage". Aby otworzyć zapisane dane wejściowe użytkownika, wybierz: Identyfikator konwersacji identyfikatora TransscriptId >> kontenera > obiektów blob

Przykład wpisu transkrypcji przechowywanego w magazynie transkrypcji obiektów blob.

Spowoduje to otwarcie przechowywanych danych wejściowych konwersacji użytkownika w formacie JSON. Dane wejściowe użytkownika są zachowywane razem z kluczem "text:". Aby uzyskać więcej informacji na temat tworzenia i używania pliku transkrypcji bota, zobacz Debugowanie bota przy użyciu plików transkrypcji.

Jak działa oprogramowanie pośredniczące

Oprogramowanie pośredniczące może nie być intuicyjne podczas pierwszej próby użycia, szczególnie w odniesieniu do kontynuacji lub zwarcia wykonania. Oprogramowanie pośredniczące może być wykonywane na wiodącej lub końcowej krawędzi kolei, z wywołaniem next() do delegata dyktowania po przekazaniu wykonywania do logiki bota.

Jeśli używasz wielu elementów oprogramowania pośredniczącego i jest to sposób zorientowania potoku, delegat może przekazać wykonywanie do innego elementu oprogramowania pośredniczącego. Szczegółowe informacje na temat potoku oprogramowania pośredniczącego bota mogą pomóc w wyczyszczaniu tego pomysłu.

next() Jeśli delegat nie jest wywoływany, jest to nazywane routingiem z obwodem krótkotrwałym. Dzieje się tak, gdy oprogramowanie pośredniczące spełnia bieżące działanie i określa, że nie jest konieczne przekazanie wykonania.

Zrozumienie, kiedy i dlaczego skróty oprogramowania pośredniczącego mogą pomóc wskazać, który kawałek oprogramowania pośredniczącego powinien pojawić się jako pierwszy w potoku. Ponadto zrozumienie, czego należy oczekiwać, jest ważne dla wbudowanego oprogramowania pośredniczącego dostarczonego przez zestaw SDK lub innych deweloperów. Niektórzy uważają, że warto najpierw spróbować utworzyć własne oprogramowanie pośredniczące, aby nieco poeksperymentować przed rozpoczęciem pracy z wbudowanym oprogramowaniem pośredniczącym.

Aby uzyskać więcej informacji na temat debugowania bota przy użyciu oprogramowania pośredniczącego inspekcji, zobacz Debugowanie bota za pomocą oprogramowania pośredniczącego inspekcji.

Informacje o stanie

Śledzenie stanu jest ważną częścią bota, szczególnie w przypadku złożonych zadań. Ogólnie rzecz biorąc, najlepszym rozwiązaniem jest przetwarzanie działań tak szybko, jak to możliwe i umożliwianie ukończenia przetwarzania w taki sposób, aby stan był utrwalany. Działania mogą być wysyłane do bota niemal w tym samym czasie i mogą powodować mylące usterki z powodu architektury asynchronicznej.

Co najważniejsze, upewnij się, że stan utrzymuje się w sposób zgodny z oczekiwaniami. W zależności od stanu utrwalonego emulatory magazynu dla usług Cosmos DB i Azure Table Storage mogą ułatwić sprawdzenie stanu przed użyciem magazynu produkcyjnego.

Ważne

Klasa magazynu usługi Cosmos DB została przestarzała. Kontenery utworzone pierwotnie za pomocą usługi CosmosDbStorage nie miały zestawu kluczy partycji i otrzymały domyślny klucz partycji _/partitionKey.

Kontenery utworzone za pomocą magazynu usługi Cosmos DB mogą być używane z magazynem podzielonym na partycje usługi Cosmos DB. Aby uzyskać więcej informacji, przeczytaj artykuł Partitioning in Azure Cosmos DB (Partycjonowanie w usłudze Azure Cosmos DB ).

Należy również pamiętać, że w przeciwieństwie do starszego magazynu usługi Cosmos DB magazyn podzielony na partycje usługi Cosmos DB nie tworzy automatycznie bazy danych na koncie usługi Cosmos DB. Musisz ręcznie utworzyć nową bazę danych, ale pomiń ręcznie tworzenie kontenera, ponieważ usługa CosmosDbPartitionedStorage utworzy kontener.

Jak używać programów obsługi działań

Programy obsługi działań mogą wprowadzać kolejną warstwę złożoności, szczególnie dlatego, że każde działanie jest uruchamiane na niezależnym wątku (lub w zależności od języka). W zależności od tego, co robią programy obsługi, może to powodować problemy, w których bieżący stan nie jest oczekiwany.

Stan wbudowany jest zapisywany na końcu kolei, jednak wszystkie działania generowane przez ten obrót są wykonywane niezależnie od potoku zwrotu. Często nie ma to wpływu na nas, ale jeśli program obsługi działań zmieni stan, potrzebujemy stanu zapisanego, aby zawierał tę zmianę. W takim przypadku potok kolei może czekać na zakończenie przetwarzania działania przed ukończeniem, aby upewnić się, że rejestruje prawidłowy stan dla tego zwrotu.

Metoda działania wysyłania i jej procedury obsługi stanowią unikatowy problem. Po prostu wywołanie działania wysyłania z poziomu programu obsługi działań wysyłania powoduje nieskończone rozwidanie wątków. Istnieją sposoby obejścia tego problemu, takie jak dołączanie dodatkowych komunikatów do informacji wychodzących lub zapisywanie w innej lokalizacji, takiej jak konsola lub plik, aby uniknąć awarii bota.

Debugowanie bota produkcyjnego

Gdy bot jest w środowisku produkcyjnym, możesz debugować bota z dowolnego kanału przy użyciu narzędzia ngrok. Bezproblemowe połączenie bota z wieloma kanałami jest kluczową funkcją dostępną w usłudze Bot Framework. Aby uzyskać więcej informacji, zobacz Debugowanie bota z dowolnego kanału przy użyciu narzędzia ngrok i Debugowanie umiejętności lub użytkownika umiejętności.

Następne kroki

Dodatkowe zasoby