Allgemeine Problembehandlung für Azure KI Bot Service-Bots

GILT FÜR: SDK v4

Mithilfe dieser häufig gestellten Fragen können Sie allgemeine Probleme bei der Entwicklung oder dem Betrieb von Bots beheben.

Wie kann ich Probleme mit meinem Bot beheben?

  1. Debuggen Sie den Quellcode des Bots mit Visual Studio Code oder Visual Studio.
  2. Testen Sie den Bot mit dem Bot Framework Emulator, bevor Sie ihn in der Cloud bereitstellen.
  3. Stellen Sie den Bot auf einer Cloudhostingplattform wie Azure bereit, und testen Sie dann die Verbindung mit dem Bot mithilfe des integrierten Webchat-Steuerelements im Dashboard Ihres Bots über das Azure-Portal. Wenn für Ihren Bot nach der Bereitstellung in Azure Probleme auftreten, hilft Ihnen ggf. dieser Blogartikel weiter: Understanding Azure troubleshooting and support (Grundlegendes zu Azure-Problembehandlung und -Support).
  4. Schließen Sie die Authentifizierung als mögliches Problem aus.
  5. Testen Sie Ihren Bot in Web Chat, Teams oder in einem anderen Kanal, den Sie mit Ihrem Bot verwenden möchten. Dadurch können Sie die End-to-End-Benutzererfahrung überprüfen.
  6. Es empfiehlt sich, den Bot auf Kanälen zu testen, die zusätzliche Authentifizierungsanforderungen aufweisen, z.B. Direct Line oder Web Chat.
  7. Sehen Sie sich die Anweisungen zum Debuggen eines Bots sowie die anderen Artikel zum Debuggen in diesem Abschnitt an.

Wie kann ich Probleme bei der Authentifizierung beheben?

Ausführliche Informationen zur Behandlung von Authentifizierungsproblemen für Ihren Bot finden Sie unter Problembehandlung bei der Bot Framework-Authentifizierung.

Wie teste ich die Netzwerkkonnektivität zwischen Bots und einem Kanal?

Sie können die ip-Adressen verwenden, die durch die folgenden Schritte generiert werden, um zu überprüfen, ob eine Regel die Verbindung mit diesen Adressen blockiert. Siehe Abschnitt Überprüfen von Firewallablaufverfolgungen bei fehlgeschlagenen Verbindungen.

Testen der Verbindung von Bot zu Kanal

  1. Navigieren Sie in Ihrem Browser zum Azure-Portal.

  2. Wählen Sie Ihren Bot-App-Dienst aus, dessen Verbindung Sie testen möchten.

  3. Wählen Sie im linken Bereich im Abschnitt Entwicklungstools die Option Erweiterte Tools.

  4. Wählen Sie im rechten Bereich Los. Die Seite für Kudu-Informationen wird angezeigt.

  5. Wählen Sie im obersten Menü Debug-Konsole. Klicken Sie dann im Dropdownmenü auf CMD. Die Kudu-Bot-Web-App-Konsole wird geöffnet. Weitere Informationen finden Sie unter Verwenden von Kudu.

    kudu cmd console

  6. Führen Sie die Ausführung aus, und überprüfen Sie nslookup directline.botframework.com , ob die DNS-Auflösung funktioniert. Beachten Sie, dass es sich bei nslookup (Namensserversuche) um ein Befehlszeilentool für die Netzwerkverwaltung handelt, um das Domain Name System (DNS) abzufragen und den Domänen-Namen oder die IP-Adresszuordnung oder andere DNS-Einträge abzurufen. Wenn die DNS-Auflösung funktioniert, enthält die Antwort auf diesen Befehl die relevanten Informationen.

    kudu cmd console bot channel dns

    Das WHOIS IP-Nachschlagetool ist nützlich, um Informationen zu IP-Adressen zu erhalten.

  7. Führen Sie curl -I directline.botframework.com aus. (Die Option -I wird verwendet, um eine Antwort abzurufen, die nur den Header enthält.) Überprüfen Sie, ob ein HTTP-Status von 301 zurückgegeben wird, um die Konnektivität zu überprüfen.

    kudu cmd console http 301

Testen der Verbindung von Kanal zu Bot

Da curl keinen Zugriff auf den Produktionsstandort hat und directline.botframework.com sich im öffentlichen Internet befindet, müssen Sie curl im Simulationsmodus verwenden. Führen Sie die unten gezeigten Schritte außerhalb eines virtuellen privaten Netzwerks (Virtual Private Network, VNET) aus, z. B. mithilfe eines Mobiltelefon-Hotspots. Sehen Sie auch Was ist Azure Virtual Network?.

  1. Führen Sie nslookup ivr-sr-bot.botapps.amat.com aus. Die DNS-Auflösung funktioniert, wenn die Antwort auf diesen Befehl relevante Informationen enthält.

    kudu cmd console channel bot dns

  2. Führen Sie curl -I https://ivr-sr-bot.botapps.amat.com/api/messages aus und überprüfen Sie, ob ein entsprechender HTTP-Statuscode zurückgegeben wird (z. B. 405-Methode nicht zulässig). Die in der Anforderung angegebene Methode ist für die ressource, die durch den angegebenen URI identifiziert wurde, nicht zulässig. Dies ist nur eine Möglichkeit, die Konnektivität zu überprüfen.

    kudu cmd console http 405

  3. Wenn Sie die Antwort vom Bot nicht erhalten, notieren Sie sich die IP-Adresse des Clients.

Überprüfen von Firewallablaufverfolgungen bei fehlgeschlagenen Verbindungen.

Verwenden Sie die IP-Adressen von nslookup ivr-sr-bot.botapps.amat.com und nslookup directline.botframework.com und überprüfen Sie, ob eine Regel die Verbindung mit diesen Adressen in beiden Richtungen blockiert.

Ich verwende das Bot Framework SDK für .NET. Wie kann ich Probleme mit meinem Bot beheben?

Suchen Sie nach Ausnahmen.

Navigieren Sie in Visual Studio 2019 zu Debuggen>Windows>Ausnahmeeinstellungen. Aktivieren Sie im Fenster Ausnahmeeinstellungen das Kontrollkästchen Unterbrechen bei Auslösen von neben Common Language Runtime-Ausnahmen. Möglicherweise wird auch eine Diagnoseausgabe im Fenster „Ausgabe“ angezeigt, wenn ausgelöste oder nicht behandelte Ausnahmen vorliegen.

Sehen Sie sich die Aufrufliste an.

In Visual Studio können Sie auswählen, ob Sie Nur eigenen Code debuggen oder nicht. Das Untersuchen der vollständigen Aufrufliste kann zusätzliche Einblicke in Probleme geben.

Stellen Sie sicher, dass alle Dialogmethoden mit einem Plan zur Handhabung der nächsten Nachricht enden.

Alle Dialogschritte müssen in den nächsten Schritt des Wasserfalls einfließen oder den aktuellen Dialog beenden, damit er aus dem Stapel herausfällt. Wenn ein Schritt nicht korrekt verarbeitet wird, verläuft die Konversation nicht wie gewünscht. Weitere Informationen zu Dialogen finden Sie im Artikel zu den Dialogkonzepten.

Was verursacht einen Fehler mit dem HTTP-Statuscode 429 „Zu viele Anforderungen“?

Eine Fehlerantwort mit dem HTTP-Statuscode 429 gibt an, dass zu viele Anforderungen in einem bestimmten Zeitraum ausgestellt wurden. Der Antworttext sollte eine Erläuterung des Problems enthalten und kann auch das erforderliche Mindestintervall zwischen Anforderungen angeben. Eine mögliche Ursache für diesen Fehler ist das Tool ngrok. Wenn Sie einen kostenlosen Plan („Free“) verwenden und die Beschränkungen von ngrok erreichen, wechseln Sie zur Seite mit Preisen und Einschränkungen auf der entsprechenden Website, um weitere Optionen anzuzeigen.

Warum erhält der Benutzer meine Botnachrichten nicht?

Die in der Antwort generierte Nachrichtenaktivität muss richtig adressiert sein, da sie sonst nicht am gewünschten Ziel ankommt. In den meisten Fällen müssen Sie dies nicht explizit einrichten. Das SDK übernimmt die Adressierung der Nachrichtenaktivität für Sie.

Eine Aktivität richtig zu addressieren, bedeutet, dass die entsprechenden Details zu Konversations-IDs sowie Details zum Absender eingeschlossen werden. Meist wird die Nachrichtenaktivität als Antwort auf eine eingehende Nachrichtenaktivität gesendet. Die Details für die Adressierung können daher der eingehenden Aktivität entnommen werden.

Wenn Sie Ablaufverfolgungen oder Überwachungsprotokolle untersuchen, können Sie überprüfen, ob Ihre Nachrichten richtig adressiert sind. Falls nicht, können Sie in Ihrem Bot einen Breakpoint festlegen und nachsehen, wo die IDs für Ihre Nachricht festgelegt werden.

Wie kann ich Hintergrundaufgaben in ASP.NET ausführen?

In einigen Fällen empfiehlt es sich, eine asynchrone Aufgabe zu initiieren, die einige Sekunden wartet und dann einen Code zum Löschen des Benutzerprofils oder Zurücksetzen des Konversations-/Dialogzustands ausführt. Weitere Informationen zur Vorgehensweise finden Sie unter Ausführen von Hintergrundaufgaben in ASP.NET. Ziehen Sie vor allem die Verwendung von HostingEnvironment.QueueBackgroundWorkItem in Betracht.

Mein Bot reagiert nur langsam auf die erste Nachricht, die er empfängt. Wie kann ich ihn schneller machen?

Bots sind Webdienste, und einige Hostingplattformen, einschließlich Azure, setzen den Dienst automatisch in den Energiesparmodus, wenn über einen bestimmten Zeitraum kein Datenverkehr empfangen wird. Wenn das bei Ihrem Bot der Fall ist, muss er beim nächsten Empfangen einer Nachricht ganz neu starten, wodurch er wesentlich langsamer reagiert als wenn er bereits ausgeführt würde.

Auf einigen Hostingplattformen können Sie den Dienst so konfigurieren, dass er nicht in den Energiesparmodus gesetzt wird. Wenn Ihr Bot in Azure Bot Service-Web-Apps gehostet wird, navigieren Sie im Azure-Portal zum Dienst Ihres Bots, und wählen Sie Anwendungseinstellungen > Immer aktiviert aus. Diese Option steht in den meisten, aber nicht allen Diensttarifen zur Verfügung.

Wie kann ich die Reihenfolge der Nachrichtenübermittlung sicherstellen?

Bot Framework behält die Nachrichtenreihenfolge so weit wie möglich bei. Dies ist beispielsweise der Fall, wenn Sie Nachricht A senden und auf den Abschluss dieses HTTP-Vorgangs warten, bevor Sie einen weiteren HTTP-Vorgang zum Senden von Nachricht B initiieren. Bei einigen Kanälen (etwa SMS und E-Mail) wird die Reihenfolge für das Gerät des Benutzers nicht garantiert.

Warum werden Teile meines Nachrichtentexts gelöscht?

Bot Framework und viele Kanäle interpretiert Text so, als wäre er mit Markdown formatiert. Überprüfen Sie, ob Ihr Text Zeichen enthält, die als Markdown-Syntax interpretiert werden könnten.

Wie kann ich mehrere Bots am gleichen Bot-Dienstendpunkt unterstützen?

Dieses Beispiel zeigt, wie Sie Conversation.Container mit den richtigen MicrosoftAppCredentials konfigurieren und einen einfachen MultiCredentialProvider zum Authentifizieren mehrerer App-IDs und Kennwörter verwenden.

Wie funktionieren Bezeichner in Bot Framework?

Ausführliche Informationen zu Bezeichnern in Bot Framework finden Sie in der Anleitung zu Bezeichnern für Bot Framework.

Wie erhalte ich Zugriff auf die Benutzer-ID?

Bei Bot Framework-Kanälen steht die Benutzer-ID im Feld from.Id jeder Aktivität zur Verfügung, die vom Benutzer gesendet wird. SMS- und E-Mail-Nachrichten stellen in dieser Eigenschaft die unformatierte Benutzer-ID bereit. Bei einigen Kanälen wird die Eigenschaft from.Id verschleiert. In diesen Fällen enthält sie eine eindeutige ID für den Benutzer, die sich von der ID des Benutzers im Kanal unterscheidet. Wenn Sie eine Verbindung mit einem vorhandenen Konto herstellen müssen, können Sie eine Anmeldekarte verwenden und Ihren eigenen OAuth-Flow implementieren, um die Benutzer-ID mit der Benutzer-ID Ihres eigenen Diensts zu verbinden.

Warum werden meine Facebook-Benutzernamen nicht mehr angezeigt?

Haben Sie Ihr Facebook-Kennwort geändert? Hierdurch wird das Zugriffstoken ungültig, und Sie müssen die Konfigurationseinstellungen Ihres Bots für den Facebook Messenger-Kanal im Azure-Portal aktualisieren.

Wie kann ich authentifizierte Dienste von meinem Bot aus verwenden?

Informationen zur Microsoft Entra-ID-Authentifizierung finden Sie im Tutorioal zum Hinzufügen der Authentifizierung zu Ihrem Bot.

Hinweis

Wenn Sie Authentifizierungs- und Sicherheitsfunktionen zu Ihrem Bot hinzufügen, sollten Sie sicherstellen, dass die in Ihrem Code implementierten Muster den für Ihre Anwendung geeigneten Sicherheitsstandards entsprechen.

Wie kann ich den Zugriff auf meinen Bot auf eine vordefinierte Liste von Benutzern beschränken?

Einige Kanäle (z.B. SMS und E-Mail) stellen Adressen ohne Bereichseinschränkung bereit. In diesen Fällen enthalten Nachrichten vom Benutzer die Benutzer-ID in Rohform in der from.Id-Eigenschaft.

Andere Kanäle (z. B. Facebook und Slack) stellen entweder bereichs- oder mandantenbezogene Adressen auf eine Weise bereit, durch die verhindert wird, dass ein Bot die ID eines Benutzers vorab vorhersagen kann. In diesen Fällen müssen Sie den Benutzer über einen Anmeldelink oder einen gemeinsamen geheimen Schlüssel authentifizieren, um zu bestimmen, ob er zur Verwendung des Bots berechtigt ist.

Warum beginnt meine Direct Line 1.1-Konversation nach jeder Nachricht neu?

Hinweis

Dieser Abschnitt gilt nicht für die neueste Version des Direct Line-Protokolls (3.0).

Wenn Ihre Direct Line-Konversation nach jeder Nachricht neu zu beginnen scheint, liegt das wahrscheinlich daran, dass in Nachrichten, die von Ihrem Direct Line-Client an den Bot gesendet werden, die from-Eigenschaft nicht vorhanden oder null ist. Wenn ein Direct Line-Client eine Nachricht sendet, bei der die from-Eigenschaft entweder fehlt oder null ist, weist der Direct Line-Dienst automatisch eine ID zu, sodass jede vom Client gesendete Nachricht von einem neuen und anderen Benutzer zu stammen scheint.

Um dieses Problem zu beheben, legen Sie die from-Eigenschaft in jeder vom Direct Line-Client gesendeten Nachricht auf einen stabilen Wert fest, der den Benutzer, der die Nachricht sendet, eindeutig darstellt. Wenn sich beispielsweise ein Benutzer bereits bei einer Webseite oder App angemeldet hat, können Sie diese vorhandene Benutzer-ID als Wert für die from-Eigenschaft in Nachrichten verwenden, die der Benutzer sendet. Alternativ können Sie auch eine zufällige Benutzer-ID beim Laden der Seite oder der Anwendung generieren, diese ID in einem Cookie oder Gerätestatus speichern und diese ID als Wert für die from-Eigenschaft in Nachrichten verwenden, die der Benutzer sendet.

Warum antwortet der Direct Line 3.0-Dienst mit dem HTTP-Statuscode 502 „Ungültiges Gateway“?

Direct Line 3.0 gibt den HTTP-Statuscode 502 zurück, wenn der Dienst versucht, Kontakt mit Ihrem Bot aufzunehmen, die Anforderung aber nicht erfolgreich abgeschlossen wird. Dieser Fehler deutet an, dass der Bot entweder einen Fehler zurückgibt oder die Anforderung abgelaufen ist. Zum Anzeigen weiterer Informationen zu Fehlern, die von Ihrem Bot generiert werden, wechseln Sie zum Dashboard des Bots im Azure-Portal und klicken auf den Link „Probleme“ für den betreffenden Kanal. Wenn Sie Application Insights für Ihren Bot konfiguriert haben, können Sie auch dort ausführliche Informationen zu Fehlern finden.

Warum erhalte ich beim Erstellen eines Bots eine Ausnahme vom Typ „Authorization_RequestDenied“?

Die Berechtigung zum Erstellen von Azure AI Bot Service-Bots wird über das Microsoft Entra ID-Portal verwaltet. Wenn Berechtigungen im Microsoft Entra ID-Admin-Center nicht ordnungsgemäß konfiguriert sind, erhalten Benutzer bei dem Versuch, einen Botdienst zu erstellen, die Ausnahme Authorization_RequestDenied.

Überprüfen Sie zunächst, ob Sie ein „Gast“ von Active Directory sind:

  1. Melden Sie sich beim Azure-Portal an.
  2. Wählen Sie Alle Dienste aus, und suchen Sie nach aktiv.
  3. Wählen Sie Microsoft Entra ID aus.
  4. Wählen Sie Benutzer aus.
  5. Suchen Sie den Benutzer in der Liste, und stellen Sie sicher, dass der Benutzertyp nicht Gast lautet.

Microsoft Entra ID User-type

Nachdem Sie sich vergewissert haben, dass Sie kein Gast sind, muss der AAD-Administrator die folgenden Einstellungen konfigurieren, um sicherzustellen, dass Benutzer in einem Active Directory Botdienste erstellen können:

  1. Melden Sie sich beim Microsoft Entra ID-Admin-Center an. Wechseln Sie zu Benutzer und Gruppen, und wählen Sie Benutzereinstellungen aus.
  2. Legen Sie im Abschnitt App-Registrierung die Option Benutzer können Anwendungen registrieren auf Ja fest. Dadurch können Benutzer in Ihrem Active Directory Botdienste erstellen.
  3. Setzen Sie im Abschnitt Externe Benutzer die Option Berechtigungen für Gastbenutzer sind eingeschränkt auf Nein. Dadurch können Gastbenutzer in Ihrem Active Directory Botdienste erstellen.

Microsoft Entra ID Admin Center

Warum kann ich meinen Bot nicht migrieren?

Wenn Ihr Bot in „dev.botframework.com“ registriert ist und Sie ihn zu Azure migrieren möchten, dabei aber Probleme auftreten, gehört der Bot möglicherweise nicht Ihrem Standardverzeichnis an. Führen Sie die folgenden Schritte aus:

  1. Fügen Sie im Zielverzeichnis einen neuen Benutzer hinzu (über die E-Mail-Adresse), der kein Mitglied des Standardverzeichnisses ist, und weisen Sie dem Benutzer die Rolle „Mitwirkender“ für die Abonnements zu, die das Ziel der Migration sind.

  2. Fügen Sie im Entwicklerportal die E-Mail-Adresse des Benutzers als Mitbesitzer des zu migrierenden Bots hinzu. Melden Sie sich anschließend ab.

  3. Melden Sie sich beim Entwicklerportal als der neue Benutzer an, und fahren Sie mit der Migration des Bots fort.

Wo finde ich weitere Hilfe?

  • Suchen Sie nach bereits beantworteten Fragen auf Stack Overflow oder stellen Sie eigene Fragen unter Verwendung des botframework-Tags. Für Stack Overflow gelten Richtlinien. Es ist z. B. ein beschreibender Titel erforderlich, eine vollständige und präzise Beschreibung des Problems sowie ausreichend Details zur Reproduktion des Problems. Featureanforderungen oder zu weit gefasste Fragen sind nicht angemessen. Neue Benutzer sollten sich die Informationen im Stack Overflow-Hilfecenter ansehen.
  • Informationen zu bekannten Problemen mit dem Bot Framework SDK finden Sie in den BotBuilder-Problemen auf GitHub. Dort können Sie auch ein neues Problem melden.
  • Die BotBuilder-Community-Diskussionsseite von Gitter.