Résoudre les problèmes généraux liés aux bots Azure AI Bot Service

S’APPLIQUE À : SDK v4

Les forums aux questions permettent de résoudre les problèmes les plus courants de développement et de fonctionnement des robots.

Comment puis-je résoudre les problèmes de mon robot ?

  1. Déboguez le code source de votre bot avec Visual Studio Code ou Visual Studio.
  2. Testez votre bot à l’aide de Bot Framework Emulator avant de le déployer sur le cloud.
  3. Déployez votre bot sur une plateforme d’hébergement cloud comme Azure, puis testez la connexion à votre bot en utilisant le contrôle Chat Web intégré sur le tableau de bord de votre bot dans le portail Azure. Si vous rencontrez des problèmes avec votre bot après l’avoir déployé sur Azure, pensez à consulter l’article de blog suivant : Comprendre le support et le dépannage Azure.
  4. Écartez l’authentification comme problème possible.
  5. Testez votre bot sur Web Chat, Teams, ou sur tout autre canal que vous comptez utiliser avec votre bot. Vous pourrez ainsi valider l’expérience utilisateur de bout en bout.
  6. Pensez à tester votre bot sur des canaux ayant des exigences d’authentification supplémentaires, par exemple Direct Line ou Chat Web.
  7. Consultez la procédure Déboguer un bot ainsi que les autres articles de débogage de cette section.

Comment puis-je résoudre les problèmes d’authentification ?

Pour en savoir plus sur la résolution des problèmes d’authentification de votre bot, consultez l’article sur la résolution des problèmes d’authentification Bot Framework.

Comment faire tester la connexion réseau entre les bots et un canal ?

Vous pouvez utiliser les adresses IP générées par les étapes ci-dessous pour vérifier s’il existe une règle bloquant la connexion avec ces adresses. Reportez-vous à la section Vérifier les traces de pare-feu sur les connexions ayant échoué.

Tester la connexion du bot au canal

  1. Dans votre navigateur, accédez au Portail Azure.

  2. Sélectionnez votre bot App Service dont vous souhaitez tester la connexion.

  3. Dans le volet gauche de la section Outils de développement sélectionnez Outils avancés.

  4. Sélectionnez Go dans le volet droit. La page d’informations Kudu s’affiche.

  5. Dans la barre des menus, sélectionnez Console de débogage. Ensuite, dans le menu déroulant, sélectionnez CMD. La console d’application web du bot Kudu est ouverte. Pour en savoir plus, reportez-vous à Utiliser.

    kudu cmd console

  6. Exécutez nslookup directline.botframework.com et vérifiez si la résolution DNS fonctionne. Vous remarquerez que nslookup (recherche de serveurs de noms) est un outil en ligne de commande d’administrateur réseau permettant d’interroger le Domain Name System (DNS) afin d’obtenir le mappage de noms de domaine ou d’adresses IP, ou d’autres enregistrements DNS. Si la résolution DNS fonctionne, la réponse à cette commande contient les informations pertinentes.

    kudu cmd console bot channel dns

    L’outil de recherche IP WHOIS permet d’obtenir des informations sur les adresses IP.

  7. Exécutez curl -I directline.botframework.com. (L’option -I est utilisée pour obtenir une réponse contenant l’en-tête uniquement.) Vérifiez par deux fois qu’un état HTTP de 301 est retourné pour s’assurer de la connectivité.

    kudu cmd console http 301

Tester la connexion du canal au bot

Étant donné que curl n’a pas accès au site de production et directline.botframework.com qu’il se trouve sur l’Internet public, vous devez utiliser curl en mode simulation. Effectuez les étapes ci-dessous en dehors d’un réseau privé virtuel (VNET), par exemple, à l’aide d’une zone d’intérêt de téléphone cellulaire. Reportez-vous également à Qu’est-ce que le Réseau virtuel Azure ?.

  1. Exécutez nslookup ivr-sr-bot.botapps.amat.com. La résolution DNS fonctionne si la réponse à cette commande contient des informations pertinentes.

    kudu cmd console channel bot dns

  2. Exécutez curl -I https://ivr-sr-bot.botapps.amat.com/api/messages et vérifiez si un code d’état HTTP approprié est retourné (par exemple, méthode 405 non autorisée). La méthode spécifiée dans la requête n’est pas autorisée pour la ressource identifiée par l’URI spécifié. Il s’agit simplement d’un moyen de vérifier la connectivité.

    kudu cmd console http 405

  3. Si vous n’obtenez pas la réponse du bot, notez l’adresse IP du client.

Vérifier les traces de pare-feu sur les connexions ayant échoué

Utilisez les adresses IP depuis nslookup ivr-sr-bot.botapps.amat.com et nslookup directline.botframework.com, puis vérifiez s’il existe une règle bloquant la connexion avec ces adresses dans les deux sens.

J’utilise le kit SDK Bot Framework pour .NET. Comment puis-je résoudre les problèmes de mon robot ?

Rechercher les exceptions

Dans Visual Studio 2019, accédez à Débogage>Windows>Paramètres d’exception. Dans la fenêtre Paramètres des exceptions, cochez la case Pause au lancement en regard de Exceptions Common Language Runtime. Vous pouvez également afficher le résultat du diagnostic dans votre fenêtre de sortie lorsque des exceptions sont lancées ou non prises en charge.

Regarder la pile des appels

Dans Visual Studio, vous pouvez choisir de déboguer Uniquement mon code ou non. L’examen de toute la pile d’appels peut fournir des renseignements supplémentaires sur les problèmes.

Assurez-vous que toutes les méthodes de dialogue se terminent par un programme de traitement du message suivant

Toutes les étapes du dialogue doivent alimenter l’étape suivante de la cascade ou mettre fin au dialogue actuel pour sortir de la pile. Si une étape n’est pas gérée correctement, la conversation ne continuera pas comme prévu. Consultez l’article de présentation de concept sur les dialogues pour en savoir plus à ce sujet.

Qu’est-ce qui provoque une erreur avec le code d’état HTTP 429 « Trop de requêtes » ?

Une réponse d’erreur avec le code d’état HTTP 429 indique qu’un trop grand nombre de requêtes ont été envoyées dans un laps de temps donné. Le corps de la réponse doit comprendre une explication du problème. Il peut également préciser l’intervalle minimal requis entre les requêtes. Il est possible que cette erreur soit due à l’outil ngrok. Si vous avez un plan gratuit et que vous rencontrez les limites de ngrok, accédez à la page de la tarification et des limites sur leur site Web pour obtenir davantage d’options.

Pourquoi les messages de mon bot ne sont pas bien reçus par l’utilisateur ?

L’activité de message générée en réponse doit être adressée correctement, sinon il n’arrivera pas à sa destination prévue. Le plus souvent, vous ne devrez pas gérer cette situation explicitement. Le SDK s’occupe d’adresser l’activité de message pour vous.

Pour effectuer correctement l’adressage d’une activité, vous devez intégrer les ID de conversation correspondants, ainsi que des informations sur l’expéditeur. Dans la plupart des cas, l’activité de message est envoyée en réponse à l’arrivée d’une autre activité. Par conséquent, les informations d’adressage peuvent être récupérées à partir de l’activité entrante.

Si vous examinez les traces ou les journaux d’audit, vous pouvez vérifier que vos messages sont correctement adressés. Dans le cas contraire, définissez un point d’arrêt dans votre bot et vérifiez où les ID sont définis pour votre message.

Comment puis-je exécuter des tâches en arrière-plan dans ASP.NET ?

Dans certains cas, il peut arriver que vous souhaitiez lancer une tâche asynchrone qui attende quelques secondes avant d’exécuter un code afin d’effacer le profil de l’utilisateur ou de réinitialiser l’état de la conversation ou du dialogue. Pour en savoir plus sur la façon de procéder, consultez Comment exécuter des tâches en arrière-plan dans ASP.NET ?. Pensez notamment à utiliser HostingEnvironment.QueueBackgroundWorkItem.

Mon robot met du temps à répondre au premier message qu’il reçoit. Comment le rendre plus rapide ?

Les bots sont des services web et certaines plates-formes d’hébergement comme Azure mettent automatiquement le service en veille lorsqu’il ne reçoit pas de trafic pendant un certain temps. Dans ce cas, votre robot doit repartir de zéro la prochaine fois qu’il reçoit un message, ce qui allonge considérablement son temps de réponse par rapport au cas où il est déjà en cours d’exécution.

Certaines plates-formes d’hébergement permettent de configurer le service de façon à ne pas le mettre en veille. Si votre bot est hébergé dans Azure AI Bot Service Web Apps, reportez-vous au service de votre bot dans le portail Azure, sélectionnez Paramètres d’application, puis Always-on. Cette option est disponible dans la plupart des plans de service, mais pas tous.

Comment puis-je garantir l’ordre de livraison des messages ?

Bot Framework conserve autant que possible l’ordre des messages. Par exemple, si vous envoyez le message A, attendez la fin de cette opération HTTP avant de lancer une autre opération HTTP pour envoyer le message B. Certains canaux, tels que les SMS et les emails, ne garantissent pas l’ordre dans lequel l’utilisateur recevra les messages.

Pourquoi certaines parties du texte de mon message sont-elles supprimées ?

Bot Framework et de nombreux canaux interprètent le texte comme s’il était formaté avec Markdown. Vérifiez si votre texte contient des caractères susceptibles d'être interprétés comme de la syntaxe Markdown.

Comment puis-je prendre en charge plusieurs robots sur un même point de terminaison de service de robot ?

Cet exemple montre comment configurer Conversation.Container avec le bon MicrosoftAppCredentials et utiliser un seul MultiCredentialProvider pour authentifier plusieurs identifiants d’applications et mots de passe.

Comment fonctionnent les identificateurs dans Bot Framework ?

Pour en savoir plus sur les identificateurs dans Bot Framework, consultez le guide Bot Framework des identificateurs.

Comment puis-je accéder à l’identifiant utilisateur ?

Les canaux Bot Framework présentent l’ID de l’utilisateur dans le champ from.Id de toute activité envoyée par l’utilisateur. Les SMS et les e-mails fournissent l’identifiant utilisateur brut dans cette propriété. Certains canaux masquent la propriété from.Id pour qu’elle contienne un identifiant utilisateur unique différent de l’identifiant utilisateur dans le canal. Si vous devez vous connecter à un compte existant, vous pouvez utiliser une carte de connexion et implémenter votre propre flux OAuth pour associer l’identifiant utilisateur à l’identifiant utilisateur de votre propre service.

Pourquoi mes noms d’utilisateur Facebook ne s’affichent-ils plus ?

Avez-vous modifié votre mot de passe Facebook ? Le jeton d’accès sera alors invalidé, et vous devrez mettre à jour les paramètres de configuration de votre bot pour le canal Facebook Messenger dans le portail Azure.

Comment puis-je utiliser les services authentifiés de mon robot ?

Pour l’authentification de Microsoft Entra ID, reportez-vous au didacticiel Ajouter une authentification à votre bot.

Remarque

Si vous ajoutez des fonctionnalités d’authentification et de sécurité à votre robot, vous devez vous assurer que les modèles que vous implémentez dans votre code respectent les normes de sécurité appropriées à votre application.

Comment puis-je limiter l’accès à mon robot à une liste prédéterminée d’utilisateurs ?

Certains canaux, comme les SMS et le courrier électronique, fournissent des adresses non limitées. Dans ces cas-là, les messages de l’utilisateur contiennent l’identifiant utilisateur brut dans la propriété from.Id.

D’autres canaux, comme Facebook et Slack, fournissent des adresses délimitées ou locataires de telle sorte qu’un bot ne peut pas connaître à l’avance l’identifiant des utilisateurs. Dans ces cas-là, vous devez authentifier l’utilisateur via un lien de connexion ou une clé secrète partagée afin de déterminer s’il est autorisé ou non à utiliser le bot.

Pourquoi ma conversation Direct Line 1.1 recommence-t-elle après chaque message ?

Remarque

Cette section ne s’applique pas à la dernière version du protocole Direct Line (3.0)

Si votre conversation Direct Line semble recommencer après chaque message, la propriété from est probablement manquante ou à null dans les messages que votre client Direct Line envoie au robot. Lorsqu’un client Direct Line envoie un message avec la propriété from manquante ou à null, le service Direct Line attribue automatiquement un identifiant afin que chaque message envoyé par le client semble provenir d’un nouvel utilisateur.

Pour corriger cela, définissez la propriété from dans chaque message envoyé par le client Direct Line à une valeur constante qui identifie de façon unique l’utilisateur qui envoie le message. Par exemple, si un utilisateur est déjà connecté à une page web ou à une application, vous pouvez utiliser cet identifiant utilisateur existant comme valeur de la propriété from dans les messages qu’il envoie. Sinon, vous pouvez choisir de créer un identifiant utilisateur aléatoire sur la page de chargement ou sur l’application, de le stocker dans un témoin ou un état de l’appareil et de l’utiliser comme valeur de la propriété from dans les messages envoyés par l’utilisateur.

Pourquoi le service Direct Line 3.0 retourne le code d’état HTTP 502 « Passerelle incorrecte » ?

Direct Line 3.0 retourne le code d’état HTTP 502 lorsqu’il essaie de communiquer avec votre bot, mais que la requête n’aboutit pas. Cette erreur indique que le bot a renvoyé une erreur ou que la requête a expiré. Pour en savoir plus sur les erreurs générées par votre bot, accédez au tableau de bord du bot dans le portail Azure, puis cliquez sur le lien « Problèmes » correspondant au canal concerné. Si vous avez configuré Application Insights pour votre bot, vous pouvez également y trouver des informations détaillées concernant les erreurs.

Pourquoi est-ce que j’obtiens l’exception Authorization_RequestDenied lors de la création d’un robot ?

L’autorisation de créer des bots Azure AI Bot Service est gérée à partir du portail Microsoft Entra ID. Si les autorisations ne sont pas correctement configurées dans le centre d’administration Microsoft Entra ID, les utilisateurs obtiennent l’exception Authorization_RequestDenied lors de la création d’un service bot.

Vérifiez d’abord que vous êtes un « Invité » du répertoire :

  1. Connectez-vous au Portail Microsoft Azure.
  2. Sélectionnez Tous les services et recherchez Actifs.
  3. Sélectionnez Microsoft Entra ID.
  4. Sélectionnez Utilisateurs.
  5. Trouvez l’utilisateur dans la liste et assurez-vous que le Type d’utilisateur n’est pas Invité.

Microsoft Entra ID User-type

Après avoir vérifié que vous n’êtes pas un Invité, l’administrateur du répertoire doit configurer les paramètres suivants pour s’assurer que les utilisateurs d’un répertoire actif peuvent créer un service bot :

  1. Connectez-vous au Centre d’administration Microsoft Entra ID. Dans Utilisateurs et groupes, sélectionnez Paramètres utilisateur.
  2. Dans la section Inscription des applications , mettez Les utilisateurs peuvent enregistrer des applications sur Oui. Les utilisateurs de votre répertoire pourront ainsi créer un service de robot.
  3. Dans la section Utilisateurs externes, mettez Les permissions des utilisateurs invités sont limitées sur Non. Les utilisateurs invités de votre répertoire pourront ainsi créer un service de robot.

Microsoft Entra ID Admin Center

Pourquoi est-ce que je ne peux pas migrer mon robot ?

Si votre bot est inscrit dans dev.botframework.com, et si vous souhaitez le déplacer vers Azure mais rencontrez des problèmes lors de sa migration, il est possible que le bot appartienne à un répertoire autre que celui par défaut. Essayez d’effectuer les étapes suivantes :

  1. Dans le répertoire cible, ajoutez un nouvel utilisateur (par adresse e-mail) qui ne fait pas partie du répertoire par défaut. Attribuez à l’utilisateur contributeur un rôle sur les abonnements qui constituent la cible de la migration.

  2. Dans Dev Portal, ajoutez l’adresse e-mail de l’utilisateur en tant que copropriétaire du bot devant être migré. Ensuite, déconnectez-vous.

  3. Connectez-vous au Dev Portalen tant que nouvel utilisateur et passez à la migration du robot.

Où puis-je trouver de l’aide supplémentaire ?

  • Recherchez les réponses aux questions précédentes sur le Stack Overflow, ou publiez vos propres questions à l’aide de l’étiquette botframework. Stack Overflow comporte certaines exigences telles qu’un titre descriptif, un énoncé complet et concis du problème et suffisamment de précisions pour pouvoir reproduire votre problème. Les requêtes de fonctionnalités ou les questions trop générales sont hors sujet ; les nouveaux utilisateurs doivent visiter le centre d’aide sur les dépassements de capacité de la pile pour obtenir de plus amples renseignements.
  • Pour en savoir plus sur les problèmes connus du kit SDK Bot Framework ou pour signaler un nouveau problème, consultez BotBuilder issues dans GitHub.
  • La discussion de la communauté BotBuilder sur Gitter.