Sendgrid-nodejs: Bagaimana menggunakan versi template untuk dukungan berbagai bahasa

Dibuat pada 27 Mei 2018  ·  33Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

image

Jadi sepertinya saya dapat mengirim email berbeda yang ditulis dengan bahasa berbeda untuk setiap pelanggan (pelokalan) sesuai dengan dokumen, tetapi bagaimana saya bisa melakukannya?
Ia mengatakan saya perlu mengaktifkan dan mengubah melalui API, Tapi saya tidak tahu bagaimana mencapainya.
atau apakah saya perlu menggunakan substitusi dan mengirim bundel pesan dari backend kami?
Bantuan apa pun akan dihargai!

Detail teknis:

  • sendgrid-nodejs Versi: master (komit terbaru: [13af4a6])
  • Versi Node.js: 6.12.3
unknown or a waiting for feedback question

Komentar yang paling membantu

@thinkingserious mega +1 untuk fitur ini - Kami juga membutuhkan fitur ini, bagi kami, kasus penggunaannya sedikit berbeda, kami ingin membagikan pembuatan / pemeliharaan template kepada orang-orang pemasaran kami, hanya orang-orang ini bukan pemrogram, jadi kami membutuhkan template WYSIWYG per bahasa. Memiliki 1 versi terpisah per bahasa akan menjadi jawaban untuk masalah kami.

Berikut ini akan menjadi lebih baik:

1 - kemampuan untuk menyetel versi default (ketika tidak ada versi yang dipilih, atau versi tidak valid disediakan versi default akan mengambil alih)
2 - hanya memiliki parameter tambahan di POST /mail/send API untuk menambahkan versi

Kami memiliki platform dengan lebih dari 12 bahasa dan terus bertambah (ya, kami menyukai tantangan) jadi kami membutuhkan orang pemasaran khusus untuk bahasa yang berbeda, mereka tidak membuat kode template yang begitu sederhana. Selain itu, kami berencana untuk memiliki pengguna dalam jumlah besar, jadi pertama-tama menyetel templat yang diperlukan menjadi aktif, kemudian mengirim email akan mengakibatkan masalah konkurensi di mana templat yang salah akan dipilih.

Terima kasih banyak,

Semua 33 komentar

Halo @ ifndefdeadmau5 ,

Berikut adalah dokumentasi API tentang fitur ini. Berikut adalah cara menggunakan SDK ini untuk melakukan panggilan API itu.

Saya harap itu membantu!

Salam hangat,

Elmer

Terima kasih telah kembali kepada saya @thinkingserious ,

Saya masih tidak tahu bagaimana sebenarnya 'aktifkan versi template tertentu' dapat digunakan.
Saya memikirkan skenario bahwa saya memiliki 2 versi template yang ditulis oleh lebih dari 2 bahasa, mungkin bahasa Inggris dan Spanyol, atau apa pun.

Kemudian, saya membuat pesan send API call dengan versi template tertentu yang sesuai dengan bahasa pengguna

export function sendSendGridEmail()
{
  sgMail.setApiKey(config.get('sendgrid.API_KEY'));
  sgMail.setSubstitutionWrappers('{{', '}}');
  const msg = {
    to: '[email protected]',
    from: '[email protected]',
    subject: 'Sending with SendGrid is Fun',
    text: 'and easy to do anywhere, even with Node.js',
    html: '<strong>and easy to do anywhere, even with Node.js</strong>',
    templateId: isUserLocaleEnglish ? ENGLISH_TEMPLATE_ID : SPANISH_TEMPLATE_ID, // This line!
    substitutions: {
      name: 'Some One',
      city: 'Denver',
    },
  };
  sgMail.send(msg);
}

Tetapi contoh di atas membutuhkan 2 template terpisah, bukan satu template dengan versi berbeda. Yang dapat menyebabkan pembuatan template terpisah tetapi konten terkait.
Apa yang kulewatkan di sini? tolong beri saya pencerahan.
Sekali lagi terima kasih dan kami menunggu kabar dari Anda!

Halo @ ifndefdeadmau5 ,

Anda dapat memiliki beberapa versi per template. Kemudian Anda dapat menggunakan SDK untuk mengaktifkan versi tertentu.

Pertama, Anda akan membuat beberapa versi template Anda. Kemudian Anda akan mengaktifkan versi yang diinginkan sebelum Anda melakukan panggilan di atas.

Salam hangat,

Elmer

Selamat pagi @thinkingserious ,

Terima kasih atas tanggapan Anda yang cepat dan saya belum membayangkan penyelesaian seperti itu.
Sekarang saya mengerti bagaimana melakukannya, tetapi satu pertanyaan adalah mengapa tidak mengaktifkan semua versi template pada saat pertama lalu biarkan pengguna dapat menggunakannya tanpa repot-repot mengaktifkan / menonaktifkan sesuatu?

Yang menjadi perhatian saya adalah, bagaimana jika lebih dari dua pengguna yang menggunakan bahasa berbeda melakukan beberapa tindakan pada waktu yang sama (persis sama), sehingga server kita perlu menangani 2 permintaan pada waktu yang bersamaan. Lalu versi template mana yang akan diaktifkan?

di bawah ini adalah bagian dari kode server kami, agar Anda mengetahui situasi saya

export async function sendSendGridEmail() {
  const locale = 'ko';
  const isEnglishUser = locale === 'en';
  const PASSWORD_RESET_TEMPLATE_ID = '2096abb7-a9f8-413f-96a1-b9df0644b313';

  const { versions } = await getTemplate(PASSWORD_RESET_TEMPLATE_ID);
  const KO_VER = _.find(versions, { name: 'Korean' }).id;
  const EN_VER = _.find(versions, { name: 'English' }).id;

  await activateVersion(PASSWORD_RESET_TEMPLATE_ID, isEnglishUser ? EN_VER : KO_VER);

  sgMail.setSubstitutionWrappers('{{', '}}');
  const msg = {
    to: '[email protected]',
    from: '[email protected]',
    templateId: PASSWORD_RESET_TEMPLATE_ID,
    substitutions: {
      username: 'Test Username',
    },
  };
  sgMail.send(msg);
}

Halo @ ifndefdeadmau5 ,

Itu perhatian yang valid.

Tampaknya yang benar-benar Anda butuhkan adalah sistem template baru (dalam versi beta) kami . Untuk bergabung dengan beta ini, silakan kirim email ke [email protected].

Salam hangat,

Elmer

Halo @thinkingserious ,

Saya meminta melalui email ke [email protected]. Terima kasih!

Saya juga melihat templat transaksional untuk melihat bagaimana kami dapat menggunakan versi templat untuk berbagai email khusus lokal.
Saya setuju, rasanya aneh harus mengaktifkan versi template tertentu sebelum menggunakannya. Ini bukan solusi terbaik untuk perangkat lunak transaksi tinggi kami. Saya berharap dapat menentukan versi mana yang akan digunakan dalam permintaan POST /mail/send .

Hai @ andyblack19
Tidak perlu membuat versi dengan templat baru yang telah kami perkenalkan. Di akun Anda, Anda akan melihat opsi untuk template "Transaksional". Di sana Anda dapat membuat satu template yang akan melayani banyak bahasa. Anda mungkin ingin melihat dokumen di sini dan contoh di sini .

Saya memang membaca halaman itu .. tetapi benar-benar melewatkan bagian multibahasa! Terima kasih atas bantuan Anda

Tampaknya menggunakan template mode "Editor Desain" tidak memungkinkan dengan strategi setang yang disebutkan di atas. Jika seseorang ingin memiliki beberapa template untuk kasus penggunaan yang berbeda dengan setidaknya dua bahasa berbeda, apakah Anda harus menyalin dan menempelkan kode template ke setiap template saat tata letak umum diubah? Mengapa tidak ada cara untuk memiliki tata letak tingkat atas yang dapat dibagikan?

Selain itu, tampaknya Anda harus melokalkan subjek email di sisi server, alih-alih di konten template di mana Anda sudah menyetel badan template untuk setiap bahasa? Tidak masuk akal untuk memisahkan subjek dan tubuh dengan cara ini. Atau apakah saya melewatkan sesuatu?

Halo @raine

Tampaknya menggunakan template mode "Editor Desain" tidak memungkinkan dengan strategi setang yang disebutkan di atas.

Anda benar bahwa desain khusus dari template bahasa yang ditemukan di sini tidak dirancang untuk bekerja dalam mode "Editor Desain". Anda masih dapat membuat sesuatu yang serupa di "Editor Desain" menggunakan Modul Kode.

Jika seseorang ingin memiliki beberapa template untuk kasus penggunaan yang berbeda dengan setidaknya dua bahasa berbeda, apakah Anda harus menyalin dan menempelkan kode template ke setiap template saat tata letak umum diubah? Mengapa tidak ada cara untuk memiliki tata letak tingkat atas yang dapat dibagikan?

Ini sebenarnya adalah sesuatu yang telah dibawa ke teknisi kami. Saya tetap menyarankan Anda menggunakan tombol umpan balik saat Anda masuk ke akun Anda untuk memberi tahu teknisi kami bahwa ini diinginkan. Semakin banyak orang yang mengirimkan umpan balik seperti itu, semakin besar kemungkinan kami akan melihat peningkatan seperti itu. Tombol umpan balik adalah salah satu cara terbaik untuk mendapatkan umpan balik secara langsung kepada teknisi kami terkait hal apa pun di luar pustaka kode. Saya pribadi telah memberikan suara untuk sesuatu yang mirip dengan apa yang Anda cari.

Selain itu, tampaknya Anda harus melokalkan subjek email di sisi server, alih-alih di konten template di mana Anda telah menyetel badan template untuk setiap bahasa? Tidak masuk akal untuk memisahkan subjek dan tubuh dengan cara ini. Atau apakah saya melewatkan sesuatu?

Saya pikir Anda telah melewatkan sesuatu. Saya tahu dari pengujian pribadi saya bahwa setang berfungsi dalam mengatur subjek template. Meskipun saya mungkin tidak memahami kata-kata Anda dengan benar. Saya tahu subjek belum dirancang secara visual untuk mendukung ini, jadi yang terbaik adalah membuat kode dan konten dalam sesuatu seperti editor teks dan menempelkannya ke bidang subjek setelahnya. Ini adalah area lain di mana menggunakan tombol umpan balik disarankan. Silakan menyarankan apa yang menurut Anda akan menjadi cara yang lebih baik untuk melakukan ini.

Harap perbaiki semua kesalahan yang saya lakukan dan berikan detail lebih lanjut agar saya dapat lebih memahami.

Kyle

Bagaimana contoh terjemahan alamat beberapa bahasa dari baris subjek email?

@kedirijogja

Di baris subjek di template Anda akan menggunakan sesuatu seperti ini:

{{#if english}}
Hello
{{else if spanish}}
Hola
{{else if french}}
Bonjour
{{/if}}

Anda pada dasarnya menggunakan struktur yang sama yang ada di konten HTML. Beri tahu kami jika Anda memiliki pertanyaan lebih lanjut.

Hai @kylearoberts , apakah ada cara untuk memeriksa nilai variabel dalam kondisi bersyarat? Jadi, daripada memeriksa beberapa variabel seperti english atau spanish , saya hanya akan memeriksa apakah language variabel sama dengan en atau es . Ini tidak membuat banyak perbedaan dalam template itu sendiri, tetapi itu terjadi di backend di mana saya harus menerjemahkan variabel kode bahasa menjadi variabel yang diberi nama khusus dalam data template dinamis.

Saya memeriksa Handlebars sebentar dan sepertinya tidak mendukungnya secara default. Tetapi mungkin SendGrid memiliki beberapa pembantu khusus bawaan.

@tokopedia

Terima kasih atas pertanyaan bagusnya. Seperti yang ada sekarang, sistem tidak akan bekerja seperti itu, tetapi kemungkinan besar kita akan memiliki sesuatu nanti yang akan memungkinkan hal seperti itu. Ketika kami membuat perubahan seperti itu, kami kemungkinan akan memperbarui dokumen dan contoh kami tentang cara menggunakan templat transaksional.

Hai,
Saat ini saya menggunakan sistem template baru untuk email multi bahasa saya. Masalah utama bidang subjek adalah panjangnya terbatas. Pada dasarnya, konten subjek saya seperti ini:

{{#if english}}
Halo bla bla ...
{{else if spanish}}
Halo bla bla ...
{{else if french}}
Halo bla bla ...
{{/jika}}

Tetapi ada beberapa masalah:

  1. Panjang bidang subjek tidak cukup untuk lebih dari beberapa bahasa. Saya harus memotong teks dan nama variabel hanya agar tetap dalam batas. Tapi ini jelas tidak akan berhasil jika kita harus menambahkan bahasa baru.
  2. Editor menunjukkan bidang baris tunggal untuk memasukkan subjek yang tidak cocok untuk bekerja dengan subjek templat.
  3. Bidang subjek editor dengan senang hati memotong teks yang dimasukkan dari penempelan. Ini akan menyebabkan kesalahan template karena sintaksisnya salah karena kode skrip template yang dihapus

@agma

Saya mengalami masalah yang sama dengan Anda. Ini juga bukan pertama kalinya kami mendengar ini. Kami senang mendapatkan umpan balik seperti ini karena ini membantu kami meningkatkan produk kami. Saya telah memastikan untuk mendapatkan umpan balik Anda kepada tim teknik kami dan saya dapat memberi tahu Anda bahwa ini adalah salah satu area yang ingin mereka tingkatkan. Ketika mereka mendapat kesempatan untuk mengerjakan perbaikan, ini mungkin salah satunya. Terima kasih sekali lagi atas umpan baliknya.

@thinkingserious +1 Saya perlu fitur pelokalan

@thinkingserious +1 besar untuk fitur ini.
Fitur yang sangat bagus untuk dapat menangani semua bahasa email dalam template yang sama tetapi seperti yang dinyatakan sebelumnya, fitur ini tidak dapat digunakan karena batasan subjek.

@thinkingserious mega +1 untuk fitur ini - Kami juga membutuhkan fitur ini, bagi kami, kasus penggunaannya sedikit berbeda, kami ingin membagikan pembuatan / pemeliharaan template kepada orang-orang pemasaran kami, hanya orang-orang ini bukan pemrogram, jadi kami membutuhkan template WYSIWYG per bahasa. Memiliki 1 versi terpisah per bahasa akan menjadi jawaban untuk masalah kami.

Berikut ini akan menjadi lebih baik:

1 - kemampuan untuk menyetel versi default (ketika tidak ada versi yang dipilih, atau versi tidak valid disediakan versi default akan mengambil alih)
2 - hanya memiliki parameter tambahan di POST /mail/send API untuk menambahkan versi

Kami memiliki platform dengan lebih dari 12 bahasa dan terus bertambah (ya, kami menyukai tantangan) jadi kami membutuhkan orang pemasaran khusus untuk bahasa yang berbeda, mereka tidak membuat kode template yang begitu sederhana. Selain itu, kami berencana untuk memiliki pengguna dalam jumlah besar, jadi pertama-tama menyetel templat yang diperlukan menjadi aktif, kemudian mengirim email akan mengakibatkan masalah konkurensi di mana templat yang salah akan dipilih.

Terima kasih banyak,

Halo semua yang berkontribusi pada masalah ini!

Kami sedang melakukan penelitian dengan pelanggan untuk mencoba dan memahami bagaimana kami dapat memecahkan masalah pelokalan / penerjemahan email yang dikirim menggunakan SendGrid dengan sebaik-baiknya. Jika Anda punya waktu luang, kami akan senang dengan tanggapan Anda karena kami memikirkan cara membuatnya dengan benar!

Berikut tautan untuk mendaftar slot untuk berbicara dengan saya dan tim saya tentang cara Anda menangani terjemahan dan pelokalan hari ini: https://calendly.com/travisterwilligar/sendgrid-research?month=2019-09

Terima kasih banyak atas waktunya!

@ ben-grid baru saja memeriksa kalender tetapi waktu tidak bekerja untuk saya, jadi saya akan memberikan ringkasan singkat tentang apa yang akan luar biasa.

Kami memiliki sistem e-niaga dengan kotak pasir dan akun produksi. Dan ketika kami menyetujui tempalte, kami mengekspor dan mengimpornya ke produksi (ini juga merupakan fitur yang hebat, memiliki kotak pasir dan templat produksi dengan saluran promosi)

Ngomong-ngomong ... saat ini kami memiliki 2 bahasa, tetapi tugas yang harus dilakukan adalah pindah ke 5 bahasa. Saat ini kami memiliki 11 template. Apa yang kami lakukan sekarang adalah {{if lang.en}} Hai {{else}} Hallo {{/ if}} hanya ini tidak akan berfungsi untuk 5 bahasa (20 bahasa dalam waktu dekat) jadi sekarang kami akan membuat templat terpisah per bahasa, membuat 55 templat alih-alih 11. (mengerikan)

Apa yang bagus!

Pilihan 1:
Tambahkan parameter "versi" ke API, dan kirim saja versi yang diberikan ke. Sekarang kami setidaknya dapat mengirim versi tertentu dalam bahasa tertulis (versi bisa menjadi versi terjemahan dari template, fallback akan menjadi yang aktif)

pilihan 2
Tambahkan parameter yang dilokalkan ke template. Dengan cara ini kita dapat menggunakan template untuk beberapa bahasa hanya dengan menerjemahkan parameternya. Kelemahan dari pendekatan ini adalah beberapa konstruksi kalimat tidak berfungsi untuk setiap bahasa, jadi mungkin Anda ingin lebih felxibility

* Opsi 3 Unicorn dengan air mata emas *
Pada dasarnya memiliki tab terjemahan untuk setiap modul yang Anda masukkan. Jadi ketika Anda memasukkan modul seperti ini
image modul ini akan memiliki banyak bahasa lokal. Pada dasarnya adalah tiruan dari aslinya untuk bahasa yang berbeda. Anda harus dapat mengatur bahasa template (mengatur semua modul ke bahasa tertentu termasuk subjek dan preheader) mungkin mewarnai modul merah jika belum diisi untuk modul itu

Hanya 2 sen saya, saya akan sangat senang dengan tanggapan Anda mengenai hal ini, jika Anda ingin mengirim email, hubungi saya di [email protected] id dengan senang hati untuk memberikan beberapa wawasan. Terima kasih dan semoga segera ada solusi. Dan jika bukan beberapa wawasan tentang bagaimana hal itu akan ditangani sehingga kami dapat mempersiapkan,

@reneweteling Terima kasih banyak, itu sangat membantu. Kami sedang mengerjakan prototipe yang mungkin akan lebih mirip dengan opsi 2 dan 3 daripada 1. Saya akan menghubungi Anda melalui email ketika kami memiliki sesuatu yang layak untuk mendapatkan umpan balik. Sekali lagi terima kasih atas masukan Anda!

@ Reneweteling Saya pikir opsi 1 atau 2 akan berhasil - karena sangat intuitif. Opsi 3 - ya, senang memiliki ...

@ ben-grid & @ a-tonchev Terima kasih atas semua kerja kerasnya! Saya sudah berpindah pekerjaan, jadi bagi saya, ini sudah tidak relevan lagi. Pertahankan kerja bagus!

Ada berita yang satu ini? Batasan panjang subjek adalah masalah bagi saya mengingat saya juga perlu melokalkan baris subjek dan saya pikir dengan editor baru panjang subjek bahkan lebih kecil, saya dapat memiliki sekitar 110 karakter di baris subjek.

IMO, Tampaknya solusi yang lebih bisa diterapkan adalah menghasilkan semua sisi server teks, lalu masukkan saja ke dalam template sebagai paragraf yang dipotong.

Jika sebuah perusahaan mendukung banyak bahasa, maka situs web mereka sudah memiliki solusi untuk ini, yaitu di sisi server (memuat bahasa dari XML / database). Menurut pendapat saya, setiap email yang terkait dengan proyek yang sama juga harus memiliki teksnya yang disimpan dalam file bahasa ini.

Paragraf / teks yang diperlukan kemudian dapat ditarik dari file tersebut bergantung pada bahasa pengguna, lalu diteruskan sebagai variabel template ke sendgrid. Sendgrid hanya akan menjadi template menyeluruh (seperti, footer dll - hanya gaya dan gambar) dan bahkan beberapa gaya harus disimpan dalam file bahasa itu sendiri - seperti kata yang harus dicetak tebal dll.

Jadi template akan berakhir seperti: subject HelloLine welcomeparagraph helpparagraph footerslogan . Dan itu dia.

IMO, Tampaknya solusi yang lebih bisa diterapkan adalah menghasilkan semua sisi server teks, lalu masukkan saja ke dalam template sebagai paragraf yang dipotong.

Jika sebuah perusahaan mendukung banyak bahasa, maka situs web mereka sudah memiliki solusi untuk ini, yaitu di sisi server (memuat bahasa dari XML / database). Menurut pendapat saya, setiap email yang terkait dengan proyek yang sama juga harus memiliki teksnya yang disimpan dalam file bahasa ini.

Paragraf / teks yang diperlukan kemudian dapat ditarik dari file tersebut bergantung pada bahasa pengguna, lalu diteruskan sebagai variabel template ke sendgrid. Sendgrid hanya akan menjadi template menyeluruh (seperti, footer dll - hanya gaya dan gambar) dan bahkan beberapa gaya harus disimpan dalam file bahasa itu sendiri - seperti kata yang harus dicetak tebal dll.

Jadi template akan berakhir seperti: subject HelloLine welcomeparagraph helpparagraph footerslogan . Dan itu dia.

Ini tidak dapat dikelola karena Anda perlu menerapkan ulang layanan email untuk setiap perubahan copywriting. Juga di beberapa perusahaan, konten email bukan tanggung jawab pengembang tetapi pemasaran / copywriter. Anda perlu menerapkan ulang UI lain untuk mengizinkan pengeditan itu, tetapi kami membayar Sendgrid bahkan untuk itu.

Dalam satu proyek, kami menggunakan CMS tanpa kepala untuk mengedit dan membuat templat email untuk setiap bahasa. Server membaca template kumis ini saat runtime dan membuat badan email untuk dikirim ke Sendgrid. Pengeditan template Sendgrid UX sama sekali tidak berguna, jadi kami memutuskan untuk menggunakan ini.

@cecchisandrone Saya setuju sendgrid bisa lebih baik. Mereka perlu menambahkan manajemen bahasa yang tepat dan menjadikannya sebagai parameter. Tetapi seperti yang saya katakan, beberapa variabel yang kami kirimkan kepada mereka tetap perlu dilokalkan, seperti format tanggal / waktu misalnya.

Seperti yang dinyatakan oleh @ corneliu-gavrilovici
Bahkan sekarang berharga. Dalam pembaruan baru-baru ini, panjang subjek menjadi lebih pendek. Kami hanya menggunakan 2 bahasa untuk saat ini dan kami melakukannya dengan cara di bawah ini di bidang subjek:

{{#if english}}
Hello blah blah...
{{else if french}}
Hello blah blah...
{{/if}}

Saya tidak mengerti mengapa ini diperbarui, produk yang dapat digunakan untuk kami, tidak dapat digunakan lagi karena masalah ini. Anda berbicara dalam dokumentasi Anda tentang cara menangani template berbagai bahasa tetapi tidak dapat digunakan dengan benar. @ ben-grid
https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#multiple -languages

IMO, Tampaknya solusi yang lebih bisa diterapkan adalah menghasilkan semua sisi server teks, lalu masukkan saja ke dalam template sebagai paragraf yang dipotong.
...
Paragraf / teks yang diperlukan kemudian dapat ditarik dari file tersebut bergantung pada bahasa pengguna, lalu diteruskan sebagai variabel template ke sendgrid. Sendgrid hanya akan menjadi template menyeluruh (seperti, footer dll - hanya gaya dan gambar) dan bahkan beberapa gaya harus disimpan dalam file bahasa itu sendiri - seperti kata yang harus dicetak tebal dll.

Jadi template akan berakhir seperti: subject HelloLine welcomeparagraph helpparagraph footerslogan . Dan itu dia.
Saya telah melakukan ini di SalesForce menggunakan JS sisi Server. Objek json ada di template tetapi berjalan di server selama kompilasi. Ini mirip dengan memiliki fitur pelokalan yang sebenarnya dan tidak bergantung pada publikasi pengembangan yang Anda miliki di lingkungan ecomm.
Saya tidak sabar untuk melihat apa yang tim SG telah lakukan seperti yang disebutkan @ ben-grid.

+1 fitur pelokalan. Jika kita memiliki beberapa bahasa, itu akan menjadi kacau dengan beberapa jika / yang lain.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat