Skip to content

Variáveis locais de Conteúdo conectado

Esta página oferece uma visão geral das variáveis locais de Conteúdo conectado e como usá-las e armazená-las.

A Braze faz uma requisição GET padrão no momento do envio para o endpoint especificado na tag connected_content. Se o endpoint retornar JSON, ele será automaticamente analisado e armazenado em uma variável chamada connected. Se o endpoint retornar texto, ele será inserido diretamente na mensagem no lugar da tag connected_content.

Se você quiser salvar a resposta em uma variável, é recomendável retornar objetos JSON. E se você quiser que a resposta do Conteúdo conectado substitua a tag pelo texto, certifique-se de que a resposta não seja um JSON válido (conforme definido por json.org)

Você também pode especificar :save nome_da_sua_variavel após a URL para salvar os dados com outro nome. Por exemplo, a seguinte tag connected_content armazenará a resposta em uma variável local chamada localweather (você pode salvar múltiplas variáveis JSON de connected_content):

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

Metaweather é uma API gratuita de clima que usa um “Where-on-Earth ID” para retornar o clima de uma área. Use este código apenas para fins de teste e aprendizado.

A variável armazenada só pode ser acessada dentro do campo que contém a requisição connected_content. Por exemplo, se você quiser usar a variável localweather tanto no campo de mensagem quanto no campo de título, você deve fazer a requisição connected_content em ambos os campos. Se a requisição for idêntica, a Braze usará os resultados em cache, em vez de fazer uma segunda requisição ao servidor de destino. No entanto, chamadas de Conteúdo conectado feitas via HTTP POST não são armazenadas em cache por padrão e farão uma segunda requisição ao servidor de destino. Se você quiser adicionar cache a chamadas POST, consulte a opção cache_max_age.

Análise de JSON

O Conteúdo conectado interpretará qualquer resultado formatado em JSON como uma variável local quando você especificar :save. Por exemplo, um endpoint de Conteúdo conectado relacionado ao clima retorna o seguinte objeto JSON, que você armazena em uma variável 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"
  }

Você pode verificar se está chovendo ou não referenciando {{localweather.consolidated_weather[0].weather_state_name}}, que, se usado neste objeto, retornaria Clear. Se você também quiser personalizar com o nome do local resultante, {{localweather.title}} retorna New York.

A imagem a seguir ilustra o tipo de destaque de sintaxe que você deve ver no dashboard se estiver configurando tudo corretamente. Ela também demonstra como você pode aproveitar o exemplo de requisição 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 %}

Se a API respondesse com {{localweather.consolidated_weather[0].weather_state_name}} retornando Rain, o usuário receberia esta notificação por push.

Notificação por push com a mensagem "It's raining! Grab an umbrella!"

Por padrão, o conteúdo conectado definirá um Content-Type cabeçalho em uma solicitação HTTP GET que ele faz para application/json com Accept: */*. Se precisar de outro tipo de conteúdo, especifique-o explicitamente adicionando :content_type your/content-type à tag. A Braze definirá então tanto o cabeçalho Content-Type quanto o cabeçalho Accept para o tipo que você especificar.

1
{% connected_content http://numbersapi.com/random/trivia :content_type application/json %}

HTTP POST

Por padrão, o conteúdo conectado faz uma solicitação HTTP GET para a URL especificada. Para fazer uma solicitação POST, especifique :method post.

Você pode opcionalmente fornecer um corpo POST especificando :body seguido por uma consulta string do formato key1=value1&key2=value2&... ou uma referência aos valores capturados. O tipo de conteúdo padrão é application/x-www-form-urlencoded. Se você especificar :content_type application/json e fornecer um corpo codificado em formulário, como key1=value1&key2=value2, a Braze codificará automaticamente o corpo em JSON antes de enviar.

O Conteúdo Conectado também não armazena em cache chamadas POST por padrão. Você pode atualizar esse comportamento adicionando :cache_max_age à chamada POST do Conteúdo 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 %}

Fornecendo um corpo JSON

Se você quiser fornecer seu próprio corpo JSON, pode escrevê-lo inline se não houver espaços. Se o corpo tiver espaços, você deve usar uma instrução assign ou capture. Ou seja, qualquer uma dessas três opções é aceitável:

Inline: espaços não permitidos
1
{% connected_content https://example.com/api/endpoint :method post :body {"foo":"bar","baz":"{{1|plus:1}}"} :content_type application/json %}
Corpo em uma instrução capture: espaços permitidos
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
%}
Corpo em uma instrução assign: espaços permitidos
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 status HTTP

Você pode utilizar o status HTTP de uma chamada de Conteúdo conectado salvando-o primeiro como uma variável local e depois usando a chave __http_status_code__. Por exemplo:

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!