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