Sendgrid-nodejs: تعذر إنشاء جهات اتصال مع تعيين الحقول المخصصة

تم إنشاؤها على ١٠ يوليو ٢٠١٩  ·  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

التعليق الأكثر فائدة

يبدو أن واجهة برمجة التطبيقات الحالية تتوقع field_id وليس الاسم.

إذا قمت بفحص حركة مرور الشبكة داخل SendGrid عند تحميل صفحة https://mc.sendgrid.com/custom-fields ، يمكنك رؤية الاستجابة لـ / field_definitions التي تُرجع field_ids بالإضافة إلى الأسماء.

تحتاج SendGrid إما إلى عرض قيمة المعرف هذه على الواجهة الأمامية أو تحديث API لقبول الاسم في الطلب.

ال 39 كومينتر

+1

واجهت نفس المشكلة اليوم. لقد طرحته مع دعم الدردشة (بالإشارة إلى هذه المشكلة). ردهم:

"حسنًا ، لقد كان هذا يحدث مؤخرًا. أنت لست الوحيد. للأسف ليس لدينا عمل حول هذا الآن. لقد تم إعلام كبار المهندسين لدينا بهذه المشكلة."

Screenshot 2019-07-12 at 15 54 56

هذا ما أحصل عليه على موقع API الرسمي

لدي نفس المشكلة على API الرسمية. إذا كنت تأخذ مقتطف إنشاء رمز cURL ، فستعمل.

يبدو أن واجهة برمجة التطبيقات الحالية تتوقع field_id وليس الاسم.

إذا قمت بفحص حركة مرور الشبكة داخل SendGrid عند تحميل صفحة https://mc.sendgrid.com/custom-fields ، يمكنك رؤية الاستجابة لـ / field_definitions التي تُرجع field_ids بالإضافة إلى الأسماء.

تحتاج SendGrid إما إلى عرض قيمة المعرف هذه على الواجهة الأمامية أو تحديث API لقبول الاسم في الطلب.

ربما أنت على حق. من المحزن أن دعمهم يمكن أن يساعد أي شخص على الإطلاق. وبالطبع ، فإن استخدام المعرفات يجعل استخدام API أكثر صعوبة.
هل لاحظت ما إذا كانت نقطة نهاية الحقول المخصصة ترجع معرفًا عند إنشاء حقل جديد ، أو تحتاج إلى الحصول عليه؟

AAverin لست متأكدًا جدًا منذ أن أنشأت الحقول المخصصة في واجهة المستخدم الرسومية. يقول مرجع API أنه يقوم بإرجاع المعرف في كائن الاستجابة لطلبات PUT / PATCH بالرغم من ذلك.

أخبرني الدعم أنه من الممكن استخدام أسماء الحقول المخصصة عن طريق تمريرها مباشرة في الحمولة ، بدون كائن custom_fields إضافي.
لقد نجحت ، لكن لم يتم تعيين قيم الحقول.
على أي حال ، الحقول المخصصة مطلوبة فقط للشرائح ولا توجد شرائح في التسويق الجديد. لذلك ربما مجرد تخطي الحقول المخصصة تمامًا؟

لذلك فقط لإغلاق القضية.
الحمولة الصحيحة ستكون:

{
  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.
ليس لدي أي خطأ عند استخدام معرف الحقل داخل الحقول المخصصة أو داخل ولكن لا يتم حفظ جهة الاتصال.

أنا أستخدم curl أيضًا بشكل مباشر ، وليس هذه الوحدة ، لذلك أعتقد أن المشكلة تكمن في جانب Sendgrid.

تضمين التغريدة
كانت آخر إجابة حصلت عليها من الدعم هي أنه من المفترض الآن أن نستخدم معرفات خاصة عند تعيين القيم على الحقول المخصصة.
انظر إجابة adanot أعلاه.

لا تزال الحقول المخصصة غير مجدية إلى حد ما في الوقت الحالي لأنه لا يمكن إنشاء شرائح مخصصة. لذا ، نعم ، يمكنك إرسال حقول مخصصة ولكن لا يمكنك حقًا استخدامها لأي شيء.

تضمين التغريدة
لقد حاولت باستخدام معرف الحقل أيضًا. لا توجد رسالة خطأ ولكن جهة الاتصال لا تحفظ.

soramister لم أجرب نفسي حتى الآن ، لأنني أفكر في التبديل إلى Mailerlite بدلاً من ذلك ، نظرًا لفقدان الشرائح وبعض الميزات.
على أي حال ، وفقًا للدعم ، يجب أن تكون قادرًا على الحصول على الحقول المخصصة التي أنشأتها باستخدام GET https://api.sendgrid.com/v3/marketing/field_definitions call.

ستحتاج بعد ذلك إلى أخذ المعرفات للحقول المخصصة التي ترغب في إضافة / تحديث القيم لها ، واستخدام تلك المعرفات في مكالمتك لإضافة / تحديث جهة اتصال بـ: PUT https://api.sendgrid.com/v3/marketing/contacts

هنا هو مثال أعطاني دعم الحمولة. مفاتيح الحقل custom_fields هي تلك المعرفات الخاصة.

{

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

لقد حاولت باستخدام معرف الحقول. أثناء نجاح الأمر (لم يتم إرجاع أي خطأ) ، لا تتم إضافة جهة الاتصال.

تضمين التغريدة
تبدو جيدة بالنسبة لي.
تمكنت من تمرير بيانات الحقول المخصصة بنجاح لجميع المستخدمين

soramister يستغرق الأمر Sendgrid حوالي دقيقة قبل أن تراه.

ما الذي يجب أن يكون معرف الحقل المخصص حتى يعمل ؟؟ AAverin ، يرجى توضيح الحمولة في المثال الخاص بك.

لقد حاولت باستخدام معرف الحقول. أثناء نجاح الأمر (لم يتم إرجاع أي خطأ) ، لا تتم إضافة جهة الاتصال.

نفس الشيء بالنسبة لي. حصلت على معرف الوظيفة في الرد ولكن يبدو أن البيانات ليست في sendgrid

بالنسبة لي ، الحقول المخصصة التي تستخدم واجهة برمجة تطبيقات جهة الاتصال الجديدة لا تعمل بالتأكيد. لقد حاولت استخدام معرفات الحقول المخصصة وبدونها. بدون معرفات أنها أخطاء "معرفات الحقول المخصصة غير الصالحة المزودة" مع المعرفات تعمل / لقد نجحت ولكن لا يتم تحديث البيانات

{ "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. هش للغاية وغير شفاف. هناك القليل من التبصر في ما يحدث ، والقليل من الوثائق لشرح نقاط النهاية وسلوكهم.

حتى مع معرف الحقل بدلاً من اسم الحقل ، لا يمكنني تحديث الحقول المخصصة لجهات الاتصال. هذا يحتاج إلى معالجة في أسرع وقت ممكن أو العميل في استنزاف.

لا يمكنني حتى الحصول على جهة اتصال تم إنشاؤها باستخدام قسم "جربها" الخاص بـ SendGrid في واجهة برمجة التطبيقات (API) الخاصة بهم بدون حقل مخصص. كل ما أحصل عليه هو هذا:

{
"أخطاء": [
{
"حقل": ""،
"الرسالة": "JSON غير صالح"
}
]
}

لا يمكنني حتى الحصول على جهة اتصال تم إنشاؤها باستخدام قسم "جربها" الخاص بـ SendGrid في واجهة برمجة التطبيقات (API) الخاصة بهم بدون حقل مخصص. كل ما أحصل عليه هو هذا:

{
"أخطاء": [
{
"حقل": ""،
"الرسالة": "JSON غير صالح"
}
]
}

نعم ، تجربته لا تعمل على الإطلاق حقًا. جربه من خلال ساعي البريد. من المحتمل أن تواجه نفس المشكلات التي يواجهها بقيتنا.

مرحبا،

لقد عدت إلى هذه المشكلة لمعرفة ما إذا كان قد تم إصلاحها. ليس. المشكلة لا تزال موجودة.

إليك ما جربته مع طلب الضفيرة:

curl --request PUT --url https://api.sendgrid.com/v3/marketing/contacts --header 'authorization: Bearer {{API_KEY}}}' - رأس "Content-Type: application / json" - -بيانات '{"list_ids": ["f85956da-5696-4d8b-826d-84ac6e27cb2f"]، "جهات الاتصال": [{"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": فارغ، "e1_T": "حقل مخصص"، "e3_T": " http://google.com/ "}}]} '

عندما أقوم بإزالة قيمة custom_fields ، فإنها تعمل. تم إنشاء جهة الاتصال. إذا أضفت مرة أخرى ، لا تتم إضافة جهة الاتصال.
كلتا الحالتين ترجع معرف الوظيفة ، لا خطأ.

واسمحوا لي أن أعرف ما يجب القيام به.

لا أعتقد أن أي شخص من SendGrid يهتم بهذا الموضوع أو github بشكل عام.
الشيء الوحيد الذي يمكنك فعله هو الكتابة مباشرة للدعم على موقع الويب ، وعادة ما يساعدون.
كان الحل بالنسبة لي هو إيقاف تشغيل SendGrid إلى خدمة أخرى ولدي بالفعل كل شيء يعمل هناك ، بينما لا يزال SendGrid يواجه مشاكل في إنشاء جهات اتصال

شكرًا AAverin ، للتلخيص: لإنشاء جهات اتصال مع custom_field's فقط معرف معرف ليس هو الاسم الذي تمنحه لهم ، تطبق sendgrid معرّفها الخاص الذي يمكنك استرداده عبر GET https://api.sendgrid.com/v3/marketing/field_definitions

شكرًا AAverin ، للتلخيص: لإنشاء جهات اتصال مع custom_field's فقط معرف معرف ليس هو الاسم الذي تمنحه لهم ، تطبق sendgrid معرّفها الخاص الذي يمكنك استرداده عبر GET https://api.sendgrid.com/v3/marketing/field_definitions

كما هو مذكور أعلاه ، حتى إذا كنت أستخدم Sendgrid ينطبق ، فإنه لا يزال لا يعمل

فيما يلي مثال على الضفيرة التي تناسبني لإنشاء جهات اتصال متعددة بحقل مخصص:

curl -X PUT https://api.sendgrid.com/v3/marketing/contacts -H "نوع المحتوى: application / json" -H 'authorization: Bearer API_KEY' --data '{"جهات الاتصال": [{" البريد الإلكتروني ":" [email protected] "،" custom_fields ": {" e2_N ": 1}}، {" email ":" [email protected] "،" first_name ":" Joe "،" last_name ":" Dirte "،" custom_fields ": {" e2_N ": 2}}]} '

soramister لقد لعبت مع طلب الضفيرة الخاص بك. يعمل طلبك إذا لم تقم بتضمين قيم خالية للحقول المخصصة. يبدو أن الإدخال الفارغ يعمل بشكل جيد للحقول المحجوزة ولكن ليس الحقول_المخصصة. يجب أن يؤدي إنشاء طلبك ديناميكيًا بحيث لا يتم تضمين الإدخالات ذات القيم الفارغة إلى حل مشكلتك.

شكرًا adanot ، لقد

يجب أن تكون البيانات الوصفية في كائن الحقول المخصصة عند إنشاء جهة اتصال جديدة موجودة في الوثائق. راجع للشغل ، شكرًا adanot و Averin

لقد قاموا أيضًا بتغيير تنسيق حقول التاريخ المخصصة ، في واجهة برمجة تطبيقات التسويق القديمة كان "10/12/2019" والآن أصبح "2019-10-12T23:14:20Z" وهو ISO 8601 Zulu Time.

على الرغم من أن واجهة المستخدم الخاصة بهم لا تزال تعرض تنسيق التاريخ الأقدم الذي لا يزال محيرًا. سيكون الشيء الجيد هو إذا كنت قادرًا على استخدام وقت حقل التاريخ المخصص لإنشاء شرائح كما كان يُسمح في وقت سابق بوضع التواريخ.

جئت عبر هذه القضية اليوم. عند إضافة جهة اتصال تتضمن حقولًا مخصصة ، فإن واجهة برمجة التطبيقات ستعيد job_id ولكن لن تتم إضافة جهة الاتصال مطلقًا.

بالنسبة لي ، كانت المشكلة أنني كنت أرسل قيمًا منطقية إلى حقل مخصص "نصي". إرسال هذه القيم المنطقية كسلاسل بدلاً من ذلك حل مشكلتي.

لقد كان Marketing API و custom_fields كابوسًا حقيقيًا. تخبرك المستندات بإرسال معرف custom_field عندما تقوم بوضع جهة اتصال جديدة في قائمة تسويق. وبعد ذلك ، عندما تفعل ذلك ، فإنه يرسل مرة أخرى رسالة "معرف حقل مخصص غير صالح". لم أجد في أي مكان في المستندات ما يقول إنك رأيت إرسال معرفات الحقول المخصصة ذات النمط "e1_T" الغريبة. اي شخص اخر؟

ولكن ... عند إرسال طلب PUT واستخدام معرف حقل custom_field بنمط "e1_T" بدلاً من المعرف الذي يتم إرجاعه عند إجراء طلب GET على نقطة نهاية custom_fields ، فإنه يعمل بشكل مثالي لإضافة جهة اتصال جديدة.

أنا فقط لا تحصل عليه.

يقول مستند Sendgrid ، إنه هش وغالبًا ما يكون غير بديهي ، "يجب عليك حفظ قيمة المعرف التي تم إرجاعها إذا كنت ترغب في أي وقت في تحديث أو حذف الحقول المخصصة." ، في حالتي ، كانت قيم المعرف التي تم إرجاعها هي نمط "e1_T" الغريب ، وباستخدام هذه يعمل بشكل جيد .. مجرد ألم ، لماذا لم يجرؤوا على اتخاذ اسم الحقل فقط.

بالنسبة لأولئك الذين ما زالوا يبحثون عن إجابة ، مثال الحمولة أدناه:
contacts: [ { email: "
[email protected]", first_name: "test", last_name: "test", custom_fields: { e7_T: "TRUE" } } ]
لذا فإن custom_fields عبارة عن كائن ، حيث يكون المفتاح هو معرف الحقل المخصص الخاص بك - e7_T في حالتي

تصميم API سيء حقًا ، imo

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات