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