Sendgrid-nodejs: Bagaimana melakukan substitusi di template dengan node.js

Dibuat pada 30 Nov 2016  ·  13Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Saya menggunakan API 3 untuk mengintegrasikan sendgrid dengan aplikasi node.js saya. Saya mendapatkan email dasar yang berfungsi tetapi saya perlu mengganti hal-hal tertentu di template dengan data. Di bawah ini adalah kode yang saya gunakan untuk mengirim email, email keluar tetapi substitusi tidak berfungsi.

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

Detail teknis:

  • sendgrid-nodejs Versi: master (terakhir komit: [nomor komit])
  • Versi Node.js: 4.1.2
question

Komentar yang paling membantu

Hanya pembaruan yang url di atas yang disebutkan oleh @thinkingserious sedikit berubah: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Semua 13 komentar

Hai @ neeraj87 ,

Saya harap contoh ini dapat membantu Anda: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Beri tahu saya jika Anda mengalami masalah dengan itu. Terima kasih!

Hai @ neeraj87 ,

Sederhananya, struktur JSON Anda tidak benar.

Substitusi harus berada di dalam larik personalisasi. Dengan cara ini, Anda dapat menentukan substitusi berbeda untuk setiap orang.

Juga nama (kunci) dari array substitusi harus merupakan substitusi dan nilai substitusi harus berupa string. Bukan sebuah array.

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

@thinkingserious terima kasih atas tautan ke dokumentasinya, berhasil. Saya juga memperhatikan bahwa saya kehilangan jamak "s" dalam substitusi.

@alperenozlu terima kasih atas jawabannya, memperbaiki struktur JSON dan pasangan nilai kunci.

@thinkingserious satu pertanyaan singkat, saya mencoba untuk mengganti tag menggunakan variabel tetapi tetap memberi saya: error: [{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)
    });

Ini adalah kesalahan yang saya dapatkan

400
{kesalahan: [{pesan: 'Permintaan Buruk', bidang: null, bantuan: null}]}
{server: 'nginx',
tanggal: 'Kam, 01 Des 2016 07:08:51 GMT',
'content-type': 'application / json',
'content-length': '63',
koneksi: 'tetap-hidup'}

Hai @ neeraj87 ,

Harap periksa jenis variabel Anda, jenisnya harus berupa string. Juga harap ubah kunci substitusi menjadi substitusi .

@alperenozlu Anda benar, salah satu substitusi adalah bilangan bulat. mengubahnya menjadi string dan berhasil.

Terima kasih untuk bantuannya.

Hallo teman-teman!
Bagaimana saya bisa melakukan substitusi dengan array nilai, bukan hanya string?

@Deniscapp Anda dapat membaca elemen array, menggabungkannya untuk membentuk string.

@ neeraj87 itulah yang saya lakukan! Tetapi saya hanya ingin tahu apakah mereka telah menambahkan fitur ini.
Terima kasih atas jawabannya! :)

@Deniscapp Ups , tidak tahu itu. Saya pikir itu di versi yang lebih lama. Mungkin seseorang "pejabat" dari SendGrid bisa menjawab ini.

@Denis_coklat , @ neeraj87

Dari dokumen API:

Kumpulan pasangan kunci / nilai mengikuti pola "substitution_tag": "value to Substute". Semua diasumsikan sebagai string. Penggantian ini akan berlaku untuk teks dan konten html dari badan email Anda, selain parameter subjek dan balas ke.

Mungkin berguna untuk memiliki perpustakaan yang mengizinkan array dan kemudian kita menggabungkannya untuk membentuk string di belakang layar.

Hanya pembaruan yang url di atas yang disebutkan oleh @thinkingserious sedikit berubah: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Terima kasih @vaskort!

Saya telah memperbarui tautan di komentar asli saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat