Como implementar uma API de CEP no ServiceNow?

Thiago Catini
Giga Contributor

Bom dia pessoal. Estou começando agora a desenvolver na plataforma SNow e para fins didático ( estou em treinamento ainda ) gostaria de saber como colocar uma API integrada com o CEP que o individuo ira preencher, para que assim que ser colocado já preencher de moto automático rua, logradouro, cidade, estado, etc...

ps: Já pesquisei algumas formas de fazer ( em conteúdo em inglês, porem, em português não obtive sucesso de encontrar. )

 

Lembrando que estou na minha segunda semana em contato com a plataforma, então teria que ser bem explicadinho mesmo pra que eu possa conseguir fazer... xD

 

Obrigado desde já!

3 REPLIES 3

_ChrisHelming
Tera Guru

Eu vou assumir que você está usando um item de catálogo. Você precisaria criar um script de cliente de catálogo "onChange" na alteração que detecta a entrada e envia a entrada para um "script include" para pesquisar o restante dos dados. "Script de catálogo GlideAjax" é o termo que você deseja pesquisar para encontrar exemplos de como fazer isso.

Para obter o restante dos dados, você provavelmente usaria uma "Mensagem REST de saída" em seu script include para conversar com uma API para obter as informações.

Eu não falo português e fiz isso pelo google tradutor, então espero que faça sentido.

 

original/não traduzido message:

I'm going to assume you're using a catalog item. You would need to create an on change "onChange" catalog client script that detects input and sends the input to a "script include" to look up the rest of the data. "GlideAjax catalog script" is the term you'll want to search for to find examples of doing this.

For getting the rest of the data you'd probably use a "Outbound REST Message" within your script include for talking to an API to get the information.

I don't speak Portuguese and ran this through google translate so hopefully it makes sense.

Thank you very much, I will try!

Claudinei Marq9
Tera Contributor

Ola Thiago Catini. 

segue o script

client script

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    informationAddress('fetchStreet''logradouro');
    informationAddress('fetchNeighborhood''bairro');
    informationAddress('fetchCity''cidade');
    informationAddress('fetchState''estado');
    informationAddress('fetchComplement''complemento');


    function informationAddress(metodo, variavel) {
        var gaRua = new GlideAjax('CepIntegrationAjax');
        gaRua.addParam('sysparm_name', metodo);
        gaRua.addParam('sysparm_cep', newValue);
        gaRua.getXML(callback);

        function callback(response) {
            var answer = response.responseXML.documentElement.getAttribute("answer");

            if (answer) {
                g_form.setValue(variavel, answer);
            
            } else {
                    var valorCep = g_form.setValue('cep');
                if(valorCep !=''){
                    g_form.clearValue('complemento');
                    g_form.clearValue('check');
                    g_form.clearValue('cep');
                }
                    
                }
        }
    }
}
 
 
 
script incluide
 
var CepIAjax = Class.create();
CepAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    _realizarRequisicao: function() {
        var baseUrl = 'https://viacep.com.br/ws/';
        var cep = this.getParameter('sysparm_cep');

        var request = new sn_ws.RESTMessageV2();
        request.setHttpMethod('get');
        request.setEndpoint(baseUrl + cep + '/json');
        var response = request.execute();
        var httpResponseStatus = response.getStatusCode();
        var body = JSON.parse(response.getBody());

        return {
            httpResponseStatus: httpResponseStatus,
            body: body
        };
    },
    fetchStreet: function() {
        var resposta = this._realizarRequisicao();

        if (resposta.httpResponseStatus == 200) {
            return resposta.body.logradouro;
        }

    },
    fetchNeighborhood: function() {
        var resposta = this._realizarRequisicao();

        if (resposta.httpResponseStatus == 200) {
            return resposta.body.bairro;
        }
    },
    fetchCity: function() {
        var resposta = this._realizarRequisicao();

        if (resposta.httpResponseStatus == 200) {
            return resposta.body.localidade;
        }
    },
    fetchState: function() {
        var resposta = this._realizarRequisicao();

        if (resposta.httpResponseStatus == 200) {
            return resposta.body.uf;
        }
    },
    fetchComplement: function() {
        var resposta = this._realizarRequisicao();

        if (resposta.httpResponseStatus == 200) {
            return resposta.body.complemento;
        }
    },
    type: 'CepAjax'
});