Sendgrid-nodejs: ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ์„ค์ •๋œ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ

์— ๋งŒ๋“  2019๋…„ 07์›” 10์ผ  ยท  39์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sendgrid/sendgrid-nodejs

๋ฌธ์ œ ์š”์•ฝ

์ƒˆ ๋งˆ์ผ€ํŒ… ์บ ํŽ˜์ธ PUT์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋กœ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ
/๋งˆ์ผ€ํŒ…/์—ฐ๋ฝ์ฒ˜ API

๋ฒˆ์‹ ๋‹จ๊ณ„

  1. ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ ํŽ˜์ด๋กœ๋“œ๋ฅผ PUT /marketing/contacts๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
{
  contacts: [
   {
    email: '[email protected]',
    custom_fields: {
      purchaseTime: -1,
      activations: 0,
      partner: 'none',
      userCreationTime: 1544997675,
      lastSigningTime: 1544997675,
      emailVerified: 1,
      disabled: 0,
      displayName: 'Rv',
      photoURL: 'https://lh6.googleusercontent.com/-,
      uid: 'uid'
    }
  }
  ]
}

๊ด€์ฐฐํ•˜๋‹ค
invalid custom field ids supplied - partner,emailVerified,photoURL,uid,purchaseTime,activations,userCreationTime,lastSigningTime,disabled,displayName

๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ:

  • sendgrid-nodejs ๋ฒ„์ „: 6.4.0
  • Node.js ๋ฒ„์ „ v12.1.0

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ˜„์žฌ API๊ฐ€ ์ด๋ฆ„์ด ์•„๋‹Œ field_id๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://mc.sendgrid.com/custom-fields ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ SendGrid ๋‚ด๋ถ€์˜ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๊ฒ€์‚ฌํ•˜๋ฉด field_ids์™€ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” /field_definitions์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SendGrid๋Š” ์ด id ๊ฐ’์„ ํ”„๋ŸฐํŠธ ์—”๋“œ์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์˜ ์ด๋ฆ„์„ ์ˆ˜๋ฝํ•˜๋„๋ก API๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  39 ๋Œ“๊ธ€

+1

๋‚˜๋Š” ์˜ค๋Š˜ ๊ฐ™์€ ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๋‹ค. ์ฑ„ํŒ… ์ง€์›(์ด ๋ฌธ์ œ ์ฐธ์กฐ)์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์‘๋‹ต:

"๊ทธ๋ž˜, ์ตœ๊ทผ์— ์ด๋Ÿฐ ์ผ์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ์–ด. ๋„ˆ๋งŒ ๊ทธ๋Ÿฐ ๊ฒŒ ์•„๋‹ˆ์•ผ. ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์–ด. ์šฐ๋ฆฌ์˜ ์„ ์ž„ ์—”์ง€๋‹ˆ์–ด๋“ค์ด ์ด ๋ฌธ์ œ๋ฅผ ์•Œ๊ฒŒ ๋์–ด."

Screenshot 2019-07-12 at 15 54 56

๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ณต์‹ API ์›น ์‚ฌ์ดํŠธ์—์„œ ์–ป์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณต์‹ API์—์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. cURL ์ฝ”๋“œ ์ƒ์„ฑ ์Šค๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ API๊ฐ€ ์ด๋ฆ„์ด ์•„๋‹Œ field_id๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://mc.sendgrid.com/custom-fields ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ SendGrid ๋‚ด๋ถ€์˜ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๊ฒ€์‚ฌํ•˜๋ฉด field_ids์™€ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” /field_definitions์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SendGrid๋Š” ์ด id ๊ฐ’์„ ํ”„๋ŸฐํŠธ ์—”๋“œ์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ์˜ ์ด๋ฆ„์„ ์ˆ˜๋ฝํ•˜๋„๋ก API๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์˜ณ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์˜ ์ง€์›์ด ๋ˆ„๊ตฌ์—๊ฒŒ๋‚˜ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ์•ˆํƒ€๊น์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  id๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด api๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
์ƒˆ ํ•„๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ์—”๋“œํฌ์ธํŠธ๊ฐ€ id๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”์ง€ ์•„๋‹ˆ๋ฉด GETํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๊นŒ?

@AAverin GUI์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ๋งŒ๋“  ์ดํ›„๋กœ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. API ์ฐธ์กฐ๋Š” PUT/PATCH ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ๊ฐœ์ฒด์˜ ID๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ง€์›ํŒ€์—์„œ๋Š” ์ถ”๊ฐ€ custom_fields ๊ฐœ์ฒด ์—†์ด ํŽ˜์ด๋กœ๋“œ์— ์ง์ ‘ ์ „๋‹ฌํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.
์ž‘๋™ํ–ˆ์ง€๋งŒ ํ•„๋“œ ๊ฐ’์ด ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์–ด์จŒ๋“  ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋Š” ์„ธ๊ทธ๋จผํŠธ์—๋งŒ ํ•„์š”ํ•˜๋ฉฐ New Marketing์—๋Š” ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์™„์ „ํžˆ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋ฌธ์ œ๋ฅผ ๋‹ซ์Šต๋‹ˆ๋‹ค.
์˜ฌ๋ฐ”๋ฅธ ํŽ˜์ด๋กœ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  contacts: [
   {
    email: '[email protected]',
    purchaseTime: -1,
      activations: 0,
      partner: 'none',
      userCreationTime: 1544997675,
      lastSigningTime: 1544997675,
      emailVerified: 1,
      disabled: 0,
      displayName: 'Rv',
      photoURL: 'https://lh6.googleusercontent.com/-,
      uid: 'uid'
  }
  ]
}

๊ทธ๋“ค์€ ๋˜ํ•œ API ๋ฌธ์„œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ธฐ๋กœ ์•ฝ์†ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
custom_fields ๋‚ด๋ถ€์— ํ•„๋“œ ์ด๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
custom_fields ๋˜๋Š” ๋‚ด๋ถ€์—์„œ ํ•„๋“œ ID๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์—†์ง€๋งŒ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ ์ด ๋ชจ๋“ˆ์ด ์•„๋‹Œ ์ง์ ‘ curl์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ sendgrid ์ธก์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@์†Œ๋ผ๋ฏธ์Šคํ„ฐ
๋‚ด๊ฐ€ ์ง€์›์—์„œ ์–ป์€ ๋งˆ์ง€๋ง‰ ๋Œ€๋‹ต์€ ์ด์ œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ์— ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ํŠน์ˆ˜ ID๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์œ„์˜ @adanot ๋‹ต๋ณ€์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ๋กœ์„œ๋Š” ๋‹ค์†Œ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ๋ณด๋‚ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

@Averin
ํ•„๋“œ ID๋กœ๋„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์—†์ง€๋งŒ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@soramister ๋‚˜๋Š” ๋ˆ„๋ฝ๋œ ์„ธ๊ทธ๋จผํŠธ์™€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ๋Œ€์‹  Mailerlite๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
์–ด์จŒ๋“  ์ง€์›์— ๋”ฐ๋ฅด๋ฉด GET https://api.sendgrid.com/v3/marketing/field_definitions ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ’์„ ์ถ”๊ฐ€/์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ์˜ ID๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•˜์—ฌ PUT https://api.sendgrid.com/v3/marketing/contacts ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€/์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํŽ˜์ด๋กœ๋“œ ์ง€์›์ด ์ œ๊ณตํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. custom_fields ํ•„๋“œ์˜ ํ‚ค๋Š” ํŠน์ˆ˜ ID์ž…๋‹ˆ๋‹ค.

{

"contacts": [
    {
        "email": "[email protected]",
        "address_line_1": "123 main st",
        "custom_fields":
            {
                "e6_T": "5555555555",
                "e5_T": "Acme Group"
            }
    }]
}

๋‚˜๋Š” ํ•„๋“œ ID๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ด ์„ฑ๊ณตํ•˜๋Š” ๋™์•ˆ(์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Œ) ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@์†Œ๋ผ๋ฏธ์Šคํ„ฐ
๋‚˜์—๊ฒŒ๋Š” ๊ดœ์ฐฎ์•„ ๋ณด์ธ๋‹ค.
๋‚ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@soramister ๋Š” Sendgrid๊ฐ€ ๊ทธ๊ฒƒ์„ ๋ณด๊ธฐ๊นŒ์ง€ 1๋ถ„ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ID๋Š” ๋ฌด์—‡์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? @AAverin , ์˜ˆ์ œ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋‚˜๋Š” ํ•„๋“œ ID๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ด ์„ฑ๊ณตํ•˜๋Š” ๋™์•ˆ(์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Œ) ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €์—๊ฒŒ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์‘๋‹ต์—์„œ ์ž‘์—… ID๋ฅผ ์–ป์—ˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ sendgrid์— ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ƒˆ๋กœ์šด ์—ฐ๋ฝ์ฒ˜ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋Š” ํ™•์‹คํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ID๊ฐ€ ์—†์œผ๋ฉด ID์™€ ํ•จ๊ป˜ "์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ID๊ฐ€ ์ œ๊ณต๋จ" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค./์„ฑ๊ณตํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

{ "list_ids": [ "4fb6cca6-06dc-4aa2-b7cb-851a4e3be37e" ], "contacts": [ { "email": "[email protected]", "first_name": "Test", "custom_fields": { "e1_N": "100000", "e2_N": "100000" } } ] }

sendgrid์— ์ƒ์„ฑ๋œ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋ณด๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋ž˜๋„ ๊ฐœ์ฒด๊ฐ€ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

sendgrid์— ์ƒ์„ฑ๋œ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋ณด๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋ž˜๋„ ๊ฐœ์ฒด๊ฐ€ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

์ •๋ง ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์–ด๋””๋กœ ๊ฐ€์•ผํ• ์ง€ ์กฐ๊ธˆ ํ—ค๋งค๋‹ค

@Lucania001 ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! Sendgrid์˜ API๊ฐ€ ์ •๋ง ์ธ์ƒ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๋ถ€์„œ์ง€๊ธฐ ์‰ฝ๊ณ  ๋ถˆํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ํ†ต์ฐฐ๋ ฅ์ด ๊ฑฐ์˜ ์—†๊ณ  ๋์ ๊ณผ ๊ทธ ๋™์ž‘์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๋„ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ ์ด๋ฆ„์ด ์•„๋‹Œ ํ•„๋“œ ID๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์—ฐ๋ฝ์ฒ˜์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณ ๊ฐ์ด ๊ณ ๊ฐˆ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ํ•„๋“œ ์—†์ด ํ•ด๋‹น API์˜ SendGrid์˜ "์‚ฌ์šฉํ•ด ๋ณด๊ธฐ" ์„น์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๋Š” ๊ฒƒ์€ ์ด๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

{
"์˜ค๋ฅ˜": [
{
"๋“ค": "",
"message": "์ž˜๋ชป๋œ JSON"
}
]
}

์‚ฌ์šฉ์ž ์ง€์ • ํ•„๋“œ ์—†์ด ํ•ด๋‹น API์˜ SendGrid์˜ "์‚ฌ์šฉํ•ด ๋ณด๊ธฐ" ์„น์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๋Š” ๊ฒƒ์€ ์ด๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

{
"์˜ค๋ฅ˜": [
{
"๋“ค": "",
"message": "์ž˜๋ชป๋œ JSON"
}
]
}

๋„ค, ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•ด ๋ณด๋ฉด ์ „ํ˜€ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐํŽธ ๋ฐฐ๋‹ฌ๋ถ€๋ฅผ ํ†ตํ•ด ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ๋‹น์‹ ์€ ์•„๋งˆ ์šฐ๋ฆฌ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ ๋ฐฉ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ปฌ ์š”์ฒญ์œผ๋กœ ์‹œ๋„ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

curl --request PUT --url https://api.sendgrid.com/v3/marketing/contacts --header '์Šน์ธ: ๋ฒ ์–ด๋Ÿฌ {{API_KEY}}}' --header "์ฝ˜ํ…์ธ  ์œ ํ˜•: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/json" - -๋ฐ์ดํ„ฐ '{"list_ids":["f85956da-5696-4d8b-826d-84ac6e27cb2f"],"์—ฐ๋ฝ์ฒ˜":[{"address_line_1":null,"๋„์‹œ":null,"๊ตญ๊ฐ€":"์˜๊ตญ","์ด๋ฉ”์ผ ":" [email protected] ","first_name":"ํ…Œ์ŠคํŠธ","last_name":"TEST","postal_code":null,"state_province_region":null,"custom_fields":{"e4_T":"EN" ,"e2_D":null,"e1_T":"์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ","e3_T":" http://google.com/ "}}]}'

custom_fields ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋ฉด ์—ฐ๋ฝ์ฒ˜๊ฐ€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š” ์ž‘์—… ID๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

SendGrid์˜ ๋ˆ„๊ตฌ๋„ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์Šค๋ ˆ๋“œ๋‚˜ github์— ๊ด€์‹ฌ์„ ๊ธฐ์šธ์ด์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์ด ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์›น์‚ฌ์ดํŠธ์—์„œ ์ง€์›์„ ์œ„ํ•ด ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋“ค์€ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
๋‚˜๋ฅผ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์€ SendGrid์—์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๊ณ  ์ด๋ฏธ ๋ชจ๋“  ๊ฒƒ์ด ๊ฑฐ๊ธฐ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€๋งŒ SendGrid์—๋Š” ์—ฌ์ „ํžˆ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด AAverin์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. custom_field์˜ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ID๊ฐ€ ๋‹น์‹ ์ด ๋ถ€์—ฌํ•œ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ , sendgrid๋Š” GET https://api.sendgrid.com/v3/marketing/field_definitions ๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ID๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด AAverin์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. custom_field์˜ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ID๊ฐ€ ๋‹น์‹ ์ด ๋ถ€์—ฌํ•œ ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ , sendgrid๋Š” GET https://api.sendgrid.com/v3/marketing/field_definitions ๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ID๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด ์•„์ด๋””์˜ sendgrid๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ ์šฉ์ด ์•ˆ๋˜๋Š”๋ฐ

๋‹ค์Œ์€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปฌ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

curl -X PUT https://api.sendgrid.com/v3/marketing/contacts -H "์ฝ˜ํ…์ธ  ์œ ํ˜•: application/json" -H '๊ถŒํ•œ: Bearer API_KEY' --data '{ "์—ฐ๋ฝ์ฒ˜": [{ " ์ด๋ฉ”์ผ": " [email protected] ", "custom_fields": {"e2_N":1 }},{ "email": " [email protected] ", "first_name": "Joe", "last_name": " ๋”๋Ÿฌ์šด", "custom_fields": {"e2_N":2 } }] }'

@soramister ๋‹น์‹ ์˜ ์ปฌ ์š”์ฒญ์„ ๊ฐ€์ง€๊ณ  ๋†€์•˜์Šต๋‹ˆ๋‹ค. custom_fields์— ๋Œ€ํ•ด null ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. null ํ•ญ๋ชฉ์€ reserved_fields์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ custom_fields์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. null ๊ฐ’์ด ํฌํ•จ๋œ ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ์š”์ฒญ์„ ๋™์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

@adanot ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €์—๊ฒŒ

์ƒˆ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋Š” ๋ฌธ์„œ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Btw, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @adanot ๋ฐ @AAverin

๋˜ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋‚ ์งœ ํ•„๋“œ์˜ ํ˜•์‹๋„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Marketing API์—์„œ๋Š” "10/12/2019" ์˜€๊ณ  ์ด์ œ๋Š” ISO 8601 Zulu ์‹œ๊ฐ„์ธ "2019-10-12T23:14:20Z" ์ž…๋‹ˆ๋‹ค.

๊ทธ๋“ค์˜ UI๋Š” ์—ฌ์ „ํžˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ด์ „ ๋‚ ์งœ ํ˜•์‹์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ข‹์€ ์ ์€ ์‚ฌ์šฉ์ž ์ง€์ • ๋‚ ์งœ ํ•„๋“œ์˜ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „์— ๋‚ ์งœ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์ด ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ API๋Š” job_id ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์—ฐ๋ฝ์ฒ˜๋Š” ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ๋ฌธ์ œ๋Š” ๋ถ€์šธ ๊ฐ’์„ 'ํ…์ŠคํŠธ' ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ์— ๋ณด๋‚ด๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ํ•ด๋‹น ๋ถ€์šธ์„ ๋ฌธ์ž์—ด๋กœ ๋ณด๋‚ด๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Marketing API์™€ custom_fields๋Š” ์ •๋ง ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋Š” ์ƒˆ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๋งˆ์ผ€ํŒ… ๋ชฉ๋ก์— ๋„ฃ์„ ๋•Œ custom_field ID๋ฅผ ๋ณด๋‚ด๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ "์ž˜๋ชป๋œ custom_field ID" ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฌธ์„œ์˜ ์–ด๋””์—๋„ ์ด์ƒํ•œ "e1_T"์Šคํƒ€์ผ์˜ custom_field ID๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€?

ํ•˜์ง€๋งŒ... PUT ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  custom_fields ๋์ ์—์„œ GET ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐ˜ํ™˜๋˜๋Š” ID ๋Œ€์‹  "e1_T" ์Šคํƒ€์ผ์˜ custom_field ID๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ ์—ฐ๋ฝ์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ดํ•ด๊ฐ€ ์•ˆ๊ฐ€๋„ค์š”.

๊ทธ๊ฒƒ์€ ๊นจ์ง€๊ธฐ ์‰ฝ๊ณ  ์ข…์ข… ์ง๊ด€์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Sendgrid ๋ฌธ์„œ๋Š” "์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋ฐ˜ํ™˜๋œ id ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜ํ™˜๋œ id ๊ฐ’์ด ์ด์ƒํ•œ "e1_T" ์Šคํƒ€์ผ์ด์—ˆ๊ณ , ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๊ณ ํ†ต์ž…๋‹ˆ๋‹ค. ์™œ ํ•„๋“œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋‹ต์„ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์•„๋ž˜ ํŽ˜์ด๋กœ๋“œ ์˜ˆ์‹œ:
contacts: [ { email: "
[email protected]", first_name: "test", last_name: "test", custom_fields: { e7_T: "TRUE" } } ]
๋”ฐ๋ผ์„œ custom_fields๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ key๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ID์ž…๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” e7_T ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๋‚˜์œ API ๋””์ž์ธ, imo

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰