Ir al contenido

Curso de Braze LearningRealizar una llamada a la API de contenido conectado

Usa contenido conectado para insertar cualquier información accesible por API directamente en los mensajes que envías a los usuarios. Puedes extraer contenido directamente desde tu servidor web o desde API de acceso público.

Esta página cubre cómo realizar llamadas a la API de contenido conectado, casos de uso avanzados de contenido conectado, manejo de errores y más.

Acerca del volumen de llamadas de contenido conectado

Braze puede realizar la misma llamada a la API de contenido conectado más de una vez por destinatario. Las razones comunes incluyen:

  • Correo electrónico con múltiples partes: Un solo correo electrónico puede desencadenar pases de representación separados para el cuerpo HTML, el cuerpo de texto plano y la versión de páginas móviles aceleradas (páginas móviles aceleradas) (si está presente). Cada pase puede desencadenar contenido conectado en esa parte, por lo que un destinatario puede generar múltiples llamadas idénticas o similares.
  • Validación y reintentos: Las cargas útiles de los mensajes pueden representarse múltiples veces por destinatario para validación, lógica de reintentos u otros propósitos internos.
  • Comportamiento del canal: El contenido conectado se ejecuta cuando el mensaje se representa. Para los mensajes dentro de la aplicación, el mensaje se representa en el momento de la impresión.

Si ves más llamadas de contenido conectado en tus registros que envíos o destinatarios, ese comportamiento es esperado. Para orientación sobre cómo reducir la carga y planificar la escalabilidad, consulta Mejores prácticas para endpoints de alto volumen.

Enviar una llamada de contenido conectado

Para enviar una llamada de contenido conectado, utiliza la etiqueta {% connected_content %}. Con esta etiqueta, puedes asignar o declarar variables utilizando :save. Los aspectos de estas variables pueden referenciarse más adelante en el mensaje con Liquid.

Desglose de la llamada a la API

El siguiente ejemplo utiliza la API Sunrise-Sunset e incluye la hora del amanecer de hoy en un mensaje:

{% connected_content https://api.sunrise-sunset.org/v2?lat=40.7128&lng=-74.0060&date=today :save result %}
Hi there, today's sunrise in NYC is at {{result.sunrise}}.

Esto es lo que hace cada parte:

Componente Qué hace
Etiqueta connected_content Indica a Braze que realice una solicitud HTTP al renderizar el mensaje.
https://api.sunrise-sunset.org/v2 El endpoint de la API al que Braze llama.
lat=40.7128&lng=-74.0060 Parámetros de consulta para las coordenadas de la ciudad de Nueva York.
date=today Solicita datos del día actual en esas coordenadas.
:save result Almacena la respuesta de la API en una variable local llamada result.

Cómo funciona la respuesta de la API Sunrise-Sunset

Este endpoint devuelve JSON con campos de nivel superior como sunrise, sunset y tzid. Los tiempos se devuelven en la zona horaria de la ubicación de forma predeterminada (para este ejemplo, hora de Nueva York).

Por ejemplo, la forma de la respuesta es similar a:

{
  "date": "2026-07-23",
  "tzid": "America/New_York",
  "sunrise": "2026-07-23T05:42:11-04:00",
  "sunset": "2026-07-23T20:21:32-04:00"
}

Mapear la respuesta de la API a Liquid

Dado que la respuesta se guarda como result, referencia cada campo directamente desde ese objeto.

{{result.sunrise}}
{{result.sunset}}
{{result.tzid}}

Utiliza este patrón siempre que guardes JSON del contenido conectado:

  1. Guarda la respuesta de la API con :save.
  2. Encuentra el campo que deseas en la respuesta JSON.
  3. Referéncialo en Liquid como saved_variable.field_name.

Añadir variables

También puedes incluir atributos del perfil de usuario como variables en la cadena de URL al realizar solicitudes de contenido conectado.

Por ejemplo, es posible que tengas un servicio web que devuelve contenido basado en la dirección de correo electrónico y el ID de un usuario. Si estás pasando atributos que contienen caracteres especiales, como el signo de arroba (@), asegúrate de usar el filtro de Liquid url_param_escape para reemplazar cualquier carácter no permitido en las URL con sus versiones escapadas compatibles con URL, como se muestra en el siguiente atributo de dirección de correo electrónico.

Hi, here are some articles that you might find interesting:

{% connected_content http://www.yourwebsite.com/articles?email={{${email_address} | url_param_escape}}&user_id={{${user_id}}} %}

Las solicitudes de contenido conectado solo admiten GET y POST. Para los Banners, solo se admiten las solicitudes GET. Para más información, consulta Contenido conectado para Banners.

Gestión de errores

Si la URL no está disponible y llega a una página 404, Braze genera una cadena vacía en su lugar. Si la URL llega a una página HTTP 500 o 502, la URL falla en la lógica de reintentos.

Si el endpoint devuelve JSON, puedes detectarlo comprobando si el valor de connected es nulo, y luego cancelar condicionalmente el mensaje. Braze solo permite URL que se comuniquen a través del puerto 80 (HTTP) y 443 (HTTPS).

Detección de host en mal estado

El contenido conectado emplea un mecanismo de detección de host en mal estado para detectar cuándo el host de destino experimenta una alta tasa de lentitud significativa o sobrecarga, lo que resulta en tiempos de espera, demasiadas solicitudes u otros resultados que impiden que Braze se comunique correctamente con el endpoint de destino. Actúa como una protección para reducir la carga innecesaria que puede estar provocando dificultades en el host de destino. También sirve para estabilizar la infraestructura de Braze y mantener velocidades de mensajería rápidas.

Si el host de destino experimenta una alta tasa de lentitud significativa o sobrecarga, Braze detiene temporalmente las solicitudes al host de destino durante un minuto, simulando en su lugar respuestas que indican el fallo. Después de un minuto, Braze comprueba el estado del host utilizando un número reducido de solicitudes antes de reanudar las solicitudes a velocidad máxima si se determina que el host está en buen estado. Si el host sigue en mal estado, Braze espera otro minuto antes de intentarlo de nuevo.

Si las solicitudes al host de destino son detenidas por el detector de host en mal estado, Braze continúa procesando los mensajes y siguiendo tu lógica Liquid como si hubiera recibido un código de respuesta de error. Si quieres asegurarte de que estas solicitudes de contenido conectado se reintenten cuando son detenidas por el detector de host en mal estado, utiliza la opción :retry. Para más información sobre la opción :retry, consulta Reintentos de contenido conectado.

Si crees que la detección de host en mal estado puede estar causando problemas, contacta con soporte de Braze.

Límites de velocidad (429) frente a detección de host en mal estado

Los siguientes son mecanismos diferentes:

  • 429 Too Many Requests: Tu endpoint (o un servicio ascendente) está devolviendo esta respuesta. Significa que tu servidor o middleware está rechazando tráfico, a menudo porque tiene su propio límite de velocidad. Braze no aplica un límite de velocidad separado al contenido conectado; el volumen de solicitudes de contenido conectado escala directamente con tu límite de velocidad de entrega de mensajes. Dado que los mensajes pueden procesarse varias veces por destinatario (por ejemplo, para HTML de correo electrónico, texto plano y páginas móviles aceleradas), el número de solicitudes de contenido conectado puede superar ese límite de velocidad; no asumas que será menor o igual a los mensajes por minuto que configures. Si ves errores 429, escala tu endpoint o middleware para manejar el volumen de solicitudes esperado, o reduce el límite de velocidad de entrega de la Campaign o Canvas para que se envíen menos mensajes (y por lo tanto menos llamadas de contenido conectado) por minuto.
  • Detección de host en mal estado: Una protección del lado de Braze que se activa después de una alta tasa y volumen de fallos en una ventana de un minuto. El recuento de fallos incluye los códigos de estado 408, 429, 502, 503, 504 y 529. Cuando se activa, Braze detiene temporalmente las solicitudes a ese host y simula una respuesta de fallo. Esto es independiente de tu propio límite de velocidad. Para los umbrales de detección y más detalles, consulta Solucionar problemas de solicitudes de webhooks y contenido conectado. Para evitar activar la detección de host en mal estado, asegúrate de que tu endpoint pueda manejar el volumen de llamadas descrito en Comprender el volumen de llamadas de contenido conectado y Mejores prácticas para endpoints de alto volumen.

Permitir un rendimiento eficiente

Dado que Braze entrega mensajes a una velocidad muy alta, asegúrate de que tu servidor pueda manejar miles de conexiones simultáneas para que no se sobrecargue al extraer contenido. Al usar API públicas, confirma que tu uso no violará ningún límite de velocidad que el proveedor de la API pueda emplear. Braze requiere que el tiempo de respuesta del servidor sea inferior a dos segundos por razones de rendimiento; si el servidor tarda más de dos segundos en responder, el contenido no se inserta.

Para más información sobre la planificación de la capacidad del endpoint y la reducción del volumen de llamadas, consulta Mejores prácticas para endpoints de alto volumen.

Cosas que debes saber

  • Braze no cobra por las llamadas a la API y no cuenta para tu uso de puntos de datos asignado.
  • Hay un límite de 1 MB para las respuestas de contenido conectado.
  • El contenido conectado se ejecuta cuando se renderiza el mensaje. Para los mensajes dentro de la aplicación, el mensaje se renderiza en el momento de la impresión.
  • Las llamadas de contenido conectado no siguen redirecciones. Solo las respuestas 2xx se tratan como exitosas. Si tu endpoint devuelve una redirección 3xx (por ejemplo, 301 o 302), Braze no sigue la redirección a la URL final. Para conocer los síntomas y los pasos de solución de problemas, consulta ¿Por qué falla el contenido conectado cuando mi endpoint devuelve una redirección?.

Cómo se procesan las llamadas de contenido conectado

Las llamadas de contenido conectado dentro de una única plantilla de mensaje se ejecutan secuencialmente (de arriba a abajo) durante el renderizado de Liquid. Esto significa que las llamadas posteriores pueden hacer referencia a variables establecidas por las llamadas anteriores. En este ejemplo, la primera llamada recupera datos de usuario y la segunda llamada utiliza esos datos para obtener preferencias:

{% connected_content https://api.example.com/user :save user_data %}
{% connected_content https://api.example.com/preferences?user_id={{user_data.id}} :save preferences %}

Envío global y volumen de solicitudes

Si bien las llamadas de contenido conectado se ejecutan secuencialmente dentro de un solo mensaje, los mensajes se envían en paralelo a través de tus Campaigns y Canvas. Los envíos de alto volumen pueden generar un tráfico de solicitudes significativo hacia tus endpoints durante los períodos de envío pico. Para gestionar y limitar ese tráfico, incluyendo los límites de velocidad de mensajería del espacio de trabajo, la limitación de velocidad de entrega y el almacenamiento en caché, consulta Prácticas recomendadas para endpoints de alto volumen.

Prácticas recomendadas para endpoints de alto volumen

Si tus mensajes utilizan contenido conectado y envías a gran volumen, planifica más solicitudes que el número de destinatarios o envíos:

  • Estima la carga máxima: Utiliza un multiplicador conservador al dimensionar tu endpoint o middleware: las solicitudes de contenido conectado pueden superar el número de destinatarios o mensajes enviados. Por ejemplo, para correo electrónico, un solo destinatario puede generar múltiples llamadas (HTML, texto plano y AMP), por lo que destinatarios × 2 o × 3 se usa frecuentemente como estimación conservadora.
  • Usa el almacenamiento en caché cuando sea apropiado: Las solicitudes GET se almacenan en caché de forma predeterminada. Para solicitudes POST, añade :cache_max_age cuando la respuesta pueda reutilizarse durante un período (por ejemplo, un token o contenido que no cambia con cada solicitud). Consulta Almacenamiento en caché de respuestas y las preguntas frecuentes sobre almacenamiento en caché POST en la siguiente sección.
  • Establece límites de velocidad de mensajes: Los límites de velocidad de mensajería del espacio de trabajo y la limitación de velocidad de entrega en Campaigns o Canvas limitan indirectamente el volumen de solicitudes de contenido conectado; Braze no limita la velocidad del contenido conectado en sí. Estos son indicadores aproximados, no perfectos, porque las solicitudes de contenido conectado no son 1:1 con los mensajes. Úsalos para mantener el volumen de mensajes (y, por tanto, de contenido conectado) dentro de lo que tu endpoint pueda manejar.
  • Diseña para idempotencia y reintentos: Braze puede llamar a tu endpoint más de una vez por destinatario. Asegúrate de que tu endpoint pueda tolerar solicitudes duplicadas sin efectos secundarios incorrectos.

Tipos de autenticación

Uso de autenticación básica

Si la URL requiere autenticación básica, Braze puede almacenar una credencial de autenticación básica para que la utilices en tu llamada a la API. Puedes gestionar las credenciales de autenticación básica existentes y añadir nuevas en Configuración > Contenido conectado.

La configuración de contenido conectado en el panel de Braze.

Para añadir una nueva credencial, selecciona Añadir credencial > Autenticación básica.

Desplegable "Añadir credencial" con la opción de usar autenticación básica o autenticación por token.

Asigna un nombre a tu credencial e introduce el nombre de usuario y la contraseña.

La ventana "Crear nueva credencial" con la opción de introducir un nombre, un nombre de usuario y una contraseña.

Luego puedes usar esta credencial de autenticación básica en tus llamadas a la API haciendo referencia al nombre del token:

Hi there, here is some fun trivia for you!: {% connected_content https://yourwebsite.com/random/trivia :basic_auth credential_name %}

Las credenciales almacenadas se aplican a las solicitudes {% connected_content %} mientras Braze renderiza un mensaje. No se aplican a la solicitud HTTP principal configurada en un paso de webhook. Usa los encabezados de solicitud o una etiqueta {% connected_content %} dentro de un campo de encabezado o cuerpo de webhook cuando necesites recuperar secretos para esa llamada.

Uso de autenticación por token

Al usar el contenido conectado de Braze, es posible que ciertas API requieran un token en lugar de un nombre de usuario y una contraseña. Braze también puede almacenar credenciales que contengan valores de encabezado de autenticación por token.

Para añadir una credencial que contenga valores de token, selecciona Añadir credencial > Autenticación por token. A continuación, añade los pares clave-valor para los encabezados de tu llamada a la API y el dominio permitido.

Un ejemplo de token "token_credential_abc" con detalles de autenticación por token.

Luego puedes usar esta credencial en tus llamadas a la API haciendo referencia al nombre de la credencial:

{% assign campaign_name="New Year Sale" %}
{% connected_content
     https://api.endpoint.com/your_path
     :method post
     :auth_credentials token_credential_abc
     :body campaign={{campaign_name}}&customer={{${user_id}}}&channel=Braze
     :content_type application/json
     :save publication
%}

Uso de Open Authentication (OAuth)

Algunas configuraciones de API requieren la obtención de un token de acceso que luego se puede usar para autenticar el endpoint de la API al que deseas acceder.

Paso 1: Obtener el token de acceso

El siguiente ejemplo ilustra cómo obtener y guardar un token de acceso en una variable local, que luego se puede usar para autenticar la llamada a la API posterior. Se puede añadir un parámetro :cache_max_age para que coincida con el tiempo de validez del token de acceso y reducir el número de llamadas salientes de contenido conectado. Consulta Almacenamiento en caché configurable para más información.

{% connected_content
     https://your_API_access_token_endpoint_here/
     :method post
     :auth_credentials access_token_credential_abc
     :headers {
       "Content-Type": "YOUR-CONTENT-TYPE"
     }
     :cache_max_age 900
     :save token_response
%}

Paso 2: Autorizar la API usando el token de acceso obtenido

Una vez guardado el token, se puede incluir dinámicamente como plantilla en la llamada de contenido conectado posterior para autorizar la solicitud:

{% connected_content
     https://your_API_endpoint_here/
     :headers {
       "Content-Type": "YOUR-CONTENT-TYPE",
       "Authorization": "{{token_response}}"
     }
     :body key1=value1&key2=value2
     :save response
%}

Edición de credenciales

Puedes editar el nombre de la credencial para los tipos de autenticación.

  • Para la autenticación básica, puedes actualizar el nombre de usuario y la contraseña. Ten en cuenta que la contraseña introducida anteriormente no será visible.
  • Para la autenticación por token, puedes actualizar los pares clave-valor del encabezado y el dominio permitido. Ten en cuenta que los valores de encabezado establecidos anteriormente no serán visibles.

Lista de IP permitidas del contenido conectado

Cuando se envía un mensaje que utiliza contenido conectado desde Braze, los servidores de Braze realizan automáticamente solicitudes de red a los servidores de nuestros clientes o de terceros para recuperar datos. Con la lista de IP permitidas, puedes verificar que las solicitudes de contenido conectado provienen realmente de Braze, añadiendo una capa de seguridad.

Braze enviará las solicitudes de contenido conectado desde los siguientes rangos de IP. Los rangos listados se añaden de forma automática y dinámica a cualquier clave de API que haya sido incluida en la lista de permitidos.

Braze tiene un conjunto reservado de IP que se utiliza para todos los servicios, y no todas están activas en un momento dado. Esto está diseñado para que Braze pueda enviar desde un centro de datos diferente o realizar tareas de mantenimiento, si es necesario, sin afectar a los clientes. Braze puede utilizar una, un subconjunto o todas las IP listadas a continuación al realizar solicitudes de contenido conectado.

Si las solicitudes de contenido conectado devuelven consistentemente 403 Forbidden y la autenticación está configurada correctamente, añade estas IP a la lista de permitidos en el servidor que recibe la solicitud. Un 403 también puede indicar permisos insuficientes o credenciales no válidas, así que confirma tanto la configuración de red como la de autenticación. Para orientación específica sobre webhooks, consulta 403 Forbidden y lista de IP permitidas.

Para las instancias US-01, US-02, US-03, US-04, US-05, US-06, US-07, estas son las direcciones IP correspondientes:

  • 23.21.118.191
  • 34.206.23.173
  • 50.16.249.9
  • 52.4.160.214
  • 54.87.8.34
  • 54.156.35.251
  • 52.54.89.238
  • 18.205.178.15

Para la instancia US-08, estas son las direcciones IP correspondientes:

  • 52.151.246.51
  • 52.170.163.182
  • 40.76.166.157
  • 40.76.166.170
  • 40.76.166.167
  • 40.76.166.161
  • 40.76.166.156
  • 40.76.166.166
  • 40.76.166.160
  • 40.88.51.74
  • 52.154.67.17
  • 40.76.166.80
  • 40.76.166.84
  • 40.76.166.85
  • 40.76.166.81
  • 40.76.166.71
  • 40.76.166.144
  • 40.76.166.145

Para la instancia US-10, estas son las direcciones IP correspondientes:

  • 100.25.232.164
  • 35.168.86.179
  • 52.7.44.117
  • 3.92.153.18
  • 35.172.3.129
  • 50.19.162.19

Para las instancias EU-01 y EU-02, estas son las direcciones IP correspondientes:

  • 52.58.142.242
  • 52.29.193.121
  • 35.158.29.228
  • 18.157.135.97
  • 3.123.166.46
  • 3.64.27.36
  • 3.65.88.25
  • 3.68.144.188
  • 3.70.107.88

Para la instancia AU-01, estas son las direcciones IP correspondientes:

  • 13.210.1.145
  • 13.211.70.159
  • 13.238.45.54
  • 52.65.73.167
  • 54.153.242.239
  • 54.206.45.213

Para la instancia ID-01, estas son las direcciones IP correspondientes:

  • 108.136.157.246
  • 108.137.30.207
  • 16.78.128.71
  • 16.78.14.134
  • 16.78.162.208
  • 43.218.73.35

Para la instancia JP-01, estas son las direcciones IP correspondientes:

  • 13.159.155.212
  • 54.199.221.241
  • 13.192.23.16
  • 54.250.120.139
  • 18.181.114.232
  • 3.114.38.100

Para la instancia KR-01, estas son las direcciones IP correspondientes:

  • 43.200.215.4
  • 52.79.67.175
  • 52.79.113.60
  • 3.34.212.92
  • 54.116.134.231
  • 3.37.197.225

Uso de la lista de IP permitidas con Amazon S3

Cuando uses contenido conectado para recuperar archivos de Amazon S3, configura tu contenedor para permitir solicitudes HTTP GET no autenticadas desde las direcciones IP de Braze.

  1. Añade una política de contenedor con condiciones de IP: Concede s3:GetObject en los objetos de tu contenedor con Principal: "*" y una condición IpAddress que utilice los rangos de IP de Braze para tu instancia. No necesitas establecer ACL de lectura pública en los objetos individuales.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": ["{YOUR_BRAZE_IP_RANGE}"]
        }
      }
    }
  ]
}

Sustituye {YOUR_BRAZE_IP_RANGE} por los rangos de IP de Braze para tu instancia listados en Lista de IP permitidas del contenido conectado. Puedes añadir uno o más rangos como valores separados en el array aws:SourceIp.

  1. Revisa la configuración de bloqueo de acceso público de S3: Las políticas de contenedor que usan Principal: "*" son tratadas como acceso público por AWS, incluso con condiciones de IP. Es posible que necesites permitir el acceso público basado en políticas de contenedor mientras mantienes bloqueado el acceso público basado en ACL.

  2. Usa la URL del objeto S3 en tu etiqueta de contenido conectado: Haz referencia al objeto con su URL estándar de S3 (por ejemplo, https://your-bucket.s3.amazonaws.com/path/to/object.json).

Para obtener más información sobre políticas de contenedor y claves de condición, consulta la documentación de AWS.

Encabezados de solicitud salientes

Braze añade los siguientes encabezados a las solicitudes salientes de contenido conectado. La mayoría se establecen solo cuando no los has proporcionado previamente en la etiqueta. Los encabezados que proporcionas con :headers, credenciales u opciones de etiqueta se envían tal cual.

Encabezado Cuándo lo establece Braze
User-Agent Si no lo has establecido previamente, Braze envía Braze Sender <version>. La cadena de versión puede cambiar. Si filtras el tráfico por User-Agent, permite todos los valores que comiencen con Braze Sender. Para enviar un valor consistente, establece User-Agent en :headers.
X-Braze-Sender-Version Siempre se establece con la versión del remitente de contenido conectado.
Accept-Encoding Si no lo has establecido previamente, Braze envía gzip.
Authorization Si la URL incluye un nombre de usuario y una contraseña (user:pass@host), Braze añade un encabezado Authorization de tipo Basic derivado de esas credenciales. Un encabezado Authorization explícito lo sobrescribe. Prefiere :basic_auth o :headers en lugar de incluir credenciales en la URL.
Host Nombre de host de la URL de la solicitud (por ejemplo, www.example.com para https://www.example.com/abc/123), a menos que establezcas un encabezado Host.
Content-Length Tamaño del cuerpo de la solicitud en bytes cuando hay un cuerpo presente.
BrazeToBraze Se establece como true solo para solicitudes a endpoints REST de Braze. Se omite para otros destinos.

Las solicitudes de webhook también envían un User-Agent que comienza con Braze Sender cuando no has establecido ese encabezado.

Solución de problemas

Si tu llamada de contenido conectado no se muestra correctamente o no se muestra en absoluto, comprueba los siguientes detalles:

  • Inspecciona la solicitud y la respuesta en vivo: Utiliza el depurador de contenido conectado en Vista previa y prueba.
  • Confirma que se realizó una llamada de contenido conectado: Puedes comprobar que se realizó una llamada en la pestaña de historial de mensajes. También puedes enviar una prueba con una única solicitud de contenido conectado.
  • Verifica a través de Postman o una solicitud CURL si la solicitud ideal tiene éxito: Si la solicitud funciona y devuelve una respuesta, compara la solicitud en detalle (incluidos los encabezados). Confirma que los encabezados están capturados en pares clave-valor con comillas dobles.
  • Valida que la autorización se gestiona correctamente: Confirma que se utiliza la opción :basic_auth/:auth_credentials y que se ha añadido la autorización de contenido conectado a la configuración del espacio de trabajo de contenido conectado. A veces, la URL de contenido conectado requiere encabezados más allá de la autenticación que necesitan ser introducidos.
  • Verifica que los datos están en el formato esperado: Para el cuerpo de la respuesta, Braze analiza JSON válido y lo convierte en un objeto Liquid; de lo contrario, la respuesta se trata como texto plano (incluido HTML). La opción :content_type establece los encabezados Content-Type y Accept de salida en tu solicitud y no afecta al análisis de la respuesta. Para el :body de la solicitud, si tu JSON contiene espacios, sigue las indicaciones de la sección Proporcionar cuerpo JSON.
  • Confirma que los datos se han analizado correctamente: Comprueba que el Liquid referencia correctamente el campo esperado. Para JSON anidado, utiliza {{sampleresult.data[0].sample_field}} para apuntar al campo anidado deseado. Puedes comprobar las propiedades del JSON anidado imprimiendo el resultado esperado con RESPONSE:{{sampleresult.data}}.
  • Comprueba el código de estado de la respuesta: El código de estado de la respuesta debe ser un código 2XX. El contenido conectado no tiene forma de consumir la respuesta cuando el código no es 2XX.

Genera una vista previa en Vista previa y prueba, luego selecciona Ver detalles para abrir el depurador de contenido conectado. El depurador muestra los encabezados de tu etiqueta de contenido conectado. Para los encabezados que Braze añade a la solicitud saliente, consulta Encabezados de solicitud saliente.

También puedes verificar que la etiqueta Liquid incluya los parámetros que tu endpoint espera (por ejemplo, :method, :headers, :content_type, :body y :basic_auth cuando sea necesario). Si dependes de la clave de código de estado HTTP en un objeto JSON guardado, el endpoint debe devolver un objeto JSON y un estado 2XX.

Para tasas de error elevadas de tu host, revisa Detección de hosts en mal estado y Volumen de llamadas de contenido conectado.

Codificación de ampersand en solicitudes POST de correo electrónico

En los mensajes de correo electrónico, el análisis HTML convierte automáticamente los ampersands (&) dentro de los bloques {% capture %} a &amp;. Para las solicitudes POST application/x-www-form-urlencoded, esto hace que la solicitud envíe nombres de parámetros con un prefijo amp; (por ejemplo, amp;username), lo que puede interrumpir la llamada a la API.

Para solucionar este problema, utiliza el filtro replace para eliminar el prefijo amp; antes de pasar el cuerpo a :body:

{% capture body_with_amps %}
grant_type=client_credentials&username=test&password=test
{% endcapture %}
{% connected_content https://api.example.com/token
   :method post
   :body {{body_with_amps | replace: "amp;", ""}}
   :content_type application/x-www-form-urlencoded
   :save token
%}

Preguntas frecuentes

¿Por qué falla el contenido conectado cuando mi endpoint devuelve una redirección (301 o 302)?

Una redirección puede hacer que el contenido conectado se muestre en blanco en la vista previa o en el envío, o que se registre un error en el registro de actividad de mensajes con el código de estado HTTP 301 o 302. Postman y otros clientes a menudo siguen las redirecciones automáticamente, por lo que una URL puede funcionar en Postman pero fallar en Braze.

Configura tu endpoint para que devuelva una respuesta 2xx (normalmente 200) con el cuerpo de la respuesta en la URL que Braze llama. Si esa URL devuelve una redirección, reemplázala con la URL de destino final.

Para verificaciones relacionadas cuando el contenido se muestra en blanco, consulta El contenido conectado no devuelve cuerpo de respuesta.

¿Por qué hay más llamadas de contenido conectado que usuarios o envíos?

Braze puede hacer la misma llamada a la API de contenido conectado más de una vez por destinatario para renderizar la carga útil del mensaje. Las cargas útiles de los mensajes pueden renderizarse varias veces por destinatario para validación, lógica de reintentos u otros propósitos internos. Sin embargo, ten en cuenta que solo una de las llamadas de contenido conectado completa un mensaje.

Es esperado que una llamada a la API de contenido conectado se realice más de una vez por destinatario, incluso si la lógica de reintentos no se utiliza en la llamada. Recomendamos establecer el límite de velocidad de cualquier mensaje que contenga contenido conectado o configurar tus servidores para que puedan manejar mejor el volumen esperado que contempla múltiples llamadas de contenido conectado por envío de mensaje.

Consulta Comprender el volumen de llamadas de contenido conectado y Mejores prácticas para endpoints de alto volumen para más detalles y mitigación.

¿Cómo funciona el límite de velocidad con el contenido conectado?

El contenido conectado no tiene su propio límite de velocidad. En su lugar, el límite de velocidad se basa en la tasa de envío de mensajes. Recomendamos establecer el límite de velocidad de mensajería más alto que el límite de velocidad previsto del contenido conectado si hay más llamadas de contenido conectado que mensajes enviados.

¿Cuál es el comportamiento de la caché?

Las solicitudes GET se almacenan en caché de forma predeterminada (consulta Respuestas en caché). Las solicitudes POST no se almacenan en caché de forma predeterminada, pero puedes habilitar el almacenamiento en caché añadiendo :cache_max_age a la llamada de contenido conectado. Esto puede reducir la carga en el endpoint cuando la misma solicitud POST (por ejemplo, una solicitud de token o contenido) se realizaría repetidamente dentro de la ventana de caché.

{% connected_content https://api.example.com/token :method post :body grant_type=client_credentials :cache_max_age 900 :save token %}

El almacenamiento en caché puede ayudar a reducir las llamadas duplicadas de contenido conectado, pero no garantiza una sola llamada por usuario. La duración de la caché es de entre cinco minutos y cuatro horas. Para todos los detalles, consulta Respuestas en caché.

¿Cuál es el comportamiento HTTP predeterminado del contenido conectado?

De manera predeterminada, el contenido conectado establecerá un encabezado Content-Type en una solicitud GET HTTP que realice a application/json con Accept: */*. Si necesitas otro tipo de contenido, especifícalo explícitamente añadiendo :content_type your/content-type a la etiqueta. Braze establecerá entonces tanto el encabezado Content-Type como el Accept en el tipo que especifiques.

{% connected_content https://api.sunrise-sunset.org/v2?lat=40.7128&lng=-74.0060&date=today :content_type application/json %}

De manera predeterminada, el contenido conectado realiza una solicitud HTTP GET a la URL especificada. Para realizar una solicitud POST en su lugar, especifica :method post.

Opcionalmente, puedes proporcionar un cuerpo POST especificando :body seguido de una cadena de consulta con el formato key1=value1&key2=value2&... o una referencia a los valores capturados. El tipo de contenido se establece de manera predeterminada en application/x-www-form-urlencoded. Si especificas :content_type application/json y proporcionas un cuerpo con codificación URL de formulario como key1=value1&key2=value2, Braze codificará automáticamente el cuerpo en JSON antes de enviarlo.

El contenido conectado tampoco almacena en caché las llamadas POST de forma predeterminada. Puedes actualizar este comportamiento añadiendo :cache_max_age a la llamada POST de contenido conectado.

{% connected_content https://example.com/api/endpoint :method post :body key1=value1&key2=value2 %}
{% connected_content https://example.com/api/endpoint :method post :body key1=value1&key2=value2 :content_type application/json %}

¿Qué sucede si uso la misma llamada de contenido conectado en varios lugares?

Cada etiqueta de contenido conectado se evalúa por separado, incluso si varias etiquetas usan la misma URL y los mismos parámetros. Cuando la URL y la configuración de caché lo permiten, las solicitudes idénticas pueden servirse desde la caché en lugar de desencadenar una nueva solicitud saliente (consulta Respuestas en caché para más detalles).

New Stuff!