Udostępnij za pośrednictwem


Ogólne rozwiązywanie problemów z botami usługi Azure AI Bot Service

DOTYCZY: ZESTAW SDK w wersji 4

Te często zadawane pytania mogą pomóc w rozwiązywaniu typowych problemów z programowaniem botów lub operacyjnymi.

Jak mogę rozwiązywać problemy z botem?

  1. Debugowanie kodu źródłowego bota za pomocą programu Visual Studio Code lub Visual Studio.
  2. Przetestuj bota przy użyciu programu Bot Framework Emulator przed wdrożeniem go w chmurze.
  3. Wdróż bota na platformie hostingu w chmurze, takiej jak platforma Azure, a następnie przetestuj łączność z botem przy użyciu wbudowanej kontrolki czatu internetowego na pulpicie nawigacyjnym bota w witrynie Azure Portal. Jeśli po wdrożeniu bota na platformie Azure wystąpią problemy, rozważ skorzystanie z tego artykułu w blogu: Omówienie rozwiązywania problemów i pomocy technicznej platformy Azure.
  4. Wyklucz uwierzytelnianie jako możliwy problem.
  5. Przetestuj bota na czat internetowy, aplikacji Teams lub w dowolnym innym kanale, którego zamierzasz używać z botem. Pomoże to zweryfikować środowisko użytkownika końcowego.
  6. Rozważ przetestowanie bota w kanałach, które mają dodatkowe wymagania dotyczące uwierzytelniania, takie jak direct line lub czat internetowy.
  7. Zapoznaj się z instrukcjami debugowania bota i innymi artykułami debugowania w tej sekcji.

Jak rozwiązywać problemy z uwierzytelnianiem?

Aby uzyskać szczegółowe informacje na temat rozwiązywania problemów z uwierzytelnianiem bota, zobacz Rozwiązywanie problemów z uwierzytelnianiem w usłudze Bot Framework.

Jak mogę przetestować łączność sieciową między botami a kanałem?

Możesz użyć adresów IP wygenerowanych przez poniższe kroki, aby sprawdzić, czy istnieje reguła blokująca połączenie z tymi adresami. Zobacz sekcję Sprawdzanie śladów zapory na połączeniach, które zakończyły się niepowodzeniem.

Testowanie połączenia z bota do kanału

  1. W przeglądarce przejdź do witryny Azure Portal.

  2. Wybierz usługę App Service bota, której połączenie chcesz przetestować.

  3. W okienku po lewej stronie w sekcji Narzędzia programistyczne wybierz pozycję Narzędzia zaawansowane.

  4. W okienku po prawej stronie wybierz pozycję Przejdź. Zostanie wyświetlona strona informacyjna Kudu.

  5. Na górnym pasku menu wybierz pozycję Konsola debugowania. Następnie w menu rozwijanym wybierz pozycję CMD. Zostanie otwarta konsola aplikacji internetowej bota Kudu. Aby uzyskać więcej informacji, zobacz Kudu.

    konsola kudu cmd

  6. Uruchom polecenie nslookup directline.botframework.com i sprawdź, czy rozpoznawanie nazw DNS działa. Zwróć uwagę, że nslookup (wyszukiwanie serwera nazw) jest narzędziem wiersza polecenia administrowania siecią do wykonywania zapytań dotyczących systemu nazw domen (DNS) w celu uzyskania nazwy domeny lub mapowania adresów IP lub innych rekordów DNS. Jeśli rozpoznawanie nazw DNS działa, odpowiedź na to polecenie będzie zawierać odpowiednie informacje.

    kudu cmdu konsoli bot channel dns

    Narzędzie wyszukiwania adresów IP WHOIS jest przydatne do uzyskiwania informacji o adresach IP.

  7. Uruchom program curl -I directline.botframework.com. (Opcja -I służy do uzyskiwania odpowiedzi zawierającej tylko nagłówek). Sprawdź dokładnie, czy jest zwracany stan HTTP 301, aby sprawdzić, czy istnieje łączność.

    kudu cmd console http 301

Testowanie połączenia z kanału do bota

Ponieważ program curl nie ma dostępu do witryny produkcyjnej i directline.botframework.com znajduje się w publicznym Internecie, należy użyć narzędzia curl w trybie symulacji. Wykonaj poniższe kroki poza wirtualną siecią prywatną (VNET), na przykład przy użyciu hotspotu telefonu komórkowego. Zobacz też Co to jest usługa Azure Virtual Network?.

  1. Uruchom program nslookup ivr-sr-bot.botapps.amat.com. Rozpoznawanie nazw DNS działa, jeśli odpowiedź na to polecenie zawiera istotne informacje.

    kudu cmdu konsoli kanału dns bota

  2. Uruchom curl -I https://ivr-sr-bot.botapps.amat.com/api/messages polecenie i sprawdź, czy jest zwracany odpowiedni kod stanu HTTP (na przykład niedozwolona metoda 405). Metoda określona w żądaniu nie jest dozwolona dla zasobu określonego identyfikatora URI. Jest to tylko sposób sprawdzenia, czy istnieje łączność.

    kudu cmd console http 405

  3. Jeśli nie otrzymasz odpowiedzi od bota, zapisz adres IP klienta.

Sprawdzanie śladów zapory na połączeniach, które zakończyły się niepowodzeniem

Użyj adresów IP z nslookup ivr-sr-bot.botapps.amat.com i nslookup directline.botframework.com i sprawdź, czy istnieje reguła blokująca połączenie z tymi adresami w obu kierunkach.

Używam zestawu SDK platformy Bot Framework dla platformy .NET. Jak mogę rozwiązywać problemy z botem?

Poszukaj wyjątków

W programie Visual Studio 2019 przejdź do pozycji Debugowanie>ustawień wyjątków systemu Windows.> W oknie Ustawienia wyjątków zaznacz pole wyboru Break When Thrown (Przerywanie po wyrzuceniu) obok pozycji Common Language Runtime Exceptions (Wyjątki środowiska uruchomieniowego języka wspólnego). Dane wyjściowe diagnostyki mogą być również widoczne w oknie Dane wyjściowe, gdy wystąpią wyjątki lub nieobsługiwane.

Przyjrzyj się stosowi wywołań

W programie Visual Studio możesz wybrać, czy debugujesz tylko mój kod , czy nie. Badanie pełnego stosu wywołań może zapewnić lepszy wgląd w wszelkie problemy.

Upewnij się, że wszystkie metody okna dialogowego kończą się planem obsługi następnego komunikatu

Wszystkie kroki okna dialogowego muszą być wprowadzane do następnego kroku kaskadowego lub zakończyć bieżące okno dialogowe, aby wyłączyć go ze stosu. Jeśli krok nie jest poprawnie obsługiwany, konwersacja nie będzie kontynuowana w oczekiwany sposób. Zapoznaj się z artykułem dotyczącym pojęć dla okien dialogowych , aby uzyskać więcej informacji na temat okien dialogowych.

Co powoduje błąd z kodem stanu HTTP 429 "Zbyt wiele żądań"?

Odpowiedź na błąd z kodem stanu HTTP 429 wskazuje, że w danym czasie zostało wysłanych zbyt wiele żądań. Treść odpowiedzi powinna zawierać wyjaśnienie problemu i może również określać minimalny wymagany interwał między żądaniami.

Dlaczego moje komunikaty bota nie są odbierane przez użytkownika?

Działanie komunikatu wygenerowane w odpowiedzi musi zostać poprawnie rozwiązane. W przeciwnym razie nie zostanie ono dostarczone do zamierzonego miejsca docelowego. W większości przypadków nie trzeba tego jawnie obsługiwać; zestaw SDK zajmuje się działaniem komunikatu.

Aby poprawnie rozwiązać działanie, dołącz odpowiednie szczegóły identyfikatora konwersacji wraz ze szczegółami dotyczącymi nadawcy. W większości przypadków działanie komunikatu jest wysyłane w odpowiedzi na wiadomość, która dotarła. W związku z tym szczegóły adresowania można pobrać z działania przychodzącego.

Jeśli zbadasz ślady lub dzienniki inspekcji, możesz sprawdzić, czy komunikaty są poprawnie rozwiązane. Jeśli tak nie jest, ustaw punkt przerwania w botze i sprawdź, gdzie identyfikatory są ustawiane dla wiadomości.

Jak uruchamiać zadania w tle w ASP.NET?

W niektórych przypadkach możesz zainicjować zadanie asynchroniczne, które czeka kilka sekund, a następnie wykonuje kod w celu wyczyszczenia profilu użytkownika lub zresetowania stanu konwersacji/okna dialogowego. Aby uzyskać szczegółowe informacje o tym, jak to osiągnąć, zobacz How to run Background Tasks in ASP.NET (Jak uruchamiać zadania w tle w ASP.NET). W szczególności rozważ użycie elementu HostingEnvironment.QueueBackgroundWorkItem.

Mój bot jest powolny, aby odpowiedzieć na pierwszy otrzymany komunikat. Jak mogę przyspieszyć?

Boty to usługi internetowe i niektóre platformy hostingu, w tym platforma Azure, automatycznie umieszczają usługę w stanie uśpienia, jeśli nie odbierają ruchu przez określony czas. Jeśli tak się stanie z botem, musi on zostać ponownie uruchomiony od zera następnym razem, gdy otrzyma wiadomość, co sprawia, że jego odpowiedź jest znacznie wolniejsza, niż gdyby był już uruchomiony.

Niektóre platformy hostingu umożliwiają skonfigurowanie usługi tak, aby nie były w stanie uśpienia. Jeśli bot jest hostowany w usłudze Azure AI Bot Service Web Apps, przejdź do usługi bota w witrynie Azure Portal, wybierz pozycję Ustawienia aplikacji, a następnie wybierz pozycję Zawsze włączone. Ta opcja jest dostępna w większości, ale nie we wszystkich planach usług.

Jak mogę zagwarantować zamówienie dostarczania komunikatów?

Platforma Bot Framework zachowa kolejność komunikatów tak bardzo, jak to możliwe. Jeśli na przykład wyślesz komunikat A i zaczekasz na ukończenie tej operacji HTTP, zanim zainicjujesz inną operację HTTP, aby wysłać komunikat B. Niektóre kanały, takie jak SMS i e-mail, nie gwarantują kolejności odbierania wiadomości przez użytkownika.

Dlaczego część tekstu wiadomości jest porzucona?

Platforma Bot Framework i wiele kanałów interpretują tekst tak, jakby był sformatowany przy użyciu języka Markdown. Sprawdź, czy tekst zawiera znaki, które mogą być interpretowane jako składnia języka Markdown.

Jak mogę obsługiwać wiele botów w tym samym punkcie końcowym usługi bota?

W tym przykładzie pokazano, jak skonfigurować Conversation.Container element z prawej strony MicrosoftAppCredentials i użyć prostego MultiCredentialProvider do uwierzytelniania wielu identyfikatorów aplikacji i haseł.

Jak działają identyfikatory w środowisku Bot Framework?

Aby uzyskać szczegółowe informacje na temat identyfikatorów w usłudze Bot Framework, zobacz Przewodnik po platformie Bot Framework dotyczący identyfikatorów.

Jak uzyskać dostęp do identyfikatora użytkownika?

Kanały platformy Bot Framework przedstawiają identyfikator użytkownika w from.Id polu dowolnego działania wysłanego przez użytkownika. Wiadomości SMS i wiadomości e-mail będą zawierać nieprzetworzone identyfikatory użytkownika w tej właściwości. Niektóre kanały ukrywają from.Id właściwość tak, aby zawierała unikatowy identyfikator użytkownika, który różni się od identyfikatora użytkownika w kanale. Jeśli musisz nawiązać połączenie z istniejącym kontem, możesz użyć karty logowania i zaimplementować własny przepływ OAuth, aby połączyć identyfikator użytkownika z identyfikatorem użytkownika własnej usługi.

Dlaczego nazwy użytkowników serwisu Facebook nie są już wyświetlane?

Czy zmieniono hasło na Facebooku? Spowoduje to unieważnienie tokenu dostępu i należy zaktualizować ustawienia konfiguracji bota dla kanału Facebook Messenger w witrynie Azure Portal.

Jak mogę używać usług uwierzytelnionych z bota?

Aby uzyskać informacje na temat uwierzytelniania identyfikatora Entra firmy Microsoft, zobacz samouczek Dodawanie uwierzytelniania do bota .

Uwaga

W przypadku dodawania funkcji uwierzytelniania i zabezpieczeń do bota należy upewnić się, że wzorce implementowane w kodzie są zgodne ze standardami zabezpieczeń odpowiednimi dla aplikacji.

Jak ograniczyć dostęp do bota do wstępnie określonej listy użytkowników?

Niektóre kanały, takie jak SMS i e-mail, udostępniają niezakresowe adresy. W takich przypadkach komunikaty od użytkownika będą zawierać nieprzetworzone identyfikatory użytkownika we from.Id właściwości .

Inne kanały, takie jak Facebook i Slack, udostępniają adresy o określonym zakresie lub dzierżawie w sposób uniemożliwiający botowi przewidywanie identyfikatora użytkownika przed upływem czasu. W takich przypadkach należy uwierzytelnić użytkownika za pośrednictwem linku logowania lub udostępnionego wpisu tajnego, aby określić, czy są autoryzowani do korzystania z bota.

Dlaczego moja rozmowa w trybie Direct Line 1.1 zaczyna się od nowa po każdej wiadomości?

Uwaga

Ta sekcja nie dotyczy najnowszej wersji protokołu Direct Line 3.0

Jeśli konwersacja w wierszu bezpośrednim zaczyna się od nowa po każdym komunikacie, from prawdopodobnie brakuje właściwości lub null w komunikatach wysyłanych przez klienta direct line do bota. Gdy klient linii bezpośredniej wysyła komunikat z from brakującą właściwością lub null, usługa Direct Line automatycznie przydziela identyfikator, więc każdy komunikat, który wysyła klient, będzie wyświetlany z nowego, innego użytkownika.

Aby rozwiązać ten problem, ustaw from właściwość w każdym komunikacie, który klient linii bezpośredniej wysyła do stabilnej wartości, która unikatowo reprezentuje użytkownika wysyłającego komunikat. Jeśli na przykład użytkownik jest już zalogowany do strony internetowej lub aplikacji, możesz użyć tego istniejącego identyfikatora użytkownika jako wartości from właściwości w wiadomościach wysyłanych przez użytkownika. Alternatywnie możesz wygenerować losowy identyfikator użytkownika podczas ładowania strony lub ładowania aplikacji, zapisać ten identyfikator w pliku cookie lub stanie urządzenia i użyć tego identyfikatora jako wartości from właściwości w komunikatach wysyłanych przez użytkownika.

Co powoduje, że usługa Direct Line 3.0 odpowiada za pomocą kodu stanu HTTP 502 "Zła brama"?

Wiersz bezpośredni 3.0 zwraca kod stanu HTTP 502, gdy próbuje skontaktować się z botem, ale żądanie nie zostanie ukończone pomyślnie. Ten błąd wskazuje, że bot zwrócił błąd lub upłynął limit czasu żądania. Aby uzyskać więcej informacji na temat błędów generowanych przez bota, przejdź do pulpitu nawigacyjnego bota w witrynie Azure Portal i wybierz link "Problemy" dla kanału, którego dotyczy problem. Jeśli skonfigurowano usługę Application Insights dla bota, możesz również znaleźć tam szczegółowe informacje o błędach.

Dlaczego otrzymuję wyjątek Authorization_RequestDenied podczas tworzenia bota?

Uprawnienia do tworzenia botów usługi Azure AI Bot Service są zarządzane za pośrednictwem portalu Microsoft Entra ID. Jeśli uprawnienia nie są prawidłowo skonfigurowane w centrum administracyjnym microsoft Entra ID, użytkownicy otrzymają wyjątek Authorization_RequestDenied podczas próby utworzenia usługi bota.

Najpierw sprawdź, czy jesteś "gościem" katalogu:

  1. Zaloguj się do witryny Azure Portal.
  2. Wybierz pozycję Wszystkie usługi i wyszukaj aktywne.
  3. Wybierz Microsoft Entra ID.
  4. Wybierz Użytkowników.
  5. Znajdź użytkownika z listy i upewnij się, że typ użytkownika nie jest gościem.

Typ użytkownika identyfikatora entra firmy Microsoft

Po upewnieniu się, że nie jesteś gościem, aby upewnić się, że użytkownicy w usłudze Active Directory mogą tworzyć usługę bota, administrator katalogu musi skonfigurować następujące ustawienia:

  1. Zaloguj się do centrum administracyjnego microsoft Entra ID. Przejdź do pozycji Użytkownicy i grupy i wybierz pozycję Ustawienia użytkownika.
  2. W sekcji Rejestracja aplikacji ustaw opcję Użytkownicy mogą rejestrować aplikacje na wartość Tak. Dzięki temu użytkownicy w katalogu mogą tworzyć usługę bota.
  3. W sekcji Użytkownicy zewnętrzni ustaw uprawnienia użytkowników-gości są ograniczone do pozycji Nie. Dzięki temu użytkownicy-goście w katalogu mogą tworzyć usługę bota.

Microsoft Entra ID Admin Center

Dlaczego nie mogę przeprowadzić migracji bota?

Jeśli bot jest zarejestrowany w dev.botframework.com i chcesz przeprowadzić migrację na platformę Azure, ale masz problemy z migracją bota, może to być spowodowane tym, że bot należy do katalogu innego niż katalog domyślny. Spróbuj wykonać następujące czynności:

  1. Z katalogu docelowego dodaj nowego użytkownika (za pośrednictwem adresu e-mail), który nie jest członkiem katalogu domyślnego, przydziel rolę współautora użytkownika w subskrypcjach, które są celem migracji.

  2. W portalu deweloperskim dodaj adres e-mail użytkownika jako współwłaścicieli bota, który powinien zostać zmigrowany. Następnie wyloguj się.

  3. Zaloguj się do portalu deweloperskiego jako nowy użytkownik i przejdź do migracji bota.

Gdzie mogę uzyskać więcej pomocy?

  • Wyszukaj wcześniej odpowiedzi na pytania w witrynie Stack Overflow lub opublikuj własne pytania przy użyciu tagu botframework . Stack Overflow ma wytyczne, takie jak wymaganie opisowego tytułu, kompletnej i zwięzłej instrukcji problemu oraz wystarczających szczegółów do odtworzenia problemu. Żądania funkcji lub nadmiernie szerokie pytania są poza tematem; Nowi użytkownicy powinni odwiedzić Centrum pomocy Stack Overflow, aby uzyskać więcej informacji.
  • Zapoznaj się z tematem BotBuilder issues in GitHub ( Problemy z platformą BotBuilder w usłudze GitHub), aby uzyskać informacje na temat znanych problemów z zestawem Bot Framework SDK lub zgłosić nowy problem.
  • Dyskusja społeczności BotBuilder na temat usługi Gitter.