Skip to content

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, usa la etiqueta {% connected_content %}. Con esta etiqueta, asigna o declara variables usando :save. Los aspectos de estas variables pueden referenciarse posteriormente en el mensaje con Liquid.

Desglose de la llamada a la API

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

1
2
{% 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 mientras renderiza 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 horarios 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:

1
2
3
4
5
6
{
  "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, haz referencia a cada campo directamente desde ese objeto.

1
2
3
{{result.sunrise}}
{{result.sunset}}
{{result.tzid}}

Usa este patrón siempre que guardes JSON desde contenido conectado:

  1. Guarda la respuesta de la API con :save.
  2. Encuentra el campo que deseas en la respuesta JSON.
  3. Haz referencia a él 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 devuelva 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.

1
2
3
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 solicitudes GET y POST.

Gestión de errores

Si la URL no está disponible y llega a una página 404, Braze renderiza 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 connected es nulo y luego abortar condicionalmente el mensaje. Braze solo permite URLs que se comunican a través del puerto 80 (HTTP) y 443 (HTTPS).

Detección de host no saludable

El contenido conectado emplea un mecanismo de detección de host no saludable para detectar cuándo el host de destino experimenta una alta tasa de lentitud significativa o sobrecarga, lo que resulta en tiempos de espera agotados, 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 causando dificultades al 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 sondea la salud del host mediante un pequeño número de solicitudes antes de reanudar las solicitudes a velocidad completa si se determina que el host está saludable. Si el host aún no está saludable, Braze espera otro minuto antes de intentarlo de nuevo.

Si las solicitudes al host de destino son detenidas por el detector de host no saludable, Braze continúa renderizando mensajes y siguiendo tu lógica de Liquid como si hubiera recibido un código de respuesta de error. Si deseas asegurarte de que estas solicitudes de contenido conectado se reintenten cuando son detenidas por el detector de host no saludable, 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 no saludable puede estar causando problemas, contacta con soporte de Braze.

Límites de velocidad (429) versus detección de host no saludable

Los siguientes son mecanismos diferentes:

  • 429 Too Many Requests: Tu endpoint (o un servicio upstream) 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 renderizarse 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 configuraste. 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 no saludable: 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 conteo 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 con solicitudes de webhooks y contenido conectado. Para evitar activar la detección de host no saludable, 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 cuentan para el 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 de forma secuencial (de arriba a abajo) durante el renderizado de Liquid. Esto significa que las llamadas posteriores pueden hacer referencia a variables establecidas por llamadas anteriores. En este ejemplo, la primera llamada recupera datos de usuario y la segunda llamada utiliza esos datos para obtener las preferencias:

1
2
{% 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 de forma secuencial dentro de un solo mensaje, los mensajes se envían en paralelo en tus Campaigns y Canvas. Los envíos de alto volumen pueden generar un tráfico de solicitudes significativo hacia tus endpoints durante los periodos de envío máximo. Para gestionar y limitar ese tráfico, incluidos 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 para más solicitudes que el número de destinatarios o envíos:

  • Estima la carga máxima: Usa 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 sin formato y páginas móviles aceleradas), por lo que destinatarios × 2 o × 3 se utiliza a menudo como estimación conservadora.
  • Usa el almacenamiento en caché cuando sea apropiado: Las solicitudes GET se almacenan en caché de forma predeterminada. Para las 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 por solicitud). Consulta Almacenamiento en caché de respuestas y las preguntas frecuentes sobre el almacenamiento en caché de 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 aproximaciones, no perfectas, porque las solicitudes de contenido conectado no tienen una relación 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.

Dale 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, nombre de usuario y contraseña.

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

1
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. Utiliza los encabezados de solicitud o una etiqueta {% connected_content %} dentro de un campo de encabezado o cuerpo del webhook cuando necesites recuperar secretos para esa llamada.

Uso de autenticación por token

Al utilizar contenido conectado de Braze, es posible que algunas API requieran un token en lugar de un nombre de usuario y 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. Luego, 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:

1
2
3
4
5
6
7
8
9
{% 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 recuperación de un token de acceso que luego se puede usar para autenticar el endpoint de la API al que deseas acceder.

Paso 1: Recuperar el token de acceso

El siguiente ejemplo ilustra la recuperación y el almacenamiento de 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 obtener más información.

1
2
3
4
5
6
7
8
9
10
{% 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 recuperado

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

1
2
3
4
5
6
7
8
9
{% 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 configurados anteriormente no serán visibles.

Lista de IP permitidas de 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 realmente provienen de Braze, añadiendo una capa de seguridad.

Braze enviará solicitudes de contenido conectado desde los siguientes rangos de IP. Los rangos listados se añaden automática y dinámicamente a cualquier clave de API que haya sido seleccionada para la lista de permitidas.

Braze tiene un conjunto reservado de IP que se utilizan 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 mantenimiento, si es necesario, sin afectar a los clientes. Braze puede usar una, un subconjunto o todas las siguientes IP listadas al realizar solicitudes de contenido conectado.

Si las solicitudes de contenido conectado devuelven constantemente 403 Forbidden y la autenticación está configurada correctamente, añade estas IP a la lista de permitidas 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: Otorga 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 objetos individuales.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
  "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}"]
        }
      }
    }
  ]
}

Reemplaza {YOUR_BRAZE_IP_RANGE} con los rangos de IP de Braze para tu instancia listados en Lista de IP permitidas de 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: Referencia el objeto con su URL estándar de S3 (por ejemplo, https://your-bucket.s3.amazonaws.com/path/to/object.json).

Para 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: Usa 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 historial de mensajes. También puedes enviar una prueba con una sola solicitud de contenido conectado.
  • Verifica a través de Postman o una solicitud CURL que la solicitud ideal tenga éxito: Si la solicitud funciona y devuelve una respuesta, compara la solicitud en detalle (incluyendo 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 usa 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 adicionales además de la autenticación que deben ingresarse.
  • Verifica que los datos estén en un formato esperado: Para el cuerpo de la respuesta, Braze analiza JSON válido en un objeto Liquid; de lo contrario, la respuesta se trata como texto sin formato (incluyendo 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 en la sección Proporcionar cuerpo JSON.
  • Confirma que los datos se han analizado correctamente: Comprueba que el Liquid hace referencia correctamente al campo esperado. Para JSON anidado, usa {{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 altas desde tu host, revisa Detección de host no saludable 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 causa 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, usa el filtro replace para eliminar el prefijo amp; antes de pasar el cuerpo a :body:

1
2
3
4
5
6
7
8
9
{% 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 aparezca en blanco en la vista previa o 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 suelen seguir 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 respuesta en la URL a la que Braze realiza la llamada. Si esa URL devuelve una redirección, reemplázala con la URL de destino final.

Para comprobaciones 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 realizar 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 fines internos. Sin embargo, ten en cuenta que solo una de las llamadas de contenido conectado completa un mensaje.

Es esperable 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 configurar 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 tiene en cuenta 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 cambio, el límite de velocidad se basa en la tasa de envío de mensajes. Recomendamos configurar el límite de velocidad de mensajería por encima de tu límite de velocidad previsto para el contenido conectado si hay más llamadas de contenido conectado que mensajes enviados.

¿Cuál es el comportamiento de almacenamiento en caché?

Las solicitudes GET se almacenan en caché de forma predeterminada (consulta Almacenamiento en caché de respuestas). 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 del endpoint cuando la misma solicitud POST (por ejemplo, una solicitud de token o de contenido) se realizaría repetidamente dentro de la ventana de caché.

1
{% 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 más detalles, consulta Almacenamiento en caché de respuestas.

¿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.

1
{% 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.

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

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

Cada etiqueta de contenido conectado se evalúa por separado, incluso si varias etiquetas utilizan 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 generar una nueva solicitud saliente (consulta Almacenamiento en caché de respuestas para más detalles).

New Stuff!