J’ai commencé à utiliser le webhook SendGrid avec une clé de vérification. Je reçois maintenant beaucoup de ces erreurs. J’ai envoyé une invitation en masse avec SendGrid.
Je ne suis pas sûr s’il s’agit de rebonds, comment pourrions-nous vérifier ? C’est très probablement autour du moment où nous avons effectué une invitation en masse à des utilisateurs n’utilisant pas Discourse.
Il se peut que quelque chose ne fonctionne pas avec la charge utile de l’événement reçue de Sendgrid. Il semble que le status ne soit pas défini sur les événements bounce comme prévu.
En supposant que vous ayez obtenu la trace de la pile de logster à \u003cYOUR_SITE\u003e/logs, l’onglet env devrait contenir les détails de la requête. Pourriez-vous fournir une copie désinfectée de la charge utile à partir de là ?
Je suis désolé, j’aurais dû être plus précis. Le corps de la requête contient les indices nécessaires. Vous devriez pouvoir le trouver après la ligne time. Vous devrez peut-être faire défiler vers le haut ou développer le panneau pour le voir.
Oui, c’est étrange. Pourriez-vous plutôt récupérer la charge utile du tableau de bord SendGrid ?
Selon la dernière documentation des webhooks SendGrid, le point de terminaison actuel dans Discourse devrait fonctionner sans problème, mais l’erreur pointe vers un problème avec la charge utile de la requête, donc un exemple serait formidable.
Avez-vous déjà résolu ce problème ? J’ai la même erreur, sur la même ligne de code :
Je ne connais pas Ruby, mais il semble qu’il puisse analyser le JSON sans problème jusqu’à ce qu’il essaie d’analyser le code d’erreur, Email::SMTP_STATUS_TRANSIENT_FAILURE pointe vers :
J’ai vérifié sur Webhook.site ce que Sendgrid envoie réellement lorsque je teste le webhook, et cela ressemble à ceci pour un rebond :
Aha.. je réponds à ma propre question, le bouton « Tester l’intégration » du Webhook vous ment..
Voici la charge utile réelle si j’envoie réellement un e-mail à une adresse e-mail inexistante :
[
{
"bounce_classification": "Non classifié",
"email": "noemail@this.does.not.exist.tld",
"event": "bounce",
"reason": "impossible d'obtenir les informations mx : échec de l'obtention des adresses IP à partir de l'enregistrement PTR : recherche <nil> : adresse non reconnue",
"sg_event_id": "Ym91bmNlLTQtNTA0ODUxOTUtZXVvMmlLeGRTYXlQRjRZRTQtLUk3QS0w",
"sg_message_id": "euo2iKxdSayPF4YE4--I7A.recvd-5f54b5d587-pczjm-1-67BADEEA-6.0",
"smtp-id": "<870b3a2a-160c-4fc8-bc9a-bd0d5b943b81@forum.umbraco.com>",
"timestamp": 1740300320,
"tls": 0,
"type": "blocked"
}
]
Et voilà : pas de champ status.
C’est lorsque j’utilise délibérément un domaine qui n’existe pas, j’ai l’impression que cela devrait être géré, peut-être que \"type\": \"blocked\" peut être l’indicateur que Discourse recherche.
Comme autre tentative, j’ai mis quelque chose d’absurde devant outlook.com et cela me donne une charge utile fonctionnelle :
Fantastique, c’était très utile. Je n’aurais pas pu faire tout ça tout seul
Merci, j’ai mis à jour et un test manuel fonctionne maintenant correctement, le journal d’erreurs est propre et je peux voir le rebond de l’e-mail dans le journal de messagerie