Récupérer le contenu brut et original d'un fil de ticket Zoho Desk est simple dès lors que vous connaissez le bon endpoint API et que vous disposez des bons identifiants.
Pourquoi c'est important
Lorsqu'un ticket d'assistance arrive par e-mail, Zoho Desk stocke à la fois une version traitée et la charge utile originale du message. Il arrive — lors du débogage de problèmes d'encodage, de l'audit d'en-têtes exacts ou de la création d'intégrations — que vous ayez besoin de cette source non traitée plutôt que de la vue du fil rendu. Savoir comment appeler l'endpoint dédié vous évite de scraper l'interface ou de deviner la structure des données.
Étape par étape
Étape 1. Rassemblez vos identifiants.
Avant d'effectuer toute requête, repérez deux valeurs : le ticketid du ticket que vous examinez, et le threadid du fil d'e-mail spécifique au sein de ce ticket. Ces deux valeurs sont disponibles depuis la vue détaillée du ticket dans Zoho Desk ou depuis un appel API préalable qui liste les fils. [1]
Étape 2. Vérifiez que vos scopes OAuth sont en place.
Votre application connectée doit disposer au minimum du scope Desk.tickets.READ autorisé. Sans ce scope, la requête sera rejetée avant d'atteindre les données du fil. Vérifiez votre configuration OAuth et assurez-vous que la liste des scopes inclut Desk.tickets.READ (et idéalement Desk.tickets.ALL pour un accès plus large). [4]
Étape 3. Assurez-vous que votre client Zoho Desk est initialisé avec un org ID valide.
L'API Zoho Desk requiert un en-tête orgId sur chaque appel. Si votre intégration n'a pas encore stocké l'identifiant d'organisation, effectuez un appel préliminaire pour récupérer toutes les organisations, prenez le champ id du premier élément de la liste retournée, et conservez-le pour les requêtes suivantes. [3]
Étape 4. Appelez l'endpoint du contenu original de l'e-mail.
Effectuez une requête HTTP GET vers :
GET /api/v1/tickets/{ticket_id}/threads/{thread_id}/original
Remplacez {ticketid} et {threadid} par les valeurs collectées à l'étape 1. Un paramètre de requête optionnel p peut être transmis pour fournir des options de pagination ou de filtrage supplémentaires. [1]
En Python, en utilisant un client wrapper, l'appel ressemble à ceci :
result = desk_api.get_original_mail_content(
ticket_id="123456",
thread_id="789012"
)
La méthode effectue un GET vers le chemin ci-dessus et retourne la charge utile brute du message. [1]
Étape 5. Gérez le renouvellement du token avec élégance.
Les tokens d'accès expirent. Concevez votre intégration de sorte que lorsqu'un code 401 est retourné, elle appelle automatiquement le flux de renouvellement du token — en récupérant un nouvel accesstoken à l'aide du refreshtoken stocké — et relance la requête originale. Stockez le token renouvelé et son horodatage d'expiration afin que les appels futurs réussissent sans intervention de l'utilisateur. [3]
Étape 6. Inspectez la réponse.
Le corps de la réponse contient le contenu original de l'e-mail pour ce fil. Analysez-le selon votre cas d'usage — en extrayant les en-têtes, les parties MIME brutes ou le corps en texte brut selon vos besoins. [1]
---
Erreurs courantes
- Org ID manquant. Zoho Desk rejette les requêtes qui ne comportent pas d'identifiant d'organisation valide dans les en-têtes. Découvrez et mettez toujours en cache l'org ID dès la première connexion plutôt que de supposer qu'il est déjà stocké. [3]
- Scopes insuffisants. Demander uniquement
Desk.tickets.WRITEsansDesk.tickets.READvous empêchera de récupérer le contenu du fil. Vérifiez attentivement votre chaîne de scopes complète — il est facile d'omettre les permissions de lecture lorsque l'on se concentre sur les opérations d'écriture. [4] - Mauvais thread ID. Le
thread_idn'est pas identique au ticket ID. Passer le ticket ID dans les deux champs est une erreur courante ; récupérez toujours la liste des fils en premier pour confirmer la valeur correcte. [1] - Tokens d'accès périmés. Si votre intégration n'implémente pas de callback de renouvellement du token, les appels échoueront silencieusement après l'expiration du token. Implémentez la logique de renouvellement décrite à l'étape 5 avant de passer en production. [3]
---
Ce qu'il faut vérifier
- Vérifiez que les deux identifiants sont corrects — confirmez que
ticketidetthreadidcorrespondent chacun à des enregistrements réels dans votre portail Zoho Desk avant d'appeler l'endpoint. [1] - Confirmez les scopes OAuth actifs — ouvrez les paramètres de votre application OAuth et vérifiez que
Desk.tickets.READ(ouDesk.tickets.ALL) apparaît dans la liste des scopes autorisés. [4] - Testez le renouvellement du token de bout en bout — faites expirer ou révoquez délibérément un token d'accès dans un environnement de staging et confirmez que votre intégration se renouvelle et relance la requête avec succès sans intervention manuelle. [3]
---
*Beam Help est une ressource d'assistance experte indépendante pour les utilisateurs de Zoho — nous ne sommes pas le support officiel de Zoho. Pour les problèmes au niveau de la plateforme, référez-vous toujours à la documentation officielle de l'API Zoho Desk.*