Variables locales de Contenu connecté
Cette page offre un aperçu des variables locales de Contenu connecté et explique comment les utiliser et les stocker.
Braze effectue une requête GET standard au moment de l’envoi vers l’endpoint spécifié dans la balise connected_content. Si l’endpoint renvoie du JSON, celui-ci est automatiquement analysé et stocké dans une variable appelée connected. Si l’endpoint renvoie du texte, celui-ci sera directement inséré dans le message à la place de la balise connected_content.
Si vous souhaitez enregistrer votre réponse dans une variable, il est recommandé de renvoyer des objets JSON. Et si vous souhaitez que la réponse du Contenu connecté remplace la balise par le texte, assurez-vous que la réponse n’est pas du JSON valide (tel que défini par json.org).
Vous pouvez également spécifier :save your_variable_name après l’URL pour enregistrer les données sous un autre nom. Par exemple, la balise connected_content suivante stockera la réponse dans une variable locale appelée localweather (vous pouvez enregistrer plusieurs variables JSON connected_content) :
1
{% connected_content https://www.metaweather.com/api/location/2459115/ :save localweather %}
Metaweather est une API météo gratuite qui utilise un identifiant « Where-on-Earth ID » pour renvoyer la météo d’une zone. Utilisez ce code uniquement à des fins de test et d’apprentissage.
La variable stockée n’est accessible que dans le champ qui contient la requête
connected_content. Par exemple, si vous souhaitez utiliser la variablelocalweatherà la fois dans le champ du message et dans le champ du titre, vous devez effectuer la requêteconnected_contentdans les deux champs. Si la requête est identique, Braze utilisera les résultats mis en cache plutôt que d’effectuer une seconde requête vers le serveur de destination. Cependant, les appels de Contenu connecté effectués via HTTP POST ne sont pas mis en cache par défaut et effectueront une seconde requête vers le serveur de destination. Si vous souhaitez ajouter la mise en cache aux appels POST, consultez l’optioncache_max_age.
Analyse du JSON
Le Contenu connecté interprète tout résultat au format JSON dans une variable locale lorsque vous spécifiez :save. Par exemple, un endpoint de Contenu connecté lié à la météo renvoie l’objet JSON suivant, que vous stockez dans une variable locale localweather en spécifiant :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"
}
Vous pouvez vérifier s’il pleut ou non en référençant {{localweather.consolidated_weather[0].weather_state_name}}, qui, utilisé sur cet objet, renverrait Clear. Si vous souhaitez également personnaliser avec le nom de la localisation résultante, {{localweather.title}} renvoie New York.
L’image suivante illustre le type de coloration syntaxique que vous devriez voir dans le tableau de bord si vous avez correctement configuré les choses. Elle montre également comment vous pourriez exploiter l’exemple de requête 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 l’API répondait avec {{localweather.consolidated_weather[0].weather_state_name}} renvoyant Rain, l’utilisateur recevrait alors cette notification push.

Par défaut, le contenu connecté définit un Content-Type en-tête d’une demande GET HTTP que cela rend application/json avec Accept: */*. Si vous avez besoin d’un autre type de contenu, spécifiez-le explicitement en ajoutant :content_type your/content-type à la balise. Braze définira alors l’en-tête Type de contenu et Accepter au type que vous spécifiez.
1
{% connected_content http://numbersapi.com/random/trivia :content_type application/json %}
HTTP POST
Par défaut, le contenu connecté fait une demande HTTP GET à l’URL spécifiée. Pour effectuer une demande POST, précisez :method post.
Vous pouvez éventuellement fournir un corps POST en spécifiant :body suivi d’une chaîne de caractères de requête du format key1=value1&key2=value2&... ou une référence à des valeurs capturées. Type de contenu par défaut application/x-www-form-urlencoded. Si vous spécifiez :content_type application/json et fournir un corps sous forme de code-urétroté, comme key1=value1&key2=value2, Braze jSON automatiquement le code de l’organisme avant d’envoyer.
Par défaut, le contenu connecté ne met pas non plus en cache les appels POST. Vous pouvez modifier ce comportement en ajoutant :cache_max_age à l’appel POST du contenu connecté.
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 %}
Fournir un payload JSON
Si vous souhaitez fournir votre propre payload JSON, vous pouvez l’écrire en ligne s’il ne contient pas d’espaces. Si votre payload contient des espaces, vous devez utiliser une instruction assign ou capture. Autrement dit, les trois approches suivantes sont acceptables :
En ligne : espaces non autorisés
1
{% connected_content https://example.com/api/endpoint :method post :body {"foo":"bar","baz":"{{1|plus:1}}"} :content_type application/json %}
Corps dans une instruction capture : espaces autorisés
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
%}
Corps dans une instruction assign : espaces autorisés
1
2
{% assign postbody = '{"foo":"bar", "baz": "2"}' %}
{% connected_content https://example.com/api/endpoint :method post :body {{postbody}} :content_type application/json %}
Codes de statut HTTP
Vous pouvez utiliser le statut HTTP d’un appel de Contenu connecté en l’enregistrant d’abord en tant que variable locale, puis en utilisant la clé __http_status_code__. Par exemple :
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 %}

Cette clé ne sera automatiquement ajoutée à l’objet de Contenu connecté que si l’endpoint renvoie un objet JSON valide et une réponse 2XX. Si l’endpoint renvoie un tableau ou un autre type, cette clé ne pourra pas être automatiquement définie dans la réponse.