Sendgrid-nodejs: Cómo hacer una sustitución en una plantilla con node.js

Creado en 30 nov. 2016  ·  13Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

Estoy usando API 3 para integrar sendgrid con mi aplicación node.js. Conseguí que el correo electrónico básico funcionara, pero necesito sustituir ciertas cosas en la plantilla con datos. A continuación se muestra el código que estoy usando para enviar correo electrónico, el correo electrónico sale pero las sustituciones no funcionan.

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

Detalles técnicos:

  • sendgrid-nodejs Versión: master (última confirmación: [número de confirmación])
  • Versión de Node.js: 4.1.2
question

Comentario más útil

Solo una actualización de que la URL anterior mencionada por @thinkingserious cambió ligeramente: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Todos 13 comentarios

Hola @ neeraj87 ,

Espero que estos ejemplos te ayuden: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Por favor, avíseme si tiene algún problema con ellos. ¡Gracias!

Hola @ neeraj87 ,

Simplemente, su estructura JSON no es cierta.

La sustitución debe estar dentro de la matriz de personalizaciones. De esta forma, puedes definir diferentes sustituciones para cada persona.

Además, el nombre (clave) de una matriz de sustitución debe ser sustituciones y los valores de una sustitución deben ser una cadena. No es una matriz.

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

@thinkingserious gracias por el enlace a la documentación, funcionó. También me di cuenta de que me faltaba el plural "s" en las sustituciones.

@alperenozlu gracias por la respuesta, arregló la estructura JSON y el par clave-valor.

@thinkingserious una pregunta rápida, estoy tratando de sustituir las etiquetas usando variables pero me sigue dando: errores: [{mensaje: 'Solicitud incorrecta', campo: nulo, ayuda: nulo}]

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 es el error que me sale

400
{errores: [{mensaje: 'Solicitud incorrecta', campo: nulo, ayuda: nulo}]}
{servidor: 'nginx',
fecha: 'Thu, 01 Dec 2016 07:08:51 GMT',
'content-type': 'aplicación / json',
'content-length': '63',
conexión: 'mantener vivo'}

Hola @ neeraj87 ,

Verifique el tipo de sus variables, su tipo debe ser una cadena. También cambie la clave de la sustitución a sustituciones .

@alperenozlu tienes razón, una de las sustituciones era un número entero. lo convirtió en una cuerda y funciona.

Gracias por la ayuda.

¡Hola chicos!
¿Cómo puedo hacer una sustitución con una matriz de valores, en lugar de solo una cadena?

@Deniscapp puede leer los elementos de la matriz, concatenarlos para formar una cadena.

@ neeraj87 ¡ eso es lo que hice! Pero me preguntaba si habían agregado esta función de alguna manera.
¡Gracias por la respuesta! :)

@Deniscapp oops, no lo sabía. Creo que estaba en la versión anterior. Quizás alguien "oficial" de SendGrid pueda responder esto.

@Deniscapp , @ neeraj87

De los documentos de la API:

Una colección de pares clave / valor que siguen el patrón "substitution_tag": "valor para sustituir". Se supone que todos son cadenas. Estas sustituciones se aplicarán al texto y al contenido html del cuerpo de su correo electrónico, además del asunto y los parámetros de respuesta.

Podría ser útil que la biblioteca permita matrices y luego las concatenamos para formar una cadena detrás de escena.

Solo una actualización de que la URL anterior mencionada por @thinkingserious cambió ligeramente: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

¡Gracias @vaskort!

Actualicé el enlace en mi comentario original.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Chrischuck picture Chrischuck  ·  3Comentarios

thinkingserious picture thinkingserious  ·  4Comentarios

thinkingserious picture thinkingserious  ·  4Comentarios

TobiahRex picture TobiahRex  ·  3Comentarios

agostonbonomi picture agostonbonomi  ·  3Comentarios