Sendgrid-nodejs: Tidak dapat membuat kontak dengan kumpulan bidang khusus

Dibuat pada 10 Jul 2019  ·  39Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Tidak dapat membuat kontak dengan bidang khusus yang disetel menggunakan Kampanye Pemasaran Baru PUT
/pemasaran/kontak API

Langkah-langkah untuk Reproduksi

  1. Setelah bidang khusus dibuat, kirim muatan berikut ke 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'
    }
  }
  ]
}

Mengamati
invalid custom field ids supplied - partner,emailVerified,photoURL,uid,purchaseTime,activations,userCreationTime,lastSigningTime,disabled,displayName

Detail teknis:

  • sendgrid-nodejs Versi: 6.4.0
  • Versi Node.js v12.1.0

Komentar yang paling membantu

Sepertinya API saat ini mengharapkan field_id dan bukan namanya.

Jika Anda memeriksa lalu lintas jaringan di dalam SendGrid saat memuat halaman https://mc.sendgrid.com/custom-fields, Anda dapat melihat respons untuk /field_definitions yang mengembalikan field_ids serta namanya.

SendGrid perlu menampilkan nilai id ini di ujung depan atau memperbarui API untuk menerima nama dalam permintaan.

Semua 39 komentar

+1

Saya mengalami masalah yang sama hari ini. Saya membahasnya dengan dukungan obrolan (merujuk masalah ini). Tanggapan mereka:

"Oke, jadi ini telah terjadi baru-baru ini. Anda bukan satu-satunya. Sayangnya kami tidak memiliki solusi untuk ini sekarang. Teknisi senior kami telah diberitahu tentang masalah ini."

Screenshot 2019-07-12 at 15 54 56

Itulah yang saya dapatkan di situs web API resmi

Saya memiliki masalah yang sama pada API resmi. Jika Anda mengambil cuplikan pembuatan kode cURL, itu akan berfungsi.

Sepertinya API saat ini mengharapkan field_id dan bukan namanya.

Jika Anda memeriksa lalu lintas jaringan di dalam SendGrid saat memuat halaman https://mc.sendgrid.com/custom-fields, Anda dapat melihat respons untuk /field_definitions yang mengembalikan field_ids serta namanya.

SendGrid perlu menampilkan nilai id ini di ujung depan atau memperbarui API untuk menerima nama dalam permintaan.

Kamu mungkin benar. Sedih karena dukungan mereka bisa membantu siapa saja. Dan, tentu saja, menggunakan id membuat api jauh lebih sulit digunakan.
Apakah Anda memperhatikan jika titik akhir bidang khusus mengembalikan id saat Anda membuat bidang baru, atau Anda perlu MENDAPATKANnya?

@AAverin Tidak terlalu yakin karena saya membuat bidang khusus di GUI. Referensi API mengatakan itu mengembalikan id dalam objek respons untuk permintaan PUT/PATCH.

Dukungan memberi tahu saya bahwa mungkin untuk menggunakan nama bidang khusus dengan meneruskannya langsung di payload, tanpa objek custom_fields tambahan.
Itu berhasil, tetapi nilai untuk bidang tidak disetel.
Bagaimanapun, bidang khusus hanya diperlukan untuk segmen dan tidak ada segmen di Pemasaran Baru. Jadi mungkin lewati saja bidang khusus sepenuhnya?

Jadi hanya untuk menutup masalah.
Payload yang benar adalah:

{
  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'
  }
  ]
}

Mereka juga berjanji untuk menguji dan memperbarui dokumentasi API

Ada pembaruan tentang ini?
Saya memiliki kesalahan yang sama ketika saya memiliki nama bidang di dalam custom_fields.
Saya tidak memiliki kesalahan ketika saya menggunakan id bidang di dalam custom_fields atau di dalam TETAPI kontak tidak disimpan.

Saya juga menggunakan curl secara langsung, bukan modul ini, jadi saya pikir masalahnya ada di sisi sendgrid.

@soramister
Jawaban terakhir yang saya dapatkan dari dukungan adalah bahwa sekarang kita seharusnya menggunakan id khusus saat menyetel nilai ke bidang khusus.
Lihat jawaban @adanot di atas.

Namun, bidang khusus agak tidak berguna saat ini karena tidak mungkin untuk membuat segmen khusus. Jadi ya, Anda dapat mengirim bidang khusus tetapi Anda tidak dapat benar-benar menggunakannya untuk apa pun.

@AAverin
Saya sudah mencoba dengan ID bidang juga. Tidak ada pesan error TAPI kontak tidak save.

@soramister Saya belum mencoba sendiri, karena karena Segmen yang hilang dan beberapa fitur, saya mempertimbangkan untuk beralih ke Mailerlite.
Bagaimanapun, menurut dukungan, Anda harus bisa mendapatkan bidang khusus yang Anda buat menggunakan panggilan GET https://api.sendgrid.com/v3/marketing/field_definitions .

Kemudian Anda perlu mengambil ID untuk bidang khusus yang Anda minati untuk menambahkan/memperbarui nilainya, dan menggunakannya dalam panggilan Anda untuk menambah/memperbarui kontak dengan: PUT https://api.sendgrid.com/v3/marketing/contacts

Berikut adalah contoh dukungan payload yang diberikan kepada saya. kunci untuk bidang custom_fields adalah id khusus itu.

{

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

Saya sudah mencoba dengan id bidang. Saat perintah berhasil (tidak ada kesalahan yang dikembalikan), kontak tidak ditambahkan.

@soramister
Terlihat baik-baik saja untuk saya.
Berhasil melewati data bidang khusus untuk semua pengguna saya

@soramister dibutuhkan Sendgrid sekitar satu menit sebelum Anda akan melihatnya.

apa yang harus menjadi id bidang khusus untuk membuatnya berfungsi ?? @AAverin , tolong jelaskan contoh payload Anda.

Saya sudah mencoba dengan id bidang. Saat perintah berhasil (tidak ada kesalahan yang dikembalikan), kontak tidak ditambahkan.

Sama untuk ku. Saya mendapatkan ID pekerjaan dalam tanggapan tetapi sepertinya datanya tidak ada di sendgrid

Jadi bagi saya bidang khusus menggunakan API kontak baru pasti tidak berfungsi. Saya sudah mencoba menggunakan ID bidang khusus dan tanpa. Tanpa ID itu kesalahan "id bidang khusus tidak valid disediakan" dengan ID berfungsi/saya berhasil tetapi tidak memperbarui data

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

Mungkin perlu beberapa saat untuk melihat kontak yang dibuat di sendgrid, apakah kontak sudah dibuat?
Objek Anda terlihat bagus.

Mungkin perlu beberapa saat untuk melihat kontak yang dibuat di sendgrid, apakah kontak sudah dibuat?
Objek Anda terlihat bagus.

Sungguh aneh, kontak hanya akan dibuat jika saya tidak menyertakan bidang khusus. Sedikit bingung harus kemana dari sini

@Lucania001 memiliki masalah yang sama! Benar-benar tidak terkesan dengan API Sendgrid. Sangat rapuh dan buram. Begitu sedikit wawasan tentang apa yang terjadi, dan begitu sedikit dokumentasi untuk menjelaskan titik akhir dan perilakunya.

Bahkan dengan id bidang daripada nama bidang, saya tidak dapat memperbarui bidang khusus untuk kontak. Ini perlu ditangani ASAP atau pelanggan akan sia-sia.

Saya bahkan tidak bisa membuat kontak menggunakan bagian "coba" SendGrid dari API mereka tanpa bidang khusus. Yang saya dapatkan hanyalah ini:

{
"kesalahan": [
{
"bidang": "",
"message": "JSON tidak valid"
}
]
}

Saya bahkan tidak bisa membuat kontak menggunakan bagian "coba" SendGrid dari API mereka tanpa bidang khusus. Yang saya dapatkan hanyalah ini:

{
"kesalahan": [
{
"bidang": "",
"message": "JSON tidak valid"
}
]
}

Ya, mencobanya tidak bekerja sama sekali. Coba lewat tukang pos. Anda mungkin akan mengalami masalah yang sama seperti kita semua.

Halo,

Saya telah kembali ke masalah ini untuk melihat apakah sudah diperbaiki. Bukan itu. Masalahnya masih ada.

Inilah yang saya coba dengan permintaan curl:

curl --request PUT --url https://api.sendgrid.com/v3/marketing/contacts --header 'authorization: Bearer {{API_KEY}}}' --header "Content-Type: application/json" - -data '{"list_ids":["f85956da-5696-4d8b-826d-84ac6e27cb2f"],"contacts":[{"address_line_1":null,"city":null,"country":"UK","email ":" [email protected] ","first_name":"Test","last_name":"TEST","postal_code":null,"state_province_region":null,"custom_fields":{"e4_T":"EN" ,"e2_D":null,"e1_T":"bidang khusus","e3_T":" http://google.com/ "}}]}'

Ketika saya menghapus nilai custom_fields, itu berfungsi. Kontak dibuat. Jika saya menambahkan kembali, kontak tidak ditambahkan.
Kedua kasus mengembalikan id pekerjaan, tidak ada kesalahan.

Tolong beri tahu saya apa yang harus dilakukan.

Saya tidak berpikir siapa pun dari SendGrid memperhatikan utas ini atau github secara umum.
Satu-satunya hal yang dapat Anda lakukan adalah menulis langsung ke dukungan di situs web, biasanya mereka membantu.
Solusi bagi saya adalah mematikan dari SendGrid ke layanan lain dan saya sudah menjalankan semuanya di sana, sementara SendGrid masih memiliki masalah dalam membuat kontak

Terima kasih AAverin, untuk meringkas: Untuk membuat kontak dengan custom_field, ketahuilah bahwa id bukan nama yang Anda berikan, sendgrid menerapkan id itu sendiri yang dapat Anda ambil melalui GET https://api.sendgrid.com/v3/marketing/field_definitions

Terima kasih AAverin, untuk meringkas: Untuk membuat kontak dengan custom_field, ketahuilah bahwa id bukan nama yang Anda berikan, sendgrid menerapkan id itu sendiri yang dapat Anda ambil melalui GET https://api.sendgrid.com/v3/marketing/field_definitions

Seperti di atas meskipun saya menggunakan ID sendgrid berlaku, tetap tidak berfungsi

Berikut adalah contoh ikal yang berfungsi bagi saya untuk membuat banyak kontak dengan bidang khusus:

curl -X PUT https://api.sendgrid.com/v3/marketing/contacts -H "Content-Type: application/json" -H 'otorisasi: Bearer API_KEY' --data '{ "contacts": [{ " email": " [email protected] ", "custom_fields": {"e2_N":1 }},{ "email": " [email protected] ", "first_name": "Joe", "last_name": " Kotor", "custom_fields": {"e2_N":2 } }] }'

@soramister saya bermain dengan permintaan ikal Anda. Permintaan Anda berfungsi jika Anda tidak menyertakan nilai nol untuk custom_fields. Entri nol tampaknya berfungsi dengan baik untuk bidang_reservasi tetapi tidak bidang_kustom. Membangun permintaan Anda secara dinamis sehingga entri dengan nilai nol tidak disertakan akan memperbaiki masalah Anda.

Terima kasih @adanot , itu berhasil untuk saya. Tangkapan yang bagus!

Data meta pada objek bidang khusus saat membuat kontak baru seharusnya ada di dokumentasi. Btw, terima kasih @adanot dan @AAverin

Mereka juga telah mengubah format untuk bidang tanggal khusus, di API Pemasaran lama "10/12/2019" dan sekarang "2019-10-12T23:14:20Z" yang merupakan Waktu Zulu ISO 8601.

Meskipun UI mereka masih menampilkan format tanggal lama yang masih membingungkan. Hal baiknya adalah jika saya dapat menggunakan waktu bidang tanggal khusus untuk membuat segmen seperti sebelumnya hanya diperbolehkan untuk memasukkan tanggal.

Saya menemukan masalah ini hari ini. Saat menambahkan kontak yang menyertakan bidang khusus, api akan mengembalikan job_id tetapi kontak tidak akan pernah ditambahkan.

Bagi saya, masalahnya adalah saya mengirim nilai boolean ke bidang khusus 'teks'. Mengirim boolean itu sebagai string malah menyelesaikan masalah saya.

API Pemasaran dan custom_fields telah menjadi mimpi buruk yang nyata. Dokumen memberitahu Anda untuk mengirimkan ID custom_field saat Anda MENEMPATKAN kontak baru ke dalam daftar pemasaran. Kemudian, saat Anda melakukannya, pesan "ID bidang_kustom tidak valid" akan dikirim kembali. Tidak ada tempat di dokumen yang saya temukan mengatakan Anda terlihat mengirim id custom_field gaya "e1_T" yang aneh itu. Ada orang lain?

Tapi...ketika Anda mengirim permintaan PUT dan menggunakan ID custom_field gaya "e1_T" alih-alih ID yang dikembalikan saat Anda melakukan permintaan GET pada titik akhir custom_fields, itu berfungsi sempurna untuk menambahkan kontak baru.

Saya tidak mengerti.

Ini rapuh dan seringkali tidak intuitif, dokumen Sendgrid mengatakan "Anda harus menyimpan nilai id yang dikembalikan jika Anda ingin memperbarui atau menghapus bidang khusus.", dalam kasus saya nilai id yang dikembalikan adalah gaya "e1_T" yang aneh, dan menggunakannya berfungsi dengan baik .. hanya menyusahkan, mengapa mereka tidak hanya mengatur untuk mengambil nama bidang di luar jangkauan saya.

Bagi yang masih mencari jawaban, contoh payload di bawah ini:
contacts: [ { email: "
[email protected]", first_name: "test", last_name: "test", custom_fields: { e7_T: "TRUE" } } ]
Jadi custom_fields adalah objek, di mana kuncinya adalah id bidang khusus Anda - e7_T dalam kasus saya

Desain api yang sangat buruk, imo

Apakah halaman ini membantu?
0 / 5 - 0 peringkat