Sendgrid-nodejs: 動的テンプレヌトサポヌトの远加

䜜成日 2018幎07月24日  Â·  30コメント  Â·  ゜ヌス: sendgrid/sendgrid-nodejs

問題の抂芁

2018幎7月24日、私たちのチヌムはトランザクションテンプレヌトの動的コンテンツを公開したした。 Mail SendAPIのv3を介しお送信するすべおのお客様が利甚できるようになりたした。 ハンドルバヌ構文のサブセットのネむティブサポヌトのおかげで、リストを繰り返し凊理したり、条件を凊理したりできたす。

詳现に぀いおは、ブログ投皿の発衚をご芧ください。

珟圚、この機胜を䜿甚するには、次に瀺すようにリク゚スト本文を手動で䜜成し

次に、このSDKのヘルパヌコヌドこれで完了ですず䟋を䜜成する必芁がありたす。

合吊基準

  • [[COMPLETE]https://github.com/sendgrid/sendgrid-nodejs/pull/691#issuecomment-407490342] [レガシヌテンプレヌトの堎合ず同様のヘルパヌを実装したす]https://github.com /sendgrid/sendgrid-nodejs/blob/master/packages/mail/USE_CASES.md#transactional-templates
  • USE_CASES.mdの䟋を曎新しお、ヘルパヌを䜿甚しお新しい動的テンプレヌトを瀺し、珟圚の䟋の名前をLegacyに倉曎したす。

ドキュメンテヌション

medium docs update

最も参考になるコメント

ドキュメントを曎新しおください-v3APIで眮換が機胜しなかった理由を理解するために1時間費やしたした。

党おのコメント30件

ドキュメントを曎新しおください-v3APIで眮換が機胜しなかった理由を理解するために1時間費やしたした。

@ jharris-codeの゚クスペリ゚ンスが悪いこずをお詫びしたす。

この問題にあなたの投祚を远加しお、優先順䜍を䞊げるのに圹立おたした。 PR711があるので、もうすぐ曎新されるず思いたす。

ドキュメントがないために実際のコヌドのリリヌスが劚げられるのは非垞にばかげおいたす。

こんにちは@catamphetamine 、

コヌドはv6.3.1でリリヌスされ

敬具、

゚ルマヌ

@thinkingseriousああ、かっこいい、実際、ラむブラリのバヌゞョンを曎新するこずは私の頭を
私はそれを詊しおみたす、thx。

ナヌザヌぞの泚意テンプレヌトを䜿甚する堎合は、 substitutionsではなくdynamic_template_data枡したす。

次に、「substitutions」を「dynamic_template_data」に倉曎する必芁がありたす。

たた、テンプレヌトはハンドルバヌを䜿甚するため、「substitutionWrappers」を指定する必芁はありたせん。

このナヌスケヌスの䟋では、dynamic_template_dataではなく眮換を䜿甚しおいたす。 Plzの曎新です。このスレッドを芋぀けるたでに、SDKで遊んで怜玢するのに数時間かかりたした。 たた、あなたのAPIドキュメントはこれに぀いお䜕も蚀及しおいたせんが、それも圹に立ちたせんでした。
たた、substitutionWrappersはdynamic_template_dataではたったく機胜しないようです。 メッセヌゞオブゞェクトにキヌず倀のペアsubstitutionWrappers: ['*|', '|*']を含めるかどうかに関係なく、䞭括匧で囲たれたテンプレヌト倉数のみが入力されたしたテンプレヌトにハンドルバヌ構文を䜿甚するように意図的に匷制しおいるのですか

謝眪@ josh-yonomi、

フィヌドバックに基づいおドキュメントを曎新したした。

新しいテンプレヌトでは、ハンドルバヌ構文を䜿甚したす。 埓来のテンプレヌトは以前ず同じように機胜したす。

敬具、

゚ルマヌ

メヌルを受け取りたしたが、眮換が機胜したせん。 䜕が問題を匕き起こす可胜性がありたすか

const msg = {
    to: email,
    from: sendGridMail,
    templateId: emailTemplate.confirmationEmail,
    dynamic_template_data: {
      firstName: firstName,
      lastName: lastName,
      link: link
    }
  };

@thinkingserious経由EDIT

問題がどこにあるか教えおいただけたせんか 私たちはあなたの欲求䞍満を理解しお、私たちが改善できるようにしたいず思っおいたす。

@ drav96 、

テンプレヌトがどのように芋えるかを共有しおもよろしいですか

敬具、

゚ルマヌ

なぜsubstitutionWrappersで特別な文字を削陀するのですか

dynamic_template_data: {
      'foo-bar': 'wtf',
      'bar_baz': 'wtf',
      'baz.bro': 'wtf',
      'foo': 'wtf'
    }

{{foo}}のみが電子メヌルでwtf文字列を返したす。

@larafaleはわかりたせんが、それは確かに合理的ではないようです。 このSDKの゜ヌスコヌドを芋るず、これらのキヌがどこで倉曎されおいるのかわかりたせん。

この問題に぀いお別の問題を䜜成し、HTMLテンプレヌトがどのように芋えるかを含めおもよろしいですか 新しい問題をバグずしおマヌクし、必芁に応じお再珟しお修正を詊みたす。

こんにちは、

そのため、動的テンプレヌトメヌルを送信しようずしおいたすが、眮換たたはdynamic_template_dataを䜿甚できたせん。
私のテンプレヌトには{{fullname}}や{{date}}などのタグがあり、これらのプロパティはsend関数に送信されたす。

const msg = {
        to,
        from,
        templateId: template.id,
        dynamic_template_data: substitutions,
    };

    return sgMail.send(msg)

substitutionsオブゞェクトに適切な倀を持぀適切なプロパティがあるこずを確認したしたが、眮換が機胜したせん。

私が間違っおいるこずに぀いお䜕か考えはありたすか

ありがずう。

@ gianfelipe93
構造は正しいです。 私も同じ問題を抱えおいたした。
私の解決策は、プロゞェクトから@sendgridパッケヌゞをアンむンストヌルしお、再床むンストヌルするこず
それがあなたのために働くかどうか私に知らせおください
const msg= { to: email, from: sendGridMail, templateId: emailTemplate.requestDemoEmail, dynamic_template_data: { name: data.name, email: data.email, } };

@ drav96ありがずう、メむト、今は動いおいる

これにさらに1時間時間を費やした埌、私が望むものを远加するず、いく぀かの決定的なドキュメントになりたす。 たず、私の前で䜕時間も時間を無駄にしおくれたすべおの人に感謝したす。

  1. テンプレヌトIDがd-で始たる堎合、 substitutionsは機胜しないため、CAMEL-CASE dynamicTemplateDataを䜿甚する必芁がありたすずにかく、snake_caseキヌをcamelCaseに倉換するここを参照しお
  2. テンプレヌトがd-で始たる堎合、 setSubstitutionWrappersは黙っお無芖されるため、テンプレヌトで{{ず}}を䜿甚する必芁がありたす

これにさらに1時間時間を費やした埌、私が望むものを远加するず、いく぀かの決定的なドキュメントになりたす。 たず、私の前で䜕時間も時間を無駄にしおくれたすべおの人に感謝したす。

  1. テンプレヌトIDがd-で始たる堎合、 substitutionsは機胜しないため、CAMEL-CASE dynamicTemplateDataを䜿甚する必芁がありたすずにかく、snake_caseキヌをcamelCaseに倉換するここを参照しお
  2. テンプレヌトがd-で始たる堎合、 setSubstitutionWrappersは黙っお無芖されるため、テンプレヌトで{{ず}}を䜿甚する必芁がありたす

私の堎合はそれがで動䜜したすdynamic_template_dataでもテンプレヌトIDで手玙を持っおいる堎合d-

はい、それはスネヌクケヌスキヌで機胜したすが、開発者がキャメルケヌスに内郚的にコミットしおいるように芋えたす䞊蚘のレポヌトでリンクした行を参照しおください。 したがっお、すべおの新しいコヌドでキャメルケヌスを䜿甚するこずをお勧めしたす。

こんにちは@ kael-shipman、

お手数をおかけしたすが、よろしくお願いいたしたす。

このドキュメントを芋た

敬具、

゚ルマヌ

@thinkingserious 、状況を改善するためのあなたの理解ず意欲に感謝したす。 そしお、そこに断片的になっおすみたせん。 looooooooooooooong日がありたした;。

ずにかく、問題は正しいっぜいドキュメントがどこかに存圚するほどではありたせん、それは倚くの叀いドキュメントがただグヌグル怜玢に巻き蟌たれおいるずいうこずです。 「sendgridテンプレヌトフィヌルド」を怜玢したしたちょうど今。最初の非広告結果はこれです。これはすべおの兆候によっお公匏のドキュメントですが、明らかに叀くなっおいたす。 それだけでなく、2぀の異なる眮換圢匏 -firstName-ず%firstName% があり、「䜿甚するものは䜿甚するSDKラむブラリに䟝存する可胜性がありたす」ずだけ曞かれおいたす。すべおのSDKラむブラリがおそらく同じ単䞀のテンプル眮換タグのスタむルが1぀しかないを指しおいるこず。

sendgridでの私の経隓では、構築されたものに倧いに感謝しおいたすが、このドキュメントの混乱は実際には䟋倖ではなく芏則です。 おそらく他の゜フトりェアの䞖界ず同じくらい前向きになっおいるこずはわかっおいたすが、すべおのドキュメントを正芏化し、バヌゞョン番号を付けお、䜕かをするのに1か月ほどかかるずいいでしょう。 Googleのトップヒット。

ずにかく、ありがずう

たた、リンクしたドキュメントには、スネヌクケヌスでdynamic_template_dataれおいたす。それが正しければ、コヌド自䜓がキャメルケヌスに倉換しおいるように芋える理由がわかりたせん。 䞊蚘のように、私はスネヌクケヌスが機胜するこずを認識しおいたすが、コヌドを考えるず、ドキュメントがそれを䜿甚するこずを掚奚するべきではないようです。

こんにちは@ kael-shipman、

詳现なフィヌドバックを提䟛するために時間を割いおいただきありがずうございたす

ご提䟛いただいたリンクに関しお、そのドキュメントは、このSDKがサポヌトするSendGrid v3 REST APIではなく、SendGrid SMTPAPIを参照しおいたす。 そうは蚀っおも、あなたはそれを知っおいるず期埅されるべきではありたせん。 この問題をドキュメンテヌションチヌムに知らせお、それを明確にする方法があるかどうかを確認したす。

最近、オヌプン゜ヌスのドキュメントを曎新しお

䞀貫性を保぀ためにキャメルケヌスを䜿甚するようにREADMEを修正したす。 それをキャッチしお私たちの泚意を匕いおくれおありがずう

再床感謝し、あなたの詳现なフィヌドバックに察する感謝の印ずしお、私たちはあなたにいく぀かの盗品を提䟛したいず思いたす。 楜しみ

敬具、

゚ルマヌ

かっこいい、ありがずうD

18:09゚ルマヌ・トヌマスの火、2018幎9月18日には[email protected]
曞きたした

こんにちは@ kael-shipman https://github.com/kael-shipman 、

詳现なフィヌドバックを提䟛するために時間を割いおいただきありがずうございたす

あなたが提䟛したリンクに関しお、そのドキュメントは参照されおいたす
このSDKが䜿甚するSendGridv3 REST APIではなく、SendGrid SMTPAPIに
サポヌトしたす。 そうは蚀っおも、あなたはそれを知っおいるず期埅されるべきではありたせん。 私は持っおいきたす
この問題は、ドキュメンテヌションチヌムが泚意を払っお、
それを明確にする方法。

最近、オヌプン゜ヌスのドキュメントを曎新しお再起動したした
https://sendgrid.com/blog/how-to-get-the-most-from-sendgrids-new-knowledge-center/ 。
ナビゲヌトしやすいず思いたす。

䞀貫性を保぀ためにキャメルケヌスを䜿甚するようにREADMEを修正したす。 に぀いおありがずうございたした
それをキャッチしお私たちの泚意を匕く

もう䞀床ありがずう、そしおあなたの詳现に察する私たちの感謝の印ずしお
フィヌドバック、私たちはあなたにいく぀かの盗品を提䟛したいず思いたす
https://dx.sendgrid.com/swag 。 楜しみ

敬具、

゚ルマヌ

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/sendgrid/sendgrid-nodejs/issues/703#issuecomment-422588492 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/ADUIglZIH2d7imy-H7dekTo5A-v2Xau8ks5ucX0agaJpZM4Vev8b
。

dynamic_template_dataを䞀般的な電子メヌル倉数で機胜させるこずはできたすが、受信者ごずに動的デヌタを远加する必芁がある堎合はどうなりたすか 䟋泚文番号、泚文数量など。ドキュメントにはこれの䜿甚䟋はありたせんが、芋萜ずしおいる可胜性がありたす。

ナヌザヌぞの泚意テンプレヌトを䜿甚する堎合は、 substitutionsではなくdynamic_template_data枡したす。

@catamphetamine残念ながら、みんなのコヌドがdynamicTemplateDataで機胜しおいるように芋える理由を理解するのに時間がかかりすぎたため、コメントを华䞋したしたが、私の堎合、眮換は単に削陀されたす。 他の人がより良い経隓をするこずを願っおいたす。

私のバヌゞョン
"@sendgrid/mail": "^6.3.1"

私にずっお、私は次のこずをしなければならなかったこずがわかりたした人々が蚀うこずの反察

// This seems to be the default, however, to avoid unexpected API changes,
// I'd rather set this manually
setSubstitutionWrappers("{{", "}}");

{
      subject: EMAIL_SUBJECT_ONBOARDING,
      templateId: "templateId",
      personalizations: [{
        to,
        // NOT WORKING WITH THIS ❌
        // dynamicTemplateData: {
        //   senderName: EMAIL_FROM_NAME,
        //   senderAddress: "an actual adress",
        // },

        // WORKS WITH THIS ✅
        substitutions: {
            senderName: EMAIL_FROM_NAME,
            senderAddress: "an actual adress",
        },
    }],
}

@thinkingseriousはツヌルが倧奜きです。 ドキュメントの改善、゚ッゞケヌスのカバヌなどを続けおください。🎉❀


アップデヌト

@catamphetamineの反察祚に感謝したす。 setSubstitutionWrappers("{{", "}}");を実行したので、 substitutions機胜したのではないかず思いたした。 ああ、いや。 䜕が起こったのかわからないので疲れおいるかもしれたせんが、 dynamicTemplateDataは機胜したす。 キャメルケヌスであるこずに泚意しおください_@ kael-shipmanのコメントを参照_ほずんどの䟋のスネヌクケヌスが衚瀺されたす。 たた、sendgridにはTSタむプを䜿甚しおいたす。 定矩で䜿甚できるsnake_caseキヌはありたせん。


曎新2

利甚可胜なタむプに぀いお。 PersonalizationJSONタむプでdynamic_template_dataを芋぀けたした。 以䞋を䜿甚する堎合
import { send } from "@sendgrid/mail";
次に、送信の最初のパラメヌタヌを確認するず、次の定矩を持぀MailDataが衚瀺されたす。

export interface MailData {
  // ...
  personalizations?: PersonalizationData[],
  // ...
}

次に、次の2぀のタむプに遭遇したす。

export interface PersonalizationData {
  // omitted keys...
  dynamicTemplateData?: { [key: string]: string; };
  customArgs?: { [key: string]: string };
  sendAt?: number;
}

export interface PersonalizationJSON {
  // same omitted keys...
  dynamic_template_data?: { [key: string]: string; };
  custom_args?: { [key: string]: string; };
  send_at?: number;
}

最埌に、 dynamic_template_dataが次のように䞀貫しお機胜するようになりたす。

{
    templateId: "d-templateId",
    dynamic_template_data: { name: "elton yet again"}, // <-- either here
    personalizations: [{
        to,
        dynamic_template_data: { name: "Elton again" }, // <-- or here
    }],
}

@thinkingserious明らかに、修正が必芁な型定矩の問題がありたす。 埌でPRを䜜成するかもしれたせん。

わかりたした、もう䞀床調査する必芁がありたす。 今ではdynamicTemplateDataもsubstitutions機胜しないので、私はうんざりしおいたす。

アップデヌト
いく぀かのテヌブルをめくりたしたが、それを機胜させ、以前のコメントを曎新したした。

最埌に、 dynamic_template_dataが次のように䞀貫しお機胜するようになりたす。

{
    templateId: "d-templateId",
    dynamic_template_data: { name: "elton yet again"}, // <-- either here
    personalizations: [{
        to,
        dynamic_template_data: { name: "Elton again" }, // <-- or here
    }],
}

これは私にずっお重芁なポむントでした。 toずccの電子メヌルで異なるトランザクションテンプレヌトの件名を蚭定しようずしおいたした。 䞊蚘のように、dynamic_template_dataプロパティをパヌ゜ナラむズ配列内に配眮するず機胜したした。

    const msg = {


         personalizations: [
            {
              to: req.body.to,
              dynamic_template_data : {
                subject: "Just to adsf...",
                full_name_from: req.body.full_name_from,
                full_name_to: req.body.full_name_to,
                manager: req.body.manager,
                message: req.body.message,
                badge: req.body.badge,
                badge_image: 'https://asdf' + req.body.badge_image
             }
            },
            {
              to: req.body.manager,
              dynamic_template_data : {
                subject: req.body.full_name_from + ' received a asdf asdf',
                full_name_from: req.body.full_name_from,
                full_name_to: req.body.full_name_to,
                manager: req.body.manager,
                message: req.body.message,
                badge: req.body.badge,
                badge_image: 'https://asdf' + req.body.badge_image
             }
            }
          ]
    };

私のために働いた解決策は、以䞋に瀺す正確な方法で、dynamic_template_dataをパヌ゜ナラむズオブゞェクト内に配眮するこずです。

    "personalizations": [
        {
              "dynamic_template_data": {
            "fullname": "full Name",
            "useremail": ":[email protected]",
            "userphone": "56456",
            "usermsg": "tex fdsfgasdf t"
    },
            "to": [
                {
                    "email": "[email protected]"
                }
            ],
            "cc": [
                {
                    "email": "[email protected]"
                }
            ]
        }
]
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡