Sendgrid-nodejs: Comment faire une substitution dans un modèle avec node.js

Créé le 30 nov. 2016  ·  13Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Résumé de la question

J'utilise l'API 3 pour intégrer sendgrid à mon application node.js. J'ai fait fonctionner le courrier électronique de base, mais je dois remplacer certaines choses dans le modèle par des données. Vous trouverez ci-dessous le code que j'utilise pour envoyer un e-mail, l'e-mail sort mais les substitutions ne fonctionnent pas.

var sg = require('sendgrid')('API-KEY');

    var request = sg.emptyRequest();
    request.body = {
        "from": {
            "email": "[email protected]",
            "name": "Admin"
        },
        "personalizations" : [
            {
                "to": [
                    {
                        "email": recepientEmail,
                        "name": "User"
                    }
                ]
            }
        ],
        "subject": "This is subject",
        "template_id": "template-id-here",
        "substitution": {
            "-sub1-": ["This is the new substitured text"],
            "-sub2-": ["Substitured text"]
        }
    };
    request.method = 'POST';
    request.path = '/v3/mail/send';

    sg.API(request, function(error, response) {
        console.log(response.statusCode)
        console.log(response.body)
        console.log(response.headers)
    });

Détails techniques:

  • sendgrid-nodejs Version: master (dernier commit: [numéro de commit])
  • Version de Node.js: 4.1.2
question

Commentaire le plus utile

Juste une mise à jour que l'url ci-dessus mentionnée par @thinkingserious a légèrement changé: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Tous les 13 commentaires

Salut @ neeraj87 ,

J'espère que ces exemples vous aideront: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Veuillez me faire savoir si vous rencontrez des problèmes avec ceux-ci. Merci!

Salut @ neeraj87 ,

Simplement, votre structure JSON n'est pas vraie.

La substitution doit être à l'intérieur du tableau des personnalisations. De cette manière, vous pouvez définir différentes substitutions pour chaque personne.

De plus, le nom (clé) d'un tableau de substitution doit être des substitutions et les valeurs d'une substitution doivent être une chaîne. Pas un tableau.

"substitutions": { "-sub1-": "This is the new substitured text", "-sub2-": "Substitured text" }

@thinkingserious merci pour le lien vers la documentation, cela a fonctionné. J'ai également remarqué que je manquais le pluriel «s» dans les substitutions.

@alperenozlu merci pour la réponse, a corrigé la structure JSON et la paire clé / valeur.

@thinkingserious une petite question, j'essaie de remplacer les balises en utilisant des variables mais cela me donne toujours: erreurs: [{message: 'Bad Request', field: null, help: null}]

var request = sg.emptyRequest();
    request.body = {
        "from": {
            "email": "[email protected]",
            "name": "Admin"
        },
        "personalizations" : [
            {
                "to": [
                    {
                        "email": recepientEmail,
                        "name": userNameVariable
                    }
                ],
                "substitution": {
                    "-sub1-": variableB,
                    "-sub2-": variableA
                }
            }
        ],
        "subject": "This is subject",
        "template_id": "template-id-here"
    };
    request.method = 'POST';
    request.path = '/v3/mail/send';

    sg.API(request, function(error, response) {
        console.log(response.statusCode)
        console.log(response.body)
        console.log(response.headers)
    });

C'est l'erreur que je reçois

400
{erreurs: [{message: 'Bad Request', field: null, help: null}]}
{serveur: 'nginx',
date: 'Jeu, 01 décembre 2016 07:08:51 GMT',
'content-type': 'application / json',
'content-length': '63',
connexion: 'keep-alive'}

Salut @ neeraj87 ,

Veuillez vérifier le type de vos variables, leur type doit être une chaîne. Veuillez également changer la clé de la substitution en substitutions .

@alperenozlu vous avez raison, l'une des substitutions était un entier. converti en chaîne et cela fonctionne.

Merci pour l'aide.

Bonjour gars!
Comment puis-je faire une substitution avec un tableau de valeurs, au lieu d'une simple chaîne?

@Deniscapp vous pouvez lire les éléments du tableau, les concaténer pour former une chaîne.

@ neeraj87 c'est ce que j'ai fait! Mais je me demandais simplement s'ils avaient ajouté cette fonctionnalité d'une manière ou d'une autre.
Merci d'avoir répondu! :)

@Deniscapp oups, je ne le savais pas. Je pense que c'était dans l'ancienne version. Peut-être que quelqu'un "officiel" de SendGrid peut répondre à cela.

@Deniscapp , @ neeraj87

À partir de la documentation de l'API:

Une collection de paires clé / valeur suivant le modèle "substitution_tag": "value to substitute". Tous sont supposés être des chaînes. Ces substitutions s'appliqueront au texte et au contenu html du corps de votre e-mail, en plus du sujet et des paramètres de réponse.

Cela pourrait être utile pour que la bibliothèque autorise les tableaux, puis nous les concaténons pour former une chaîne dans les coulisses.

Juste une mise à jour que l'url ci-dessus mentionnée par @thinkingserious a légèrement changé: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Merci @vaskort!

J'ai mis à jour le lien dans mon commentaire d'origine.

Cette page vous a été utile?
0 / 5 - 0 notes