Condividi tramite


Risoluzione dei problemi generali per i bot servizio Bot di intelligenza artificiale di Azure

SI APPLICA A: SDK v4

Queste domande frequenti possono contribuire alla risoluzione di problemi comuni di carattere operativo o di sviluppo dei bot.

come si risolvono i problemi relativi ai bot?

  1. Eseguire il debug del codice sorgente del bot con Visual Studio Code o Visual Studio.
  2. Testare il bot usando Bot Framework Emulator prima di distribuirlo nel cloud.
  3. Distribuire il bot in una piattaforma di hosting cloud come Azure e quindi testare la connettività al bot usando il controllo della chat Web predefinito nel dashboard del bot nel portale di Azure. Se si riscontrano problemi dopo la distribuzione del bot in Azure, provare a consultare l'articolo di blog: Understanding Azure troubleshooting and support (Informazioni sulla risoluzione dei problemi e il supporto in Azure).
  4. Considerare l'autenticazione come un possibile problema.
  5. Testare il bot su Chat, Teams o qualsiasi altro canale che si intende usare con il bot. In questo modo, sarà possibile convalidare l'esperienza utente end-to-end.
  6. Provare a testare il bot nei canali con requisiti di autenticazione aggiuntivi, ad esempio Direct Line o chat Web.
  7. Vedere come eseguire il debug di un bot e gli altri articoli sul debug in tale sezione.

Come si risolvono i problemi di autenticazione?

Per informazioni sulla risoluzione dei problemi di autenticazione con il bot, vedere Risoluzione dei problemi relativi all'autenticazione di Bot Framework.

Ricerca per categorie testare la connettività di rete tra bot e un canale?

È possibile usare gli indirizzi IP generati dalla procedura seguente per verificare se è presente una regola che blocca la connessione con tali indirizzi. Vedere la sezione Controllare le tracce del firewall sulle connessioni non riuscite.

Testare la connessione dal bot al canale

  1. Nel browser passare al portale di Azure.

  2. Selezionare il bot servizio app la cui connessione si vuole testare.

  3. Nel riquadro sinistro, nella sezione Strumenti di sviluppo selezionare Strumenti avanzati.

  4. Nel riquadro destro selezionare Vai. Viene visualizzata la pagina delle informazioni kudu.

  5. Nella barra dei menu in alto selezionare Console di debug. Quindi, nel menu a discesa selezionare CMD. Viene aperta la console dell'app Web del bot Kudu. Per altre informazioni, vedere Kudu.

    console kudu cmd

  6. Eseguire nslookup directline.botframework.com e controllare se la risoluzione DNS funziona. Si noti che nslookup (ricerca server dei nomi) è uno strumento da riga di comando di amministrazione di rete per eseguire query sul dns (Domain Name System) per ottenere il mapping di nomi di dominio o indirizzi IP o altri record DNS. Se la risoluzione DNS funziona, la risposta a questo comando conterrà le informazioni pertinenti.

    DNS del canale del bot della console kudu cmd

    Lo strumento WHOIS IP Lookup è utile per ottenere informazioni sugli indirizzi IP.

  7. Eseguire curl -I directline.botframework.com. L'opzione -I viene usata per ottenere una risposta contenente solo l'intestazione. Verificare che lo stato HTTP 301 venga restituito per verificare la connettività.

    console kudu cmd http 301

Testare la connessione dal canale al bot

Poiché curl non ha accesso al sito di produzione e directline.botframework.com si trova su Internet pubblico, è necessario usare curl in modalità di simulazione. Eseguire i passaggi illustrati di seguito all'esterno di una rete virtuale (VNET), ad esempio usando un hotspot del telefono cellulare. Vedere anche Che cos'è Azure Rete virtuale?.

  1. Eseguire nslookup ivr-sr-bot.botapps.amat.com. La risoluzione DNS funziona se la risposta a questo comando contiene informazioni pertinenti.

    dns del bot del canale della console kudu cmd

  2. Eseguire curl -I https://ivr-sr-bot.botapps.amat.com/api/messages e controllare se viene restituito un codice di stato HTTP appropriato (ad esempio, il metodo 405 non è consentito). Il metodo specificato nella richiesta non è consentito per la risorsa identificata dall'URI specificato. Questo è solo un modo per verificare che ci sia connettività.

    console kudu cmd http 405

  3. Se non si riceve la risposta dal bot, annotare l'indirizzo IP del client.

Controllare le tracce del firewall nelle connessioni non riuscite

Usare gli indirizzi IP da nslookup ivr-sr-bot.botapps.amat.com e nslookup directline.botframework.com verificare se è presente una regola che blocca la connessione con tali indirizzi in entrambe le direzioni.

Se si usa Bot Framework SDK per .NET, come si risolvono i problemi relativi ai bot?

Cercare le eccezioni

In Visual Studio 2019 passare a Debug>Windows>Impostazioni eccezioni. Nella finestra Impostazioni eccezioni selezionare la casella di controllo Interrompi se generata accanto a Eccezioni Common Language Runtime. È possibile visualizzare l'output di diagnostica anche nella finestra Output quando sono presenti eccezioni generate o non gestite.

Esaminare lo stack di chiamate

In Visual Studio è possibile scegliere se eseguire o meno il debug di Just My Code . L'analisi dello stack di chiamate completo può fornire maggiori informazioni su eventuali problemi.

Verificare che tutti i metodi di dialogo vengano terminati con un piano per gestire il messaggio successivo

Tutti i passaggi del dialogo devono confluire nel passaggio successivo della cascata o concludere il dialogo corrente per scaricarlo dallo stack. Se un passaggio non viene gestito correttamente, la conversazione non continuerà come previsto. Esaminare l'articolo dei concetti per informazioni dettagliate sulla libreria Dialogs.

Che cosa provoca un errore con codice di stato HTTP 429 "Troppe richieste"?

Una risposta di errore con codice di stato HTTP 429 indica che sono state inviate troppe richieste in un determinato periodo di tempo. Il corpo della risposta deve includere una spiegazione del problema e può anche specificare l'intervallo minimo necessario tra richieste.

Perché i messaggi del bot non vengono ricevuti dall'utente?

L'attività del messaggio generata in risposta deve essere risolta correttamente; in caso contrario, non arriverà alla destinazione prevista. Nella maggior parte dei casi, non è necessario gestirlo in modo esplicito; l'SDK si occupa dell'indirizzamento dell'attività del messaggio.

Per risolvere correttamente un'attività, includere i dettagli dell'ID conversazione appropriati, insieme ai dettagli sul mittente. Nella maggior parte dei casi, l'attività messaggio viene inviata in risposta a un'attività ricevuta. Di conseguenza, i dettagli relativi all'indirizzamento possono essere recuperati dall'attività in ingresso.

Se si esaminano le tracce o i log di controllo, è possibile verificare che i messaggi siano indirizzati correttamente. In caso contrario, impostare un punto di interruzione nel bot e vedere dove sono impostati gli ID per il messaggio.

Come si eseguono attività in background in ASP.NET?

In alcuni casi, può essere necessario avviare un'attività asincrona che attende alcuni secondi e quindi esegue un frammento di codice per cancellare il profilo utente o reimpostare lo stato della conversazione o del dialogo. Per informazioni su come procedere a questo scopo, vedere How to run Background Tasks in ASP.NET (Come eseguire attività in background in ASP.NET). In particolare, provare a usare HostingEnvironment.QueueBackgroundWorkItem.

Se il bot risponde lentamente al primo messaggio che riceve, come si può accelerarne la risposta?

I bot sono servizi Web e alcune piattaforme di hosting, tra cui Azure, inseriscono automaticamente il servizio in sospensione se non riceve traffico per un determinato periodo di tempo. Se questo avviene al bot, deve essere riavviato da zero alla successiva ricezione di un messaggio e questo ne rallenta notevolmente la risposta rispetto a quando è in esecuzione.

Alcune piattaforme di hosting consentono di configurare il servizio in modo che non venga sospeso. Se il bot è ospitato in Azure AI servizio Bot App Web, passare al servizio del bot nel portale di Azure, selezionare Impostazioni applicazione e quindi Selezionare Always On. Questa opzione è disponibile per la maggior parte dei piani di servizio (ma non per tutti).

Come si garantisce l'ordine di recapito dei messaggi?

Bot Framework mantiene l'ordine dei messaggi quanto più possibile. Ad esempio, se si invia il messaggio A e si attende il completamento dell'operazione HTTP prima di avviare un'altra operazione HTTP per inviare il messaggio B. Alcuni canali, ad esempio SMS e posta elettronica, non garantiscono l'ordine in cui l'utente riceverà messaggi.

Perché parte del testo dei messaggi viene eliminata?

Bot Framework e molti canali interpretano il testo come se fosse formattato con markdown. Verificare se il testo contiene caratteri che possono essere interpretati come sintassi di markdown.

Come si supportano più bot nello stesso endpoint servizio del bot?

Questo esempio mostra come configurare Conversation.Container con l'oggetto MicrosoftAppCredentials corretto e usare un semplice oggetto MultiCredentialProvider per autenticare più ID app e le relative password.

Come funzionano gli identificatori in Bot Framework?

Per informazioni dettagliate sugli identificatori in Bot Framework, vedere la guida agli identificatori di Bot Framework.

Come si ottiene l'accesso all'ID utente?

I canali di Bot Framework presentano l'ID dell'utente nel campo from.Id di qualsiasi attività inviata dall'utente. SMS e messaggi di posta elettronica forniscono l'ID utente non elaborato in questa proprietà. Alcuni canali oscurano la from.Id proprietà in modo che contenga l'ID univoco per l'utente, che differisce dall'ID dell'utente nel canale. Se è necessario connettersi a un account esistente, è possibile usare una scheda di accesso e implementare il proprio flusso OAuth per connettere l'ID utente all'ID utente del proprio servizio.

Perché i nomi utente di Facebook non vengono più visualizzati?

È stata modificata la password di Facebook? In questo modo si invaliderà il token di accesso e sarà necessario aggiornare le impostazioni di configurazione del bot per il canale Facebook Messenger nel portale di Azure.

Come si usano servizi autenticati dal bot?

Per l'autenticazione di Microsoft Entra ID, vedere l'esercitazione Aggiungere l'autenticazione al bot .

Nota

Se si aggiungono funzionalità di autenticazione e sicurezza al bot, assicurarsi che i criteri implementati nel codice siano conformi agli standard di sicurezza appropriati per l'applicazione.

Come si limita l'accesso al bot a un elenco predeterminato di utenti?

Alcuni canali, come il servizio SMS e la posta elettronica, forniscono indirizzi senza ambito. In questi casi, i messaggi provenienti dall'utente conterranno l'ID utente non elaborato nella proprietà from.Id.

Altri canali, ad esempio Facebook e Slack, forniscono indirizzi con ambito o tenant in modo da impedire a un bot di prevedere in anticipo l'ID di un utente. In questi casi, è necessario autenticare l'utente tramite un collegamento di accesso o un segreto condiviso per determinare se sono autorizzati o meno a usare il bot.

Perché la conversazione Direct Line 1.1 ricomincia dopo ogni messaggio?

Nota

Questa sezione non si applica alla versione più recente del protocollo Direct Line, 3.0

Se la conversazione Direct Line sembra ricominciare dopo ogni messaggio, la proprietà from è probabilmente mancante o null nei messaggi inviati dal client Direct Line al bot. Quando un client Direct Line invia un messaggio con la proprietà from mancante o null, il servizio Direct Line alloca automaticamente un ID e di conseguenza ogni messaggio inviato dal client appare come proveniente da un nuovo utente diverso.

Per correggere questo comportamento, impostare la proprietà from in ogni messaggio inviato dal client Direct Line su un valore stabile che rappresenta in modo univoco l'utente che invia il messaggio. Ad esempio, se un utente ha già effettuato l'accesso a una pagina Web o a un'app, è possibile usare l'ID utente esistente come valore della proprietà from nei messaggi inviati dall'utente. In alternativa, è possibile scegliere di generare un ID utente casuale al caricamento della pagina o dell'applicazione, archiviare questo ID in un cookie o uno stato del dispositivo e usarlo come valore della proprietà from nei messaggi inviati dall'utente.

Qual è il motivo per cui il servizio Direct Line 3.0 risponde con codice di stato HTTP 502 "Gateway non valido"?

Direct Line 3.0 restituisce il codice di stato HTTP 502 quando tenta di contattare il bot, ma la richiesta non viene completata correttamente. Questo errore indica che il bot ha restituito un errore o il timeout della richiesta. Per altre informazioni sugli errori generati dal bot, passare al dashboard del bot all'interno del portale di Azure e selezionare il collegamento "Problemi" per il canale interessato. Se Application Insights è stato configurato per il bot, è anche possibile trovare informazioni dettagliate sull'errore.

Perché viene generata un'eccezione Authorization_RequestDenied quando si crea un bot?

L'autorizzazione per creare bot servizio Bot di intelligenza artificiale di Azure viene gestita tramite il portale microsoft Entra ID. Se le autorizzazioni non sono configurate correttamente nell'interfaccia di amministrazione di Microsoft Entra ID, gli utenti riceveranno l'eccezione Authorization_RequestDenied quando si tenta di creare un servizio bot.

Controllare prima di tutto se si è un "Guest" della directory:

  1. Accedere al portale di Azure.
  2. Selezionare Tutti i servizi e cercare attivo.
  3. Selezionare Microsoft Entra ID.
  4. Seleziona Utenti.
  5. Trovare l'utente dall'elenco e assicurarsi che il tipo di utente non sia un guest.

Microsoft Entra ID User-type

Dopo aver verificato che non si è guest, per assicurarsi che gli utenti all'interno di un'istanza di Active Directory possano creare un servizio bot, l'amministratore della directory deve configurare le impostazioni seguenti:

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra ID. Passare a Utenti e gruppi e selezionare Impostazioni utente.
  2. Nella sezione Registrazione app impostare Gli utenti possono registrare applicazioni su . In questo modo, gli utenti nella directory possono creare un servizio bot.
  3. Nella sezione Utenti esterni impostare Le autorizzazioni degli utenti guest sono limitate su No. In questo modo, gli utenti guest nella directory possono creare un servizio bot.

Interfaccia di amministrazione di Microsoft Entra ID

Perché non è possibile eseguire la migrazione del bot?

Se il bot è registrato in dev.botframework.com e si vuole eseguirne la migrazione ad Azure, ma si verificano problemi durante la migrazione, è possibile che il bot appartenga a una directory diversa da quella predefinita. Provare a eseguire questa procedura:

  1. Dalla directory di destinazione aggiungere un nuovo utente (tramite indirizzo di posta elettronica) che non è membro della directory predefinita, concedere il ruolo di collaboratore utente nelle sottoscrizioni destinate alla migrazione.

  2. Da Dev Portal aggiungere l'indirizzo di posta elettronica dell'utente come comproprietario del bot di cui eseguire la migrazione. Disconnettersi.

  3. Accedere al portale per sviluppatori come nuovo utente e procedere alla migrazione del bot.

Dove si ottengono altre informazioni?

  • Cercare domande precedentemente risposte in Stack Overflow o pubblicare domande personalizzate usando il botframework tag . Stack Overflow include linee guida come la richiesta di un titolo descrittivo, un'istruzione del problema completa e concisa e dettagli sufficienti per riprodurre il problema. Le richieste di funzionalità o domande di carattere troppo generale sono fuori tema. I nuovi utenti devono visitare la pagina Web Stack Overflow Help Center per altre informazioni.
  • Consultare la sezione sui problemi relativi a BotBuilder in GitHub per informazioni sui problemi noti relativi a Bot Framework SDK o per segnalare un nuovo problema.
  • Discussione della community di BotBuilder su Gitter.