Skip to content

Variables locales de Contenido conectado

Esta página ofrece un resumen de las variables locales de Contenido conectado y cómo usarlas y almacenarlas.

Braze realiza una solicitud GET estándar en el momento del envío al punto de conexión especificado dentro de la etiqueta connected_content. Si el punto de conexión devuelve JSON, se analiza automáticamente y se almacena en una variable llamada connected. Si el punto de conexión devuelve texto, se insertará directamente en el mensaje en lugar de la etiqueta connected_content.

Si quieres guardar tu respuesta en una variable, se recomienda devolver objetos JSON. Y si quieres que la respuesta de Contenido conectado reemplace la etiqueta con el texto, asegúrate de que la respuesta no sea JSON válido (según la definición de json.org).

También puedes especificar :save your_variable_name después de la URL para guardar los datos con otro nombre. Por ejemplo, la siguiente etiqueta connected_content almacenará la respuesta en una variable local llamada localweather (puedes guardar múltiples variables JSON de connected_content):

1
{% connected_content https://www.metaweather.com/api/location/2459115/ :save localweather %}

Metaweather es una API meteorológica gratuita que utiliza un “Where-on-Earth ID” para devolver el clima de una zona. Usa este código solo con fines de prueba y aprendizaje.

Solo se puede acceder a la variable almacenada dentro del campo que contiene la solicitud connected_content. Por ejemplo, si quieres usar la variable localweather tanto en el campo del mensaje como en el del título, debes hacer la solicitud connected_content en ambos campos.

Las solicitudes GET generalmente se almacenan en caché de forma predeterminada, con algunas excepciones (como URLs que incluyen atributos de usuario de alta cardinalidad, :no_cache o cuerpos de respuesta mayores de 1 MB). Cuando solicitudes GET idénticas aparecen en más de un campo, Braze reutiliza la respuesta almacenada en caché en lugar de llamar al punto de conexión de nuevo. Para más detalles sobre el comportamiento de la caché, consulta Almacenamiento en caché de respuestas.

Las llamadas de Contenido conectado realizadas a través de HTTP POST no se almacenan en caché de forma predeterminada. Para almacenar en caché las respuestas POST, añade :cache_max_age a la etiqueta. Consulta Configuración predeterminada de caché.

Análisis de JSON

Contenido conectado interpretará cualquier resultado con formato JSON como una variable local cuando especifiques :save. Por ejemplo, un punto de conexión de Contenido conectado relacionado con el clima devuelve el siguiente objeto JSON, que almacenas en una variable local localweather especificando :save localweather.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
  "consolidated_weather": [
    {
      "id": 5.8143475362693e+15,
      "weather_state_name": "Clear",
      "weather_state_abbr": "c",
      "wind_direction_compass": "WSW",
      "created": "2017-06-12T14:14:46.268110Z",
      "applicable_date": "2017-06-12",
      "min_temp": 22.511666666667,
      "max_temp": 31.963333333333,
      "the_temp": 27.803333333333,
      "wind_speed": 6.8884690250312,
      "wind_direction": 251.62921994166,
      "air_pressure": 1021.335,
      "humidity": 50,
      "visibility": 14.945530601288,
      "predictability": 68
    },
    .
    .
    .
    "title": "New York",
    "location_type": "City",
    "woeid": 2459115,
    "latt_long": "40.71455,-74.007118",
    "timezone": "US\/Eastern"
  }

Puedes comprobar si está lloviendo o no haciendo referencia a {{localweather.consolidated_weather[0].weather_state_name}}, que si se usa con este objeto devolvería Clear. Si también quieres personalizar con el nombre de la ubicación resultante, {{localweather.title}} devuelve New York.

La siguiente imagen ilustra el tipo de resaltado de sintaxis que deberías ver en el dashboard si estás configurando las cosas correctamente. También muestra cómo podrías aprovechar la solicitud de ejemplo de connected_content.

1
2
3
4
5
6
7
8
9
10
{% connected_content https://www.metaweather.com/api/location/search/?query={{custom_attribute.${customCity}}} :save locationjson %}
{% connected_content https://www.metaweather.com/api/location/{{locationjson[0].woeid}}/ :save localweather %}

{% if {{localweather.consolidated_weather[0].weather_state_name}} == 'Rain' %}
It's raining! Grab an umbrella!
{% elsif {{localweather.consolidated_weather[0].weather_state_name}} == 'Clouds' %}
No sunscreen needed :)
{% else %}
Enjoy the weather!
{% endif %}

Si la API respondiera con {{localweather.consolidated_weather[0].weather_state_name}} devolviendo Rain, el usuario recibiría entonces esta notificación push.

Notificación push con el mensaje "It's raining! Grab an umbrella!"

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 %}

HTTP POST

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 %}

Proporcionar un cuerpo JSON

Si quieres proporcionar tu propio cuerpo JSON, puedes escribirlo en línea si no hay espacios. Si tu cuerpo tiene espacios, deberías usar una sentencia assign o capture. Es decir, cualquiera de estas tres opciones es aceptable:

En línea: no se permiten espacios
1
{% connected_content https://example.com/api/endpoint :method post :body {"foo":"bar","baz":"{{1|plus:1}}"} :content_type application/json %}
Cuerpo en una sentencia capture: se permiten espacios
1
2
3
4
{% capture postbody %}
{"foo": "bar", "baz": "{{ 1 | plus: 1 }}"}
{% endcapture %}
{% connected_content https://example.com/api/endpoint :method post :body {{postbody}} :content_type application/json %}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{% capture postbody %}
{
"ids":[ca_57832,ca_75869],"include":{"attributes":{"withKey":["daily_deals"]}}
}
{% endcapture %}

{% connected_content
    https://example.com/api/endpoint
    :method post
    :headers {
      "Content-Type": "application/json"
  }
  :body {{postbody}}
  :save result
%}
Cuerpo en una sentencia assign: se permiten espacios
1
2
{% assign postbody = '{"foo":"bar", "baz": "2"}' %}
{% connected_content https://example.com/api/endpoint :method post :body {{postbody}} :content_type application/json %}

Códigos de estado HTTP

Puedes utilizar el estado HTTP de una llamada de Contenido conectado guardándolo primero como una variable local y luego usando la clave __http_status_code__. Por ejemplo:

1
2
3
4
{% connected_content https://example.com/api/endpoint :save result %}
{% if result.__http_status_code__ != 200 %}
  {% abort_message('Connected Content returned a non-200 status code') %}
{% endif %}
New Stuff!