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 (AMP) (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, puedes asignar o declarar variables usando :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 usa la API Sunrise-Sunset e incluye la hora del 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 (en 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, puedes referenciar 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. 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, puedes tener 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.

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.

Manejo de errores

Si la URL no está disponible y llega a una página 404, Braze muestra 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 reintento.

Si el endpoint devuelve JSON, puedes detectarlo comprobando si el valor connected es nulo y luego cancelar 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 problemas 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 utilizando 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 sigue sin estar 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 quieres asegurarte de que estas solicitudes de contenido conectado se reintenten cuando son detenidas por el detector de host no saludable, usa 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 múltiples veces por destinatario (por ejemplo, para HTML de correo electrónico, texto plano y AMP), 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 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 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 webhook 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 cuenta para tu uso de punto 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.

Cómo se procesan las llamadas de contenido conectado

Las llamadas de contenido conectado dentro de una sola 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 llamadas anteriores. En este ejemplo, la primera llamada recupera datos de usuario y la segunda llamada utiliza esos datos para obtener 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

Aunque 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 a tus endpoints durante los períodos de envío pico. 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 Mejores prácticas 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: 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 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 periodo (por ejemplo, un token o contenido que no cambia por solicitud). Consulta Almacenamiento en caché de respuestas y las preguntas frecuentes sobre 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 aplica límites de velocidad al contenido conectado en sí. Estos son valores aproximados, no exactos, 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.

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

Después 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. 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 contenido conectado de Braze, es posible que algunas 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. 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.

Después 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 obtención de un token de acceso que luego puede utilizarse 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 puede utilizarse 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.

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 obtenido

Una vez guardado el token, se puede insertar dinámicamente mediante plantillas 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 establecidos 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 obtener 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 enumerados se añaden automática y dinámicamente a cualquier clave de API que se haya habilitado 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 utilizar una, un subconjunto o todas las siguientes IP enumeradas 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 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 utilices 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 enumerados 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 utilizan 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 más información sobre políticas de contenedor y claves de condición, consulta la documentación de AWS.

Encabezado User-Agent

Braze incluye un encabezado User-Agent en todas las solicitudes de contenido conectado y webhook que es similar al siguiente:

1
Braze Sender 75e404755ae1270441f07eb238f0faf25e44dfdc

Solución de problemas

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

  • 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 hacer un envío de prueba de una sola 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 deben introducirse.
  • 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 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 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.

También puedes usar Webhook.site para solucionar problemas de tus llamadas de contenido conectado y diagnosticar problemas con los encabezados de solicitud, el cuerpo de la solicitud y otra información que se envía en la llamada.

  1. Cambia la URL en tu llamada de contenido conectado por la URL única generada en el sitio.
  2. Previsualiza y prueba tu Campaign o paso en Canvas para ver las solicitudes llegar a este sitio web.

También puedes verificar que la etiqueta de 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 del 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 de 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 &. Para 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 romper 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é 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 de un 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 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 configurar el límite de velocidad de mensajería más alto que 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 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 que se realice 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 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 Almacenamiento en caché de respuestas para más detalles).

New Stuff!