Sendgrid-nodejs: Невозможно создать контакты с установленными настраиваемыми полями

Созданный на 10 июл. 2019  ·  39Комментарии  ·  Источник: sendgrid/sendgrid-nodejs

Резюме проблемы

Невозможно создать контакты с настраиваемыми полями, заданными с помощью PUT новых маркетинговых кампаний
/ marketing / contacts 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, а не имя.

Если вы проверяете сетевой трафик внутри 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, он будет работать.

Похоже, что текущий API ожидает field_id, а не имя.

Если вы проверяете сетевой трафик внутри SendGrid при загрузке страницы https://mc.sendgrid.com/custom-fields, вы можете увидеть ответ для / field_definitions, который возвращает field_ids, а также имена.

SendGrid необходимо либо отобразить это значение идентификатора во внешнем интерфейсе, либо обновить API, чтобы он принял имя в запросе.

Возможно ты прав. Печально, что их поддержка вообще может помочь кому угодно. И, конечно же, использование идентификаторов значительно усложняет использование api.
Заметили ли вы, возвращает ли конечная точка настраиваемых полей идентификатор при создании нового поля или вам нужно его ПОЛУЧИТЬ?

@AAverin Не уверен, так как я создал настраиваемые поля в графическом интерфейсе. В справочнике API говорится, что он возвращает идентификатор в объекте ответа для запросов PUT / PATCH.

Служба поддержки сказала мне, что можно использовать имена настраиваемых полей, передав их непосредственно в полезную нагрузку без дополнительного объекта 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 или внутри, НО контакт не сохраняется.

Я также использую curl напрямую, а не этот модуль, поэтому я думаю, что проблема связана с sendgrid.

@soramister
Последний ответ, который я получил от службы поддержки, заключался в том, что теперь мы должны использовать специальные идентификаторы при установке значений в настраиваемые поля.
См. Ответ @adanot выше.

Тем не менее, настраиваемые поля в настоящий момент бесполезны, потому что создавать настраиваемые сегменты невозможно. Так что да, вы можете отправлять настраиваемые поля, но вы не можете использовать их ни для чего.

@Averin
Я тоже пробовал с идентификатором поля. Сообщение об ошибке отсутствует, НО контакт не сохраняется.

@soramister Я еще не пробовал, потому что из-за отсутствия сегментов и некоторых функций я рассматриваю возможность перехода на Mailerlite.
В любом случае, по словам службы поддержки, вы сможете получать созданные настраиваемые поля с помощью вызова GET https://api.sendgrid.com/v3/marketing/field_definitions .

Затем вам нужно будет взять идентификаторы для настраиваемых полей, которые вы заинтересованы в добавлении / обновлении значений, и использовать их в своем вызове для добавления / обновления контакта с помощью: 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
Мне подходит.
Смог успешно передать данные настраиваемых полей для всех моих пользователей

@soramister Sendgrid требуется около минуты, прежде чем вы его увидите.

какой должен быть идентификатор настраиваемого поля, чтобы оно работало ?? @Averin , объясните, пожалуйста, свой пример полезной нагрузки.

Я пробовал с идентификатором полей. Пока команда выполнена успешно (ошибка не возвращается), контакт не добавляется.

Мне то же самое. В ответе я получаю идентификатор задания, но похоже, что данных нет в sendgrid

Так что для меня настраиваемые поля, использующие новый контактный API, определенно не работают. Я пробовал использовать идентификаторы настраиваемых полей и без них. Без идентификатора он выдает ошибки «предоставлены неверные идентификаторы настраиваемых полей» с идентификатором, он работает / Успешно, но данные не обновляются.

{ "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 с такой же проблемой! На самом деле действительно не впечатлен API Sendgrid. Чрезвычайно хрупкий и непрозрачный. Так мало понимания того, что происходит, и так мало документации, объясняющей конечные точки и их поведение.

Даже с идентификатором поля, а не с именем поля, я не могу обновить настраиваемые поля для контактов. Эту проблему необходимо решить как можно скорее, иначе клиент проиграет.

Я даже не могу создать контакт, созданный с помощью раздела SendGrid «попробовать» своего API без настраиваемого поля. Все, что я получаю, это:

{
"ошибки": [
{
"поле": "",
"message": "недопустимый JSON"
}
]
}

Я даже не могу создать контакт, созданный с помощью раздела SendGrid «попробовать» своего API без настраиваемого поля. Все, что я получаю, это:

{
"ошибки": [
{
"поле": "",
"message": "недопустимый JSON"
}
]
}

Да, попробовать это вообще не работает. Попробуй через почтальона. Вы, вероятно, столкнетесь с теми же проблемами, что и все мы.

Привет,

Я вернулся к этой проблеме, чтобы посмотреть, была ли она исправлена. Нет. Проблема все еще присутствует.

Вот что я пробовал с запросом на завиток:

curl --request PUT --url https://api.sendgrid.com/v3/marketing/contacts --header 'авторизация: 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": "настраиваемое поле", "e3_T": " http://google.com/ "}}]} '

Когда я удаляю значение custom_fields, оно работает. Контакт создан. Если я добавлю обратно, контакт не добавится.
В обоих случаях возвращается идентификатор задания, без ошибок.

Пожалуйста, дайте мне знать, что делать.

Я не думаю, что кто-то из SendGrid обращает внимание на эту ветку или github в целом.
Единственное, что можно сделать, это написать прямо в службу поддержки на сайте, обычно они помогают.
Решением для меня было переключиться с SendGrid на другую службу, и у меня уже все там работает, а у SendGrid все еще есть проблемы с созданием контактов.

Подводя итог, спасибо AAverin: для создания контактов с custom_field просто знайте, что id - это не то имя, которое вы им даете, sendgrid применяет свои собственные идентификаторы, которые вы можете получить через GET https://api.sendgrid.com/v3/marketing/field_definitions

Подводя итог, спасибо AAverin: для создания контактов с custom_field просто знайте, что id - это не то имя, которое вы им даете, sendgrid применяет свои собственные идентификаторы, которые вы можете получить через GET https://api.sendgrid.com/v3/marketing/field_definitions

Как указано выше, даже если я использую идентификатор sendgrid, он все равно не работает

Вот пример curl, который позволяет мне создавать несколько контактов с настраиваемым полем:

curl -X PUT https://api.sendgrid.com/v3/marketing/contacts -H "Content-Type: application / json" -H 'авторизация: Bearer API_KEY' --data '{"contacts": [{" email ":" [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

Они также изменили формат настраиваемых полей даты, в устаревшем Marketing API это было "10/12/2019" а теперь это "2019-10-12T23:14:20Z" что соответствует ISO 8601 Zulu Time.

Хотя их пользовательский интерфейс по-прежнему показывает старый формат даты, который все еще сбивает с толку. Было бы хорошо, если бы я мог использовать время настраиваемого поля даты для создания сегментов, поскольку раньше он просто позволял ставить даты.

Я столкнулся с этой проблемой сегодня. При добавлении контакта, который включает настраиваемые поля, api вернет job_id но контакт никогда не будет добавлен.

Для меня проблема заключалась в том, что я отправлял логические значения в настраиваемое поле «текст». Отправка этих логических значений в виде строк решила мою проблему.

Marketing API и custom_fields были настоящим кошмаром. В документах указано, что нужно отправлять идентификатор custom_field, когда вы помещаете новый контакт в маркетинговый список. Затем, когда вы это сделаете, он отправит обратно сообщение «недопустимый идентификатор custom_field». Я нигде в документации не нашел, чтобы вы видели, как отправляются эти странные идентификаторы 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 - это объект, где key - это идентификатор вашего настраиваемого поля - в моем случае e7_T

Действительно плохой дизайн API, имо

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Loriot-n picture Loriot-n  ·  4Комментарии

thidasapankaja picture thidasapankaja  ·  4Комментарии

polkhovsky picture polkhovsky  ·  3Комментарии

mikemaccana picture mikemaccana  ·  4Комментарии

thinkingserious picture thinkingserious  ·  4Комментарии