Sendgrid-nodejs: No se pueden crear contactos con campos personalizados establecidos

Creado en 10 jul. 2019  ·  39Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

No se pueden crear contactos con campos personalizados configurados mediante PUT de nuevas campañas de marketing
/ marketing / API de contactos

Pasos para reproducir

  1. Después de haber creado campos personalizados, envíe la siguiente carga útil a PUT / marketing / contactos
{
  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'
    }
  }
  ]
}

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

Detalles técnicos:

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

Comentario más útil

Parece que la API actual espera el field_id y no el nombre.

Si inspecciona el tráfico de red dentro de SendGrid al cargar la página https://mc.sendgrid.com/custom-fields , puede ver la respuesta para / field_definitions que devuelve los field_ids así como los nombres.

SendGrid necesita mostrar este valor de identificación en la interfaz o actualizar la API para aceptar el nombre en la solicitud.

Todos 39 comentarios

+1

Hoy me encontré con el mismo problema. Lo mencioné con el soporte de chat (haciendo referencia a este problema). Su respuesta:

"Ok, esto ha estado sucediendo recientemente. No eres el único. Desafortunadamente, no tenemos una solución para esto en este momento. Nuestros ingenieros superiores se han enterado de este problema".

Screenshot 2019-07-12 at 15 54 56

Eso es lo que obtengo en el sitio web oficial de la API.

Tengo el mismo problema en la API oficial. Si toma el fragmento de generación de código cURL, funcionará.

Parece que la API actual espera el field_id y no el nombre.

Si inspecciona el tráfico de red dentro de SendGrid al cargar la página https://mc.sendgrid.com/custom-fields , puede ver la respuesta para / field_definitions que devuelve los field_ids así como los nombres.

SendGrid necesita mostrar este valor de identificación en la interfaz o actualizar la API para aceptar el nombre en la solicitud.

Probablemente tengas razón. Es triste que su apoyo pueda ayudar a cualquiera. Y, por supuesto, el uso de identificadores hace que la API sea mucho más difícil de usar.
¿Notó si el punto final de los campos personalizados devuelve id cuando crea un nuevo campo, o necesita OBTENERlo?

@AAverin No estoy muy seguro desde que creé los campos personalizados en la GUI. Sin embargo, la referencia de la API dice que devuelve la identificación en el objeto de respuesta para las solicitudes PUT / PATCH.

El equipo de soporte me dijo que es posible usar nombres de campos personalizados pasándolos directamente en la carga útil, sin el objeto custom_fields adicional.
Funcionó, pero no se establecieron valores para los campos.
De todos modos, los campos personalizados solo son necesarios para los segmentos y no hay segmentos en New Marketing. Entonces, ¿tal vez simplemente omitir los campos personalizados por completo?

Así que solo para cerrar el tema.
La carga útil correcta sería:

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

También prometieron probar y actualizar la documentación de la API.

¿Algún avance en esto?
Tengo el mismo error cuando tengo el nombre del campo dentro de custom_fields.
No tengo ningún error cuando uso la identificación del campo dentro de custom_fields o dentro, PERO el contacto no se guarda.

También estoy usando curl directamente, no este módulo, así que creo que el problema está en el lado de sendgrid.

@soramister
La última respuesta que obtuve del soporte fue que ahora se supone que debemos usar identificadores especiales al configurar valores en campos personalizados.
Ver @adanot responder arriba.

Aún así, los campos personalizados son algo inútiles en este momento porque no es posible crear segmentos personalizados. Entonces sí, puede enviar campos personalizados, pero realmente no puede usarlos para nada.

@AAverin
También probé con el ID de campo. No hay mensaje de error PERO el contacto no se guarda.

@soramister No lo probé todavía, porque debido a que faltan segmentos y alguna característica, considero cambiarme a Mailerlite.
De todos modos, de acuerdo con el soporte, debería poder obtener sus campos personalizados creados usando GET https://api.sendgrid.com/v3/marketing/field_definitions call.

Luego, deberá tomar los ID de los campos personalizados para los que está interesado en agregar / actualizar valores y usarlos en su llamada para agregar / actualizar un contacto con: PUT https://api.sendgrid.com/v3/marketing/contacts

Aquí hay un ejemplo que me dio el soporte de carga útil. las claves para el campo custom_fields son esos identificadores especiales.

{

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

Lo intenté con el id de los campos. Mientras el comando es exitoso (no se devuelve ningún error), el contacto no se agrega.

@soramister
Me parece bien.
Pude pasar con éxito datos de campos personalizados para todos mis usuarios

@soramister ,

¿Cuál debería ser el ID de campo personalizado para que funcione? @AAverin , explica tu carga útil de ejemplo.

Lo intenté con el id de los campos. Mientras el comando es exitoso (no se devuelve ningún error), el contacto no se agrega.

Lo mismo para mi. Recibo una identificación de trabajo en la respuesta, pero parece que los datos no están en sendgrid

Entonces, para mí, los campos personalizados que usan la nueva API de contacto definitivamente no funcionan. Intenté usar ID de campos personalizados y sin ellos. Sin ID, los errores "ID de campo personalizados no válidos suministrados" con ID funciona / obtengo un éxito pero no actualiza los datos

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

Es posible que tarde un poco en ver el contacto creado en sendgrid, ¿se ha creado el contacto?
Sin embargo, tu objeto se ve bien.

Es posible que tarde un poco en ver el contacto creado en sendgrid, ¿se ha creado el contacto?
Sin embargo, tu objeto se ve bien.

Es realmente extraño, el contacto solo se creará si no incluyo campos personalizados. Un poco perdido a dónde ir desde aquí

@ Lucania001 tiene el mismo problema! Realmente muy impresionado con la API de Sendgrid. Extremadamente quebradizo y opaco. Tan poca información sobre lo que está sucediendo y tan poca documentación para explicar los puntos finales y su comportamiento.

Incluso con la identificación del campo en lugar del nombre del campo, no puedo actualizar los campos personalizados para los contactos. Esto debe abordarse lo antes posible o un cliente se irá por el desagüe.

Ni siquiera puedo crear un contacto usando la sección "pruébalo" de SendGrid de su API sin un campo personalizado. Todo lo que obtengo es esto:

{
"errores": [
{
"campo": "",
"mensaje": "JSON no válido"
}
]
}

Ni siquiera puedo crear un contacto usando la sección "pruébalo" de SendGrid de su API sin un campo personalizado. Todo lo que obtengo es esto:

{
"errores": [
{
"campo": "",
"mensaje": "JSON no válido"
}
]
}

Sí, la prueba no funciona en absoluto. Pruébelo a través del cartero. Sin embargo, es probable que se encuentre con los mismos problemas que el resto de nosotros.

Hola,

Regresé a este problema para ver si se solucionó. No lo es. El problema sigue presente.

Aquí lo que probé con una solicitud de curl:

curl --request PUT --url https://api.sendgrid.com/v3/marketing/contacts --header 'autorización: Bearer {{API_KEY}}}' --header "Content-Type: application / json" - -data '{"list_ids": ["f85956da-5696-4d8b-826d-84ac6e27cb2f"], "contactos": [{"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": nulo, "e1_T": "campo personalizado", "e3_T": " http://google.com/ "}}]} '

Cuando elimino el valor custom_fields, funciona. Se crea el contacto. Si vuelvo a agregar, el contacto no se agrega.
Ambos casos devuelven una identificación de trabajo, sin error.

Por favor dejame saber que hacer.

No creo que nadie de SendGrid preste atención a este hilo o github en general.
Lo único que puede hacer es escribir directamente al soporte en el sitio web, generalmente ayudan.
Una solución para mí fue desconectarme de SendGrid a otro servicio y ya tengo todo funcionando allí, mientras que SendGrid todavía tiene problemas para crear contactos.

Gracias AAverin, para resumir: para crear contactos con custom_field's, solo sepa que las identificaciones no son el nombre que les da, sendgrid aplica sus propias identificaciones que puede recuperar a través de GET https://api.sendgrid.com/v3/marketing/field_definitions

Gracias AAverin, para resumir: para crear contactos con custom_field's, solo sepa que las identificaciones no son el nombre que les da, sendgrid aplica sus propias identificaciones que puede recuperar a través de GET https://api.sendgrid.com/v3/marketing/field_definitions

Como se indicó anteriormente, incluso si uso la ID, se aplica la cuadrícula de envío, todavía no funciona

Aquí hay un ejemplo de curl que me funciona para crear múltiples contactos con un campo personalizado:

curl -X PUT https://api.sendgrid.com/v3/marketing/contacts -H "Tipo de contenido: aplicación / json" -H 'autorización: Portador API_KEY' --data '{"contactos": [{" email ":" [email protected] "," custom_fields ": {" e2_N ": 1}}, {" email ":" [email protected] "," first_name ":" Joe "," last_name ":" Dirte "," campos_personalizados ": {" e2_N ": 2}}]} '

@soramister Jugué con tu solicitud de curl. Su solicitud funciona si no incluye valores nulos para custom_fields. La entrada nula parece funcionar bien para los campos reservados pero no los campos personalizados. La creación de su solicitud de forma dinámica para que las entradas con valores nulos no se incluyan debería solucionar su problema.

Gracias @adanot , eso funcionó para mí. ¡Buena atrapada!

Los metadatos en el objeto de campos personalizados al crear un nuevo contacto deberían haber estado en la documentación. Por cierto, gracias @adanot y @AAverin

También cambiaron el formato de los campos de fecha personalizados, en las API de marketing heredadas era "10/12/2019" y ahora es "2019-10-12T23:14:20Z" que es ISO 8601 Zulu Time.

Aunque su interfaz de usuario todavía muestra el formato de fecha anterior, lo que sigue siendo confuso. Lo bueno sería si pudiera usar la hora del campo de fecha personalizado para crear segmentos, ya que antes solo permitía poner fechas.

Me encontré con este problema hoy. Al agregar un contacto que incluye campos personalizados, la api devolvería un job_id pero el contacto nunca se agregaría.

Para mí, el problema era que estaba enviando valores booleanos a un campo personalizado de 'texto'. En cambio, enviar esos valores booleanos como cadenas resolvió mi problema.

La API de marketing y custom_fields han sido una verdadera pesadilla. Los documentos le dicen que envíe un ID de campo personalizado cuando PONGA un nuevo contacto en una lista de marketing. Luego, cuando lo haga, le enviará un mensaje de "ID de campo personalizado no válido". En ninguna parte de los documentos he encontrado que diga que ha visto enviar esos extraños identificadores de campo personalizado de estilo "e1_T". ¿Alguien mas?

Pero ... cuando envía una solicitud PUT y usa la ID de campo personalizado de estilo "e1_T" en lugar de la ID que se devuelve cuando realiza una solicitud GET en el punto final de campos personalizados, funciona perfectamente para agregar un nuevo contacto.

Simplemente no entiendo.

Es frágil y, a menudo, no intuitivo, el documento de Sendgrid dice "Debería guardar el valor de identificación devuelto si alguna vez desea actualizar o eliminar campos personalizados", en mi caso, los valores de identificación devueltos eran ese estilo extraño "e1_T", y usar esos funciona bien ... es una molestia, por qué no se configuraron para tomar el nombre del campo es algo que se me escapa.

Para aquellos que todavía buscan una respuesta, ejemplo de carga útil a continuación:
contacts: [ { email: "
[email protected]", first_name: "test", last_name: "test", custom_fields: { e7_T: "TRUE" } } ]
Así que custom_fields es un objeto, donde key es su ID de campo personalizado - e7_T en mi caso

Diseño de API realmente malo, en mi opinión

¿Fue útil esta página
0 / 5 - 0 calificaciones