Résoudre les erreurs d'intégration

Cloud à cloud    Matter

Google Cloud vous fournit les outils nécessaires pour surveiller la fiabilité de vos projets avec Google Cloud Monitoring et déboguer les problèmes avec les journaux d'erreurs Google Cloud Logging. Chaque fois qu'une défaillance se produit lors de l'exécution des intents de l'utilisateur, le pipeline Google Home Analytics l'enregistre et publie un journal d'erreurs dans les journaux de votre projet.

Pour résoudre ces erreurs, suivez ces deux étapes:

  1. Surveillez l'état de vos projets grâce aux métriques pour la maison connectée.
  2. Examinez les problèmes en consultant les descriptions détaillées des erreurs dans les journaux d'erreurs.

Le processus est similaire pour l'intégration locale à l'aide de Local Home SDK. Une fois que vous maîtrisez le flux de dépannage, vous pouvez facilement passer d'une métrique à l'autre pour obtenir des insights sur vos erreurs.

Surveiller les erreurs

Vous pouvez utiliser des Google Cloud Monitoring dashboards pour accéder aux métriques de votre projet. Certains graphiques clés sont particulièrement utiles pour surveiller la qualité et déboguer:

  • Le graphique Taux de réussite est le premier graphique à prendre en compte lorsque vous surveillez la fiabilité de vos projets. Les baisses sur ce graphique peuvent indiquer une indisponibilité pour une partie ou la totalité de votre base d'utilisateurs. Nous vous recommandons de surveiller de près ce graphique afin de détecter toute irrégularité après chaque modification ou mise à jour de votre projet.
  • Le graphique de latence au 95e centile est un indicateur important des performances de votre action de maison connectée pour vos utilisateurs. Des fluctuations soudaines dans ce graphique peuvent indiquer que vos systèmes ne sont peut-être pas en mesure de rattraper leur retard. Il est recommandé de vérifier régulièrement ce graphique pour détecter tout comportement inattendu.
  • Les graphiques de répartition des erreurs sont particulièrement utiles pour résoudre les problèmes liés à vos intégrations. Pour chaque erreur mise en surbrillance dans le graphique en pourcentage de réussite, un code d'erreur s'affiche dans la répartition de l'erreur. Vous pouvez consulter les erreurs signalées par Google Home platform et apprendre à les résoudre dans le tableau ci-dessous.

Codes d'erreur de la plate-forme

Voici quelques codes d'erreur courants que vous pouvez voir dans les journaux de votre projet pour identifier les problèmes détectés par le Google Home platform. Veuillez consulter le tableau suivant pour obtenir des informations de dépannage.

Code d'erreur Description
BACKEND_FAILURE_URL_ERROR Google a reçu un code d'erreur HTTP 4xx autre que 401 de la part de votre service.

Utilisez le requestId dans la journalisation GCP pour consulter les journaux du service de votre maison connectée.
BACKEND_FAILURE_URL_TIMEOUT La requête de Google a expiré lors de la tentative de connexion à votre service.

Vérifiez que votre service est en ligne, qu'il accepte des connexions et qu'il n'a pas dépassé la capacité. Vérifiez également que l'appareil cible est allumé, en ligne et synchronisé.
BACKEND_FAILURE_URL_UNREACHABLE Google a reçu un code d'erreur HTTP 5xx de la part de votre service.

Utilisez le requestId dans la journalisation GCP pour consulter les journaux du service de votre maison connectée.
DEVICE_NOT_FOUND L'appareil n'existe pas du côté du service partenaire.

Cela indique normalement un échec de la synchronisation des données ou une condition de concurrence.
GAL_BAD_3P_RESPONSE Google ne peut pas analyser la réponse de votre service d'association de comptes en raison d'un format ou de valeurs non valides dans la charge utile.

Utilisez requestId dans les journaux GCP pour consulter les journaux d'erreurs dans votre service d'association de compte.
GAL_INTERNAL Une erreur interne à Google s'est produite lors de la tentative de récupération d'un jeton d'accès.

Si vous constatez une augmentation du taux de cette erreur dans la journalisation GCP, contactez-nous pour en savoir plus.
GAL_INVALID_ARGUMENT Une erreur interne à Google s'est produite lors de la tentative de récupération d'un jeton d'accès.

Si vous constatez une augmentation du taux de cette erreur dans la journalisation GCP, contactez-nous pour en savoir plus.
GAL_NOT_FOUND Les jetons d'accès et d'actualisation de l'utilisateur stockés dans Google ne sont plus valides et ne peuvent plus être actualisés. L'utilisateur doit associer de nouveau son compte pour continuer à utiliser votre service.

Si vous constatez une augmentation du taux de cette erreur dans la journalisation GCP, contactez-nous pour en savoir plus.
GAL_PERMISSION_DENIED Une erreur interne Google s'est produite lorsque le partage de jetons n'est pas autorisé.

Si vous constatez une augmentation du taux de cette erreur dans la journalisation GCP, contactez-nous pour en savoir plus.
GAL_REFRESH_IN_PROGRESS Le jeton d'accès de l'utilisateur a expiré, et une autre tentative d'actualisation simultanée est déjà en cours.

Ce n'est pas un problème et aucune action n'est requise de votre part.
INVALID_AUTH_TOKEN Google a reçu un code d'erreur HTTP 401 de la part de votre service.

Le jeton d'accès n'a pas expiré, mais votre service l'a invalidé. Utilisez le requestId dans la journalisation GCP pour consulter les journaux du service de votre maison connectée.
INVALID_JSON Impossible d'analyser ou de comprendre la réponse JSON.

Vérifiez la structure de votre réponse JSON pour identifier une syntaxe non valide, telle que des crochets non concordants, des virgules manquantes ou des caractères non valides.
OPEN_AUTH_FAILURE Le jeton d'accès de l'utilisateur a expiré et Google ne peut pas l'actualiser, ou Google a reçu un code d'erreur HTTP 401 de la part de votre service.

Si vous constatez une augmentation du taux de ce code, vérifiez si vous constatez également une augmentation du taux d'erreurs liées aux intents de maison connectée ou aux requêtes de jetons d'actualisation.
PARTNER_RESPONSE_INVALID_ERROR_CODE La réponse indique un code d'erreur non reconnu.

Si la réponse à votre requête indique une erreur, assurez-vous d'utiliser celle fournie dans la liste des codes d'erreur acceptés.
PARTNER_RESPONSE_INVALID_PAYLOAD Impossible d'analyser le champ payload de la réponse en tant qu'objet JSON.

Vérifiez que le champ de charge utile dans la réponse à la requête comporte des crochets correspondants et qu'il est correctement structuré en tant que champ JSON.
PARTNER_RESPONSE_INVALID_STATUS La réponse n'indique pas un état ou indique un état incorrect.

Les réponses aux requêtes de traitement d'intent doivent indiquer un état avec SUCCESS, OFFLINE, ERROR, EXCEPTIONS. Pour en savoir plus, consultez la page Gérer les erreurs et les exceptions.
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES Un ou plusieurs intents présents dans la requête ne figurent pas dans la réponse.

Vérifiez que votre réponse d'exécution est correctement structurée et que les résultats de tous les intents de la requête y figurent.
PARTNER_RESPONSE_MISSING_DEVICE Il manque un ou plusieurs appareils présents dans la requête dans la réponse.

Vérifiez que votre réponse d'exécution est correctement structurée et que tous les ID d'appareil de la requête y figurent.
PARTNER_RESPONSE_MISSING_PAYLOAD La réponse ne contient pas de champ payload.

Veillez à inclure un champ de charge utile dans la réponse à votre requête. Pour en savoir plus, consultez la page expliquant comment créer correctement une réponse d'exécution.
PARTNER_RESPONSE_NOT_OBJECT Impossible d'analyser la réponse en tant qu'objet JSON.

Vérifiez que tous les champs de la réponse à votre requête ne contiennent pas de caractères indésirables, de crochets non concordants ni d'erreurs de mise en forme. Il est possible que certains caractères Unicode ne soient pas acceptés. Assurez-vous également que votre réponse est correctement structurée en tant qu'objet JSON.
PROTOCOL_ERROR Échec du traitement de la requête.

Utilisez le fichier requestId dans Google Cloud Logging pour consulter les journaux du service de votre maison connectée.
RESPONSE_TIMEOUT La requête a expiré en attendant la réponse.

Le délai avant expiration pour l'envoi d'une réponse est de 9 secondes à compter de l'envoi de la requête. Veillez à envoyer une réponse dans ce délai.
RESPONSE_UNAVAILABLE Aucune réponse n'est reçue ou la réponse n'indique pas d'état.

Les réponses aux requêtes de traitement des intents doivent être structurées conformément à la documentation sur la maison connectée et indiquer leur état.
TRANSIENT_ERROR Une erreur temporaire est une erreur qui se résout d'elle-même.

Généralement, ces erreurs se manifestent par l'abandon d'une connexion à un appareil ou à un service. De plus, s'il est impossible d'ouvrir de nouvelles connexions à un serveur.

Journaux sur les recherches

Une fois que vous savez comment surveiller vos intégrations à l'aide de métriques, l'étape suivante consiste à corriger des erreurs spécifiques à l'aide de Cloud Logging. Un journal d'erreurs est une entrée de type JSON avec des champs contenant des informations utiles telles que l'heure, le code d'erreur et des détails sur l'intent de maison connectée d'origine.

Google Cloud contient plusieurs systèmes qui envoient des journaux à votre projet à tout moment. Vous devez écrire des requêtes pour filtrer vos journaux et trouver ceux dont vous avez besoin. Les requêtes peuvent être basées sur une période, une ressource, une gravité de journal ou des entrées personnalisées.

Interroger les journaux Cloud

Vous pouvez utiliser les boutons de requête pour créer vos filtres personnalisés.

Créer des requêtes de journaux Cloud

Pour spécifier une période, cliquez sur le bouton de sélection de période et choisissez l'une des options fournies. Les journaux seront filtrés et provenant de la période sélectionnée.

Pour spécifier une ressource, cliquez sur le menu déroulant Ressource, puis sélectionnez Projet d'action de l'Assistant Google. Cette action ajoute un filtre à votre requête pour afficher les journaux provenant de votre projet.

Utilisez le bouton Gravité pour filtrer les journaux par Urgence, Informations, Débogage et selon d'autres niveaux de gravité.

Vous pouvez également utiliser le champ "Requête" dans le fichier Logs Explorer pour saisir des entrées personnalisées. Le moteur de requêtes utilisé par ce champ accepte à la fois les requêtes de base telles que la correspondance de chaînes et les types de requêtes plus avancés, y compris les comparateurs (<, >=, !=) et les opérateurs booléens (AND, OR, NOT).

Par exemple, l'entrée personnalisée ci-dessous renverrait des erreurs provenant d'un type d'appareil LIGHT:

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

Accédez à la bibliothèque de requêtes pour trouver d'autres exemples permettant d'interroger efficacement les journaux.

Test des correctifs

Une fois que vous avez identifié les erreurs et appliqué les mises à jour pour les corriger, nous vous recommandons de tester vos correctifs de manière approfondie avec Google Home Test Suite. Nous fournissons un guide utilisateur sur l'utilisation de Test Suite, qui vous aide à tester efficacement vos modifications.

Ressources d'apprentissage

Ce document explique comment résoudre les erreurs liées à votre action pour la maison connectée. Vous pouvez également consulter nos ateliers de programmation pour en savoir plus sur le débogage: