Sendgrid-nodejs: Como fazer a substituição em um modelo com node.js

Criado em 30 nov. 2016  ·  13Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

Estou usando a API 3 para integrar sendgrid com meu aplicativo node.js. O e-mail básico está funcionando, mas preciso substituir algumas coisas no modelo por dados. Abaixo está o código que estou usando para enviar email, o email sai mas as substituições não funcionam.

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)
    });

Detalhes técnicos:

  • Versão sendgrid-nodejs: master (commit mais recente: [número do commit])
  • Versão Node.js: 4.1.2
question

Comentários muito úteis

Apenas uma atualização de que o url acima mencionado por @thinkingserious mudou ligeiramente: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Todos 13 comentários

Olá @ neeraj87 ,

Espero que esses exemplos ajudem você: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Informe-nos se tiver problemas com eles. Obrigado!

Olá @ neeraj87 ,

Simplesmente, sua estrutura JSON não é verdadeira.

A substituição deve estar dentro da matriz de personalizações. Desta forma, você pode definir substituições diferentes para cada pessoa.

Além disso, o nome (chave) de uma matriz de substituição deve ser substituições e os valores de uma substituição devem ser uma string. Não é uma matriz.

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

@thinkingserious obrigado pelo link para a documentação, funcionou. Também notei que faltava o plural "s" nas substituições.

@alperenozlu obrigado pela resposta, consertou a estrutura JSON e o par de valores-chave.

@thinkingserious uma pergunta rápida, estou tentando substituir as tags por variáveis, mas continua me dando: erros: [{mensagem: 'Pedido inválido', campo: null, ajuda: 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)
    });

Este é o erro que recebo

400
{erros: [{mensagem: 'Solicitação inválida', campo: nulo, ajuda: nulo}]}
{servidor: 'nginx',
data: 'Qui, 01 de dezembro de 2016 07:08:51 GMT',
'content-type': 'application / json',
'comprimento do conteúdo': '63',
conexão: 'keep-alive'}

Olá @ neeraj87 ,

Por favor, verifique o tipo de suas variáveis, seu tipo deve ser string. Além disso, altere a chave da substituição para substituições .

@alperenozlu você está certo, uma das substituições era um número inteiro. convertido em string e funciona.

Obrigado pela ajuda.

Ola pessoal!
Como posso fazer uma substituição com uma matriz de valores, em vez de apenas uma string?

@Deniscapp você pode ler os elementos do array, concatená-los para formar uma string.

@ neeraj87 foi o que eu fiz! Mas eu estava pensando se eles adicionaram esse recurso de alguma forma.
Obrigado pela resposta! :)

@Deniscapp ops , não sabia disso. Acho que estava na versão mais antiga. Talvez alguém "oficial" do SendGrid possa responder a isso.

@Deniscapp , @ neeraj87

Dos documentos da API:

Uma coleção de pares de chave / valor seguindo o padrão "substitution_tag": "valor a ser substituído". Todos são considerados strings. Essas substituições se aplicarão ao conteúdo de texto e html do corpo do seu e-mail, além dos parâmetros assunto e resposta.

Pode ser útil que a biblioteca permita arrays e depois os concatenamos para formar uma string nos bastidores.

Apenas uma atualização de que o url acima mencionado por @thinkingserious mudou ligeiramente: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Obrigado @vaskort!

Eu atualizei o link em meu comentário original.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

TobiahRex picture TobiahRex  ·  3Comentários

thinkingserious picture thinkingserious  ·  4Comentários

nicoasp picture nicoasp  ·  3Comentários

Chrischuck picture Chrischuck  ·  3Comentários

thinkingserious picture thinkingserious  ·  4Comentários