HTTP Request
Realiza uma chamada HTTP e retorna o resultado em uma variável de contexto.
Atenção: A biblioteca request está deprecated, portanto opte por utilizar flavor como axios
Estrutura
[
    {
        "name": "http_request",
        "parameters": {
            "config": {
                "url": "https://api.altu.com.br/teste",
                "data": {
                    "param1": "value1",
                    "param2": "value2",
                    "param3": "<? $var_contexto ?>",
                },
                "method": "POST",
                "headers": {
                    "Authorization": "meu_token"
                }
            },
            "flavor": "axios",
            "before_action_messages": [
                "Mensagem 1",
                "Mensagem 2"
            ]
        },
        "result_variable": "api_response"
    }
]name: http_request
parameters:
config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca
axiosdo NodeJS). Abaixo segue exemplo:
url: url da chamada
HTTPdata: parâmetros da chamada
HTTPmethod: método da chamada
HTTPheaders: cabeçalho da chamada
HTTPAuthorization: token de autenticação da chamada
flavor: biblioteca que será usada para realizar o request, neste caso,
axiosbefore_action_messages: mensagens para serem enviadas ao usuário antes da execução da ação
result_variable: variável de contexto que receberá a resposta da chamada
HTTP
  {
    "statusCode": 200,
    "headers": "<headers do retorno da requisição>",
    "body": "<body do retorno da requisição>"
  }[
    {
        "name": "http_request",
        "parameters": {
            "config": {
                "url": "https://viacep.com.br/ws/<?$cep?>/json",
            },
            "flavor": "axios",
            "before_action_messages": [
                "Estamos solicitando a consulta",
                "Aguarde por favor"
            ]
        },
        "result_variable": "api_consulta"
    }
]No exemplo acima, não são necessários os parâmetros body e headers. É realizada uma consulta ao webservice ViaCEP. Foi passada uma variável de contexto $cep na URL e o retorno é o JSON abaixo:
{
    "body": {
        "uf": "SP",
        "cep": "01243-001",
        "gia": "1004",
        "ibge": "3550308",
        "bairro": "Consolação",
        "unidade": "",
        "localidade": "São Paulo",
        "logradouro": "Rua Sergipe",
        "complemento": "lado ímpar"
    },
    "code": 200,
    "headers": {
        "date": "Fri, 08 Nov 2019 17:09:10 GMT",
        "pragma": "public",
        "server": "nginx/1.16.1",
        "expires": "Fri, 08 Nov 2019 18:09:10 GMT",
        "connection": "close",
        "content-type": "application/json; charset=utf-8",
        "cache-control": "max-age=3600, public",
        "transfer-encoding": "chunked",
        "access-control-max-age": "86400",
        "access-control-allow-origin": "*",
        "access-control-allow-headers": "Content-Type, X-Request-With, X-Requested-By",
        "access-control-allow-methods": "GET, OPTIONS",
        "access-control-allow-credentials": "true"
    }
}Supondo que deseja manipular essas informações, bastaria acessá-las percorrendo a variável de contexto que, no parâmetro result_variable, armazenou o JSON de resposta. Por exemplo:
<? $api_consulta.body.logradouro ?>
<? $api_consulta.body.bairro ?>
<? $api_consulta.body.localidade ?>Uma chamada que possui um body e headers para autenticação de acesso.
[
    {
        "name": "http_request",
        "parameters": {
            "config": {
                "url": "https://api.altu.com.br/teste/consultapessoa",
                "data": {
                    "codigo": "1",
                    "nome_pessoa": "<? $nome_pessoa ?>"
                },
                "method": "POST",
                "headers": {
                    "Authorization": "AuZk16BNCHDvzcObTaUiVUnh6F0KJtuD"
                }
            },
            "flavor": "axios",
            "before_action_messages": [
                "Estamos solicitando a consulta",
                "Aguarde por favor"
            ]
        },
        "result_variable": "api_consulta"
    }
]HTTP_Request Async 
O Http Request async é uma opção para as ações de requisição assíncrona, ou seja, uma comunicação que não ocorre simultaneamente evitando falhas ou pausa no sistema. Por meio dele é possível utilizar duas flags: async e waitTime, que podem ser adicionadas dentro dos parâmetros do código.
A flag waitTime só pode ser utilizada juntamente com async e permite definir um tempo para realizar a chamada, ou seja, caso classifiquem "waitTime": 60 teremos um tempo de espera de 1 minuto antes que a chamada HTTP seja realizada.
No caso do async são aceitos os valores de true e false, caso não seja especificado será classificado como false por padrão e seguirá o mesmo padrão do http_request. Já no waitTime devem ser utilizados valores em segundos entre 0 e 900 (equivalente a 15 minutos).
Estrutura
[
    {
        "name": "http_request",
        "parameters": {
            "async": true,
            "config": {
                "url": "http://httpstat.us/500?sleep=500",
                "data": {
                    "param1": "value1"
                },
                "method": "POST"
            },
            "flavor": "axios",
            "waitTime": 30
        },
        "result_variable": "api_response"
    }
]Atributos
name: http_request
parameters:
async: default false. true or false
config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca
axiosdo NodeJS). Abaixo segue exemplo:
url: url da chamada
HTTPdata: parâmetros da chamada
HTTPmethod: método da chamada
HTTPflavor: biblioteca que será usada para realizar o request, neste caso,
axioswaitTime: valores de 0 a 900 (em segundos), quando
"async": true.
result_variable: variável de contexto que receberá a resposta da chamada
HTTP
Responses
Quando async for true o fluxo continua e o result_variable é preenchido com o status Pending, indicando que a requisição está em andamento, ao final da chamada da API é enviada uma nova mensagem atualizando o resultado como Done, ou seja, concluída com sucesso.
Informa que a requisição está em andamento

{
    "flags": {
        "saveContactEnabled": false
    },
    "system": {
        "current_node": null
    },
    "timezone": "America/Sao_Paulo",
    "persistent": {},
    "url_params": {
        "channel": "widget",
        "assistant_id": "29"
    },
    "lastUserInteractionDate": "2020-12-23 15:40:53",
    "api_response": {
        "status": "pending"
    }
}Indica que a chamada foi concluída com sucesso

{
    "flags": {
        "saveContactEnabled": false
    },
    "system": {
        "current_node": null
    },
    "timezone": "America/Sao_Paulo",
    "persistent": {},
    "url_params": {
        "channel": "widget",
        "assistant_id": "29"
    },
    "api_response": {
        "code": 200,
        "headers": {
            "date": "Wed, 23 Dec 2020 18:55:19 GMT",
            "content-type": "application/json; charset=utf-8",
            "transfer-encoding": "chunked",
            "connection": "close",
            "set-cookie": [
                "__cfduid=d14a667e80388165322084722;Path=/;hfsehshkdfxjjfkdjhjkdstat.us"
            ],
            "cache-control": "private",
            "vary": "Accept-Encoding",
            "x-aspnetmvc-version": "5.1",
            "access-control-allow-origin": "*",
            "access-control-expose-headers": "Link, Content-Range, Location, WWW-Authenticate, Proxy-Authenticate, Retry-After, Request-Context",
            "x-aspnet-version": "4.0.30319",
            "request-context": "appId=00000000000000000000000000000000a9",
            "x-powered-by": "ASP.NET",
            "cf-cache-status": "DYNAMIC",
            "cf-request-id": "0000000000000000000000000000000001",
            "report-to": "{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.00000000mpEjHj9kqDA%2FUg48Gq8b%2000000004800}",
            "nel": "{\"report_to\":\"cf-nel\",\"max_age\":604800}",
            "server": "cloudflare",
            "cf-ray": "60644bd41e084b40-GRU"
        },
        "body": {
            "code": 200,
            "description": "OK"
        },
        "status": "done"
    },
    "lastUserInteractionDate": "2020-12-23 16:55:19"
}Indica que algo de errado aconteceu no processo

{
    "flags": {
        "saveContactEnabled": false
    },
    "system": {
        "current_node": null
    },
    "timezone": "America/Sao_Paulo",
    "persistent": {},
    "url_params": {
        "channel": "widget",
        "assistant_id": "29"
    },
    "api_response": {
        "code": 500,
        "status": "error"
    },
    "lastUserInteractionDate": "2020-12-23 17:02:23"
}Exemplos
Após a conclusão da chamada HTTP um input.text é enviado ao assistente com a mensagem "ALTU_ASYNC_HTTP_RESPONSE", possibilitando o envio da resposta da API.

Filtro de resposta
Utilize filtros para obter respostas de APIs no Builder utilizando o JSONPATH-PLUS, basta adicionar o campo responseFilter com a expressão do que você gostaria de filtrar, como no exemplo:
Estrutura
[
    {
        "name": "http_request",
        "parameters": {
            "config": {
                "url": "https://viacep.com.br/ws/37500242/json"
            },
            "flavor": "axios",
            "responseFilter": "$..",
            "before_action_messages": [
                "Estamos solicitando a consulta",
                "Aguarde por favor"
            ]
        },
        "result_variable": "api_consulta"
    }
]Atributos
name: http_request
parameters:
config: configuração da chamada https que será feita. Deve conter a opção da biblioteca indicada no atributo flavor(biblioteca
axiosdo NodeJS). Abaixo segue exemplo:
url: url da chamada
HTTPflavor: biblioteca que será usada para realizar o request, neste caso,
axiosresponseFilter: expressão no formato JSONpath para filtrar a resposta da API
before_action_messages(opcional): Mensagem enviada para o usuário antes da execução a ação.
result_variable: variável de contexto que receberá a resposta da chamada
HTTP
Funcionalidades
^Busca por elemento igual da expressão~Seleciona o nome das propriedades (as array)Seletores possíveis
@null(),@boolean(),@number(),@string(),@array(),@object(),@integer( )Seletores para facilitar acesso a estruturas
@path/@parent/@property/@parentProperty/@root
Escaping
`: para utilizar caracteres reservados. ex:`$Em casos mais complexos também é possível utilizar:
@['...']/?@['...']
Tabela de sintaxe
Caracteres
Descrição
$
Raiz do objeto ou elemento
@
Objeto ou elemento atual
.
Operador para filhos do objeto
..
Operador descendente recursivo
*
Caractere coringa correspondendo a todos os objetos ou elementos, independentemente de seus nomes
[]
Operador subscrito
[, ]
Operador de união para nomes alternativos ou índices de matriz como um conjunto
[start:end:step]
Operador para dividir o array
?()
Aplica uma lógica de comparação (script)
Tabela de expressões
Caracteres
Descrição
$..
Retorna todos os dados de forma recursiva
$..*
Retorna todos os valores do primeiro nível da resposta da API
$..*~
Retorna todos os nomes dos campos do primeiro nível da resposta da API
$..nome
Retorna os valores encontrados para a variável nome dentro da resposta da API
$..[nome, cidade]
Retorna os valores encontrados para as variáveis nome e cidade dentro da resposta da API
$..nome[1]
Retorna o segundo nome dentro da resposta da API
$..nome[-1:]
Retorna o ultimo nome da resposta da API
$..book.*[?(@property !== "category")]
Retorna todos os campos dos livros, tirando o campo 'category'
Exemplos:
1 - Assumindo uma resposta de API sendo:
"body": {
    "cep": "37500-242",
    "logradouro": "Rua Comendador Antônio Rodrigues de Oliveira",
    "complemento": "",
    "bairro": "Cruzeiro",
    "localidade": "Itajubá",
    "uf": "MG",
    "ibge": "3132404",
    "gia": "",
    "ddd": "35",
    "siafi": "4647"
}"body": [
            "37500-242",
            "Rua Comendador Antônio Rodrigues de Oliveira",
            "",
            "Cruzeiro",
            "Itajubá",
            "MG",
            "3132404",
            "",
            "35",
            "4647"
        ] "body": [
            "cep",
            "logradouro",
            "complemento",
            "bairro",
            "localidade",
            "uf",
            "ibge",
            "gia",
            "ddd",
            "siafi"
        ]"body": [
            "Cruzeiro"
        ]"body": [
            "Cruzeiro",
            "3132404"
        ]2 - Respostas com composição mais complexa
{
"store": {
  "book": [
    {
      "category": "reference",
      "author": "Nigel Rees",
      "title": "Sayings of the Century",
      "price": 8.95
    },
    {
      "category": "fiction",
      "author": "Evelyn Waugh",
      "title": "Sword of Honour",
      "price": 12.99
    },
    {
      "category": "fiction",
      "author": "Herman Melville",
      "title": "Moby Dick",
      "isbn": "0-553-21311-3",
      "price": 8.99
    },
    {
      "category": "fiction",
      "author": "J. R. R. Tolkien",
      "title": "The Lord of the Rings",
      "isbn": "0-395-19395-8",
      "price": 22.99
    }
  ],
  "bicycle": {
    "color": "red",
    "price": 19.95
  }
}
}"body": [
            [
                {
                    "category": "reference",
                    "author": "Nigel Rees",
                    "title": "Sayings of the Century",
                    "price": 8.95
                },
                {
                    "category": "fiction",
                    "author": "Evelyn Waugh",
                    "title": "Sword of Honour",
                    "price": 12.99
                },
                {
                    "category": "fiction",
                    "author": "Herman Melville",
                    "title": "Moby Dick",
                    "isbn": "0-553-21311-3",
                    "price": 8.99
                },
                {
                    "category": "fiction",
                    "author": "J. R. R. Tolkien",
                    "title": "The Lord of the Rings",
                    "isbn": "0-395-19395-8",
                    "price": 22.99
                }
            ]
        ]"body": [
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ]"body": [
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            }
        ]"body": [
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ]"body": [
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            }
        ]"body": [
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ]"body": [
            "Evelyn Waugh",
            "Sword of Honour",
            12.99
        ] "body": [
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ]"body": [
            8.95,
            12.99,
            8.99,
            22.99
        ]Last updated
Was this helpful?