Dela via


Allmän felsökning för Azure AI Bot Service-robotar

GÄLLER FÖR: SDK v4

De här vanliga frågorna kan hjälpa dig att felsöka vanliga problem med robotutveckling eller drift.

Hur kan jag felsöka problem med min robot?

  1. Felsöka robotens källkod med Visual Studio Code eller Visual Studio.
  2. Testa roboten med Hjälp av Bot Framework-emulatorn innan du distribuerar den till molnet.
  3. Distribuera roboten till en molnvärdplattform som Azure och testa sedan anslutningen till roboten med hjälp av den inbyggda webbchattkontrollen på robotens instrumentpanel i Azure Portal. Om du stöter på problem med roboten när du har distribuerat den till Azure kan du överväga att använda den här bloggartikeln: Förstå Felsökning och support för Azure.
  4. Uteslut autentisering som ett möjligt problem.
  5. Testa roboten på Webbchatt, Teams eller någon annan kanal som du tänker använda med din robot. Detta hjälper dig att verifiera användarupplevelsen från slutpunkt till slutpunkt.
  6. Överväg att testa din robot på kanaler som har extra autentiseringskrav, till exempel Direct Line eller Webbchatt.
  7. Granska felsökningen av en robot och de andra felsökningsartiklarna i det avsnittet.

Hur kan jag felsöka autentiseringsproblem?

Mer information om hur du felsöker autentiseringsproblem med din robot finns i Felsöka Bot Framework-autentisering.

Hur gör jag för att testa nätverksanslutningen mellan robotar och en kanal?

Du kan använda IP-adresserna som genereras av stegen nedan för att kontrollera om det finns någon regel som blockerar anslutningen till dessa adresser. Se avsnittet Kontrollera brandväggsspårningar på misslyckade anslutningar.

Testa anslutningen från robot till kanal

  1. I en webbläsare går du till Azure-portalen.

  2. Välj din robot App Service vars anslutning du vill testa.

  3. I den vänstra rutan går du till avsnittet Utvecklingsverktyg och väljer Avancerade verktyg.

  4. I den högra rutan väljer du . Sidan Kudu-information visas.

  5. I den översta menyraden väljer du Felsökningskonsol. Välj sedan CMD i den nedrullningsbara menyn. Kudu-robotwebbappkonsolen öppnas. Mer information finns i Kudu.

    kudu-cmd-konsol

  6. Kör nslookup directline.botframework.com och kontrollera om DNS-matchningen fungerar. Observera att nslookup (namnserversökning) är ett kommandoradsverktyg för nätverksadministration för att fråga DNS (Domain Name System) för att hämta domännamns- eller IP-adressmappning eller andra DNS-poster. Om DNS-matchningen fungerar innehåller svaret på det här kommandot relevant information.

    kudu cmd console bot channel dns

    WHOIS IP Lookup Tool är användbart för att få information om IP-adresser.

  7. Kör curl -I directline.botframework.com. (Alternativet -I används för att hämta ett svar som endast innehåller huvudet.) Kontrollera att HTTP-statusen 301 returneras för att kontrollera att det finns en anslutning.

    kudu cmd console http 301

Testa anslutningen från kanal till robot

Eftersom curl inte har åtkomst till produktionsplatsen och directline.botframework.com finns på det offentliga Internet måste du använda curl i simuleringsläge. Utför stegen nedan utanför ett virtuellt privat nätverk (VNET), till exempel med hjälp av en mobil hotspot. Se även Vad är Azure Virtual Network?.

  1. Kör nslookup ivr-sr-bot.botapps.amat.com. DNS-matchningen fungerar om svaret på det här kommandot innehåller relevant information.

    kudu cmd console channel bot dns

  2. Kör curl -I https://ivr-sr-bot.botapps.amat.com/api/messages och kontrollera om en lämplig HTTP-statuskod returneras (till exempel 405-metoden tillåts inte). Den metod som anges i begäran är inte tillåten för den resurs som identifieras av den angivna URI:n. Det här är bara ett sätt att kontrollera att det finns en anslutning.

    kudu cmd-konsol http 405

  3. Om du inte får svaret från roboten skriver du ned klientens IP-adress.

Kontrollera brandväggsspårningar på misslyckade anslutningar

Använd IP-adresserna från nslookup ivr-sr-bot.botapps.amat.com och nslookup directline.botframework.com kontrollera om det finns en regel som blockerar anslutningen till dessa adresser i båda riktningarna.

Jag använder Bot Framework SDK för .NET. Hur kan jag felsöka problem med min robot?

Leta efter undantag

I Visual Studio 2019 går du till Felsöka>Windows-undantagsinställningar>. I fönstret Undantagsinställningar markerar du kryssrutan Bryt vid utlöses bredvid Common Language Runtime-undantag. Du kan också se diagnostikutdata i utdatafönstret när det uppstår fel eller ohanterade undantag.

Titta på anropsstacken

I Visual Studio kan du välja om eller om du felsöker Just My Code eller inte. Att undersöka hela anropsstacken kan ge mer insikt i eventuella problem.

Se till att alla dialogmetoder slutar med en plan för att hantera nästa meddelande

Alla dialogsteg måste matas in i nästa steg i vattenfallet eller avsluta den aktuella dialogrutan för att öppna den från stacken. Om ett steg inte hanteras korrekt fortsätter inte konversationen som du förväntar dig. Ta en titt på konceptartikeln för dialogrutor för mer information om dialogrutor.

Vad orsakar ett fel med HTTP-statuskoden 429 "För många begäranden"?

Ett felsvar med HTTP-statuskod 429 anger att för många begäranden har utfärdats inom en viss tidsperiod. Svarets brödtext bör innehålla en förklaring av problemet och kan också ange det minsta obligatoriska intervallet mellan begäranden.

Varför tas inte mina robotmeddelanden emot av användaren?

Meddelandeaktiviteten som genereras som svar måste åtgärdas korrekt, annars kommer den inte fram till det avsedda målet. I de flesta fall behöver du inte hantera detta explicit. SDK tar hand om att hantera meddelandeaktiviteten åt dig.

Om du vill åtgärda en aktivitet korrekt inkluderar du lämplig konversations-ID-information , tillsammans med information om avsändaren. I de flesta fall skickas meddelandeaktiviteten som svar på en som har anlänt. Därför kan adressinformationen hämtas från den inkommande aktiviteten.

Om du undersöker spårningar eller granskningsloggar kan du kontrollera att dina meddelanden är korrekt adresserade. Om de inte är det anger du en brytpunkt i roboten och ser var ID:na anges för meddelandet.

Hur kan jag köra bakgrundsaktiviteter i ASP.NET?

I vissa fall kanske du vill initiera en asynkron uppgift som väntar i några sekunder och sedan kör kod för att rensa användarprofilen eller återställa konversations-/dialogtillståndet. Mer information om hur du gör detta finns i Så här kör du bakgrundsaktiviteter i ASP.NET. Överväg särskilt att använda HostingEnvironment.QueueBackgroundWorkItem.

Min robot svarar långsamt på det första meddelandet den tar emot. Hur kan jag göra det snabbare?

Robotar är webbtjänster och vissa värdplattformar, inklusive Azure, försätta tjänsten i viloläge automatiskt om den inte tar emot trafik under en viss tidsperiod. Om det händer din robot måste den startas om från grunden nästa gång den får ett meddelande, vilket gör att svaret blir mycket långsammare än om det redan kördes.

På vissa värdplattformar kan du konfigurera tjänsten så att den inte försättas i viloläge. Om din robot finns i Azure AI Bot Service Web Apps går du till robotens tjänst i Azure Portal, väljer Programinställningar och väljer sedan Alltid på. Det här alternativet är tillgängligt i de flesta, men inte alla, tjänstplaner.

Hur kan jag garantera leveransorder för meddelanden?

Bot Framework bevarar meddelandeordningen så mycket som möjligt. Om du till exempel skickar meddelandet A och väntar tills HTTP-åtgärden har slutförts innan du initierar en annan HTTP-åtgärd för att skicka meddelandet B. Vissa kanaler, till exempel SMS och e-post, garanterar inte att användaren får meddelanden i ordning.

Varför tas delar av min meddelandetext bort?

Bot Framework och många kanaler tolkar text som om den var formaterad med Markdown. Kontrollera om texten innehåller tecken som kan tolkas som Markdown-syntax.

Hur kan jag stödja flera robotar på samma robottjänstslutpunkt?

Det här exemplet visar hur du konfigurerar med höger MicrosoftAppCredentials och använder ett enkelt MultiCredentialProvider för att autentisera Conversation.Container flera app-ID:er och lösenord.

Hur fungerar identifierare i Bot Framework?

Mer information om identifierare i Bot Framework finns i Bot Framework-guiden till identifierare.

Hur får jag åtkomst till användar-ID:t?

Bot Framework-kanaler visar användarens ID i from.Id fältet för alla aktiviteter som skickas av användaren. SMS och e-postmeddelanden tillhandahåller det råa användar-ID:t i den här egenskapen. Vissa kanaler döljer from.Id egenskapen så att den innehåller unikt ID för användaren, vilket skiljer sig från användarens ID i kanalen. Om du behöver ansluta till ett befintligt konto kan du använda ett inloggningskort och implementera ditt eget OAuth-flöde för att ansluta användar-ID:t till din egen tjänsts användar-ID.

Varför visas inte mina Facebook-användarnamn längre?

Har du ändrat ditt Facebook-lösenord? Om du gör det ogiltigförklaras åtkomsttoken och du måste uppdatera robotens konfigurationsinställningar för Facebook Messenger-kanalen i Azure Portal.

Hur kan jag använda autentiserade tjänster från min robot?

Information om Microsoft Entra-ID-autentisering finns i självstudiekursen Lägg till autentisering i din robot .

Kommentar

Om du lägger till autentiserings- och säkerhetsfunktioner i roboten bör du se till att de mönster som du implementerar i koden uppfyller de säkerhetsstandarder som är lämpliga för ditt program.

Hur kan jag begränsa åtkomsten till min robot till en fördefinierad lista över användare?

Vissa kanaler, till exempel SMS och e-post, tillhandahåller obevakade adresser. I dessa fall innehåller meddelanden från användaren det råa användar-ID:t i from.Id egenskapen.

Andra kanaler, till exempel Facebook och Slack, tillhandahåller antingen begränsade eller klientorganisationsadresser på ett sätt som förhindrar att en robot kan förutsäga en användares ID i förväg. I dessa fall måste du autentisera användaren via en inloggningslänk eller delad hemlighet för att avgöra om de har behörighet att använda roboten eller inte.

Varför börjar min Direct Line 1.1-konversation om efter varje meddelande?

Kommentar

Det här avsnittet gäller inte för den senaste versionen av Direct Line-protokollet, 3.0

Om direct line-konversationen verkar börja om efter varje meddelande from saknas egenskapen troligen eller null i meddelanden som direct line-klienten har skickat till roboten. När en Direct Line-klient skickar ett meddelande med from egenskapen antingen saknas eller nullallokerar Direct Line-tjänsten automatiskt ett ID, så varje meddelande som klienten skickar verkar komma från en ny, annan användare.

Åtgärda detta genom att ange from egenskapen i varje meddelande som Direct Line-klienten skickar till ett stabilt värde som unikt representerar den användare som skickar meddelandet. Om en användare till exempel redan är inloggad på en webbsida eller app kan du använda det befintliga användar-ID:t som värdet för from egenskapen i meddelanden som användaren skickar. Du kan också välja att generera ett slumpmässigt användar-ID vid sidinläsning eller programinläsning, lagra det ID:t i ett cookie- eller enhetstillstånd och använda det ID:t som värdet för from egenskapen i meddelanden som användaren skickar.

Vad gör att Direct Line 3.0-tjänsten svarar med HTTP-statuskod 502 "Felaktig gateway"?

Direct Line 3.0 returnerar HTTP-statuskod 502 när den försöker kontakta roboten, men begäran har inte slutförts. Det här felet anger att roboten antingen returnerade ett fel eller att tidsgränsen för begäran har överskridits. Mer information om fel som din robot genererar finns på robotens instrumentpanel i Azure Portal och väljer länken "Problem" för den berörda kanalen. Om du har konfigurerat Application Insights för din robot kan du även hitta detaljerad felinformation där.

Varför får jag ett Authorization_RequestDenied undantag när jag skapar en robot?

Behörighet att skapa Azure AI Bot Service-robotar hanteras via Microsoft Entra ID-portalen. Om behörigheterna inte är korrekt konfigurerade i administrationscentret för Microsoft Entra-ID får användarna Authorization_RequestDenied undantag när de försöker skapa en robottjänst.

Kontrollera först om du är "gäst" i katalogen:

  1. Logga in på Azure Portal.
  2. Välj Alla tjänster och sök efter aktiva.
  3. Välj Microsoft Entra ID.
  4. Välj Användare.
  5. Leta upp användaren i listan och se till att användartypen inte är en gäst.

Användartyp för Microsoft Entra-ID

När du har verifierat att du inte är gäst måste katalogadministratören konfigurera följande inställningar för att säkerställa att användare i en active directory kan skapa en robottjänst:

  1. Logga in på administrationscentret för Microsoft Entra-ID. Gå till Användare och grupper och välj Användarinställningar.
  2. Under Avsnittet Appregistrering anger du Användare kan registrera program till Ja. På så sätt kan användare i din katalog skapa robottjänsten.
  3. Under avsnittet Externa användare är behörigheter för gästanvändare begränsade till Nej. Detta gör att gästanvändare i din katalog kan skapa robottjänsten.

Administrationscenter för Microsoft Entra-ID

Varför kan jag inte migrera min robot?

Om roboten är registrerad i dev.botframework.com och du vill migrera den till Azure, men har problem med att migrera roboten, kan det bero på att roboten tillhör en annan katalog än din standardkatalog. Prova följande steg:

  1. Från målkatalogen lägger du till en ny användare (via e-postadress) som inte är medlem i standardkatalogen och beviljar rollen användaredeltagare för de prenumerationer som är målet för migreringen.

  2. Från Dev Portal lägger du till användarens e-postadress som delägare av roboten som ska migreras. Logga sedan ut.

  3. Logga in på Dev Portal som ny användare och fortsätt att migrera roboten.

Var kan jag få mer hjälp?

  • Sök efter tidigare besvarade frågor om Stack Overflow eller skicka dina egna frågor med hjälp av taggen botframework . Stack Overflow har riktlinjer som att kräva en beskrivande rubrik, en fullständig och kortfattad problembeskrivning och tillräckligt med information för att återskapa problemet. Funktionsförfrågningar eller alltför breda frågor är inte aktuella. nya användare bör besöka hjälpcentret för Stack Overflow för mer information.
  • Mer information om kända problem med Bot Framework SDK finns i BotBuilder-problem i GitHub eller rapportera ett nytt problem.
  • Communitydiskussionen om Gitter i BotBuilder.