Como podemos ajudar?

01. HTTP Request
3 min
Criado por Ligia Sarmento em 20/08/2024 10:55
Atualizado por Ligia Sarmento em 22/01/2025 14:34

O componente HTTP Request permite enviar dados coletados durante uma interação com o cliente, como nome ou e-mail, para outro sistema, integrando-se com CRMs, sistemas de ticket ou outros aplicativos. 

Este artigo irá guiá-lo pelo processo de configuração dessa ação no Builder de maneira simples e prática.

Estrutura da Ação

A estrutura da ação para realizar chamadas a APIs externas com o HTTP Request é:

[
{
"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"
}
]

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 axios do NodeJS). Exemplo: Lista de opções da biblioteca axios
  • url: url da chamada HTTP
  • data: parâmetros da chamada HTTP
  • method: método da chamada HTTP
  • headers: cabeçalho da chamada HTTP
  • authorization: token de autenticação da chamada
  • flavor: biblioteca que será usada para realizar o request, neste caso, axios.
  • before_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>"
}

Exemplos de retorno

No exemplo abaixo, não são necessários os parâmetros body e headers. A consulta é feita ao webservice ViaCEP, utilizando a variável de contexto $cep na URL:

[
 {
 "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"
 }
]

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

Por fim, caso queira manipular essas informações basta acessar 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 ?>


No segundo exemplo, a chamada inclui um corpo (body) e cabeçalhos (headers) para autenticação de acesso. Veja:

[
 {
     "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"
  }
]
 💡 Dica: Siga a leitura no artigo HTTP Request Async

Informação importante sobre chamadas de API form-data:

O Zenvia NLU não suporta chamadas de API do tipo form-data. Sendo assim, se você precisa enviar documentos para o Movidesk, por exemplo, é necessário desenvolver uma função intermediária (lambda) para converter os dados.

Essa lambda pode receber os dados do NLU no formato JSON e enviá-los no formato form-data para o Movidesk.

Recomendamos acionar a equipe de desenvolvimento para implementar esta solução.

Este artigo resolveu sua dúvida?
Últimos artigos visitados