Tutorial: configurar uma origem de pesquisa de base de conhecimento externa

  • Versão de lançamento: Washingtondc
  • Atualizado 10 de jan. de 2026
  • 2 min. de leitura
  • Defina uma origem de pesquisa avançada para retornar dados de qualquer origem na Internet. Para entender o poder das fontes de pesquisa, siga este tutorial para configurar uma fonte de pesquisa de base de conhecimento externa.

    Antes de Iniciar

    Função necessária: none

    Para criar uma origem de pesquisa avançada, você precisa de acesso autenticado a um site externo por meio de uma REST API e conhecimento básico de AngularJS.

    Por Que e Quando Desempenhar Esta Tarefa

    Nesta integração, você irá:

    • Crie um script de busca de dados que usa a ServiceNow API da tabela para consultar uma base de conhecimento de outra instância ServiceNow.
    • Decodifique a resposta JSON e defina os campos que o widget de pesquisa espera.
    • Atualize o modelo HTML das fontes de pesquisa para abrir o resultado da pesquisa no site externo.

    Procedimento

    1. Na IU da plataforma, navegue até Portal de serviços > Portais e selecione o portal ao qual você deseja adicionar a fonte de pesquisa.
    2. Na lista relacionada Origens de pesquisa, clique em Novo.
    3. Crie um nome e ID para a fonte de pesquisa.
      O ID deve ser exclusivo e não deve incluir espaços ou caracteres especiais.
    4. Na guia Fonte de dados, marque a caixa de seleção É fonte de script.
    5. Adicione conteúdo ao campo de script de busca de dados.
      1. Defina a função de pesquisa a ser executada pela instância.

        Este exemplo usa um exemplo RESTMessageV2 sem registro, mas você pode modificar este exemplo para usar um serviço Web REST de saída pré-configurado, se necessário, ou criar um perfil de autenticação mais seguro.

        (function(query) {  
        var results = [];  
        /* Calculate your results here. */ 
        var url= "https://myInstance.service-now.com/api/now/table/kb_knowledge?sysparm_query=GOTO123TEXTQUERY321%3D" + encodeURI(query) + "&sysparm_fields=sys_id%2Cnumber%2Cshort_description%2Ccategory%2Ctext";  
            var ws = new sn_ws.RESTMessageV2();
                ws.setBasicAuth("search_user", "search");  
                ws.setHttpMethod("get");  
                ws.setEndpoint(url);  
          
                var jsonOutput = ws.execute();  
        
        return results;  
        })(query);
        Nota:
        No exemplo anterior, ws.setBasicAuth requer um nome de usuário e uma senha para a instância remota. Para obter mais detalhes, consulte RESTMessageV2 - com escopo, global.
      2. Adicione uma declaração if ao script de busca de dados para decodificar o objeto JSON que está sendo retornado, iterar em cada resultado e definir os campos esperados.

        O script de busca de dados final:

        (function(query) {  
        var results = [];  
        /* Calculate your results here. */  
        var url= "https://<my-instance>.service-now.com/api/now/table/kb_knowledge?sysparm_query=GOTO123TEXTQUERY321%3D" + 
        encodeURI(query) + "&sysparm_fields=sys_id%2Cnumber%2Cshort_description%2Ccategory%2Ctext";  
        var ws = new sn_ws.RESTMessageV2();  
            ws.setBasicAuth("search_user", "search");  
            ws.setHttpMethod("get");  
            ws.setEndpoint(url);  
          
            var jsonOutput = ws.execute(); 
            if (jsonOutput) {  
                var response = new JSON().decode(jsonOutput.getBody());  
                results = response.result;  
                results.forEach(function(result) {  
                    result.url = "https://myInstance.service-now.com/kb_view.do?sysparm_article=" + result.number;            
                    result.target = "_blank";  
                    result.primary = result.short_description;  
                });  
            }  
        
            if (jsonOutput.haveError()){
                gs.addErrorMessage(jsonOutput.getErrorMessage());
            }
        
        return results;  
        })(query); 
        Neste exemplo, os seguintes campos são definidos no objeto de resultado:
        • url: se estiver vinculando a um site externo em vez de abrir o registro na sua instância ServiceNow, isso define para onde o link leva.
        • target: o destino do link. Defina o destino como _blank para abrir os resultados em uma nova guia, caso contrário, deixe-o em branco.
        • primário: o campo primário exibido nos resultados da pesquisa.
    6. Atualize o modelo de página de pesquisa para abrir os resultados da pesquisa no site externo.
      <div>
       <a href="https://myInstance.service-now.com/kb_view.do?sysparm_article={{item.number}}" target="_blank" class="h4 text-primary m-b-sm block">   
          <span ng-bind-html="highlight(item.primary, data.q)"></span>
        </a>
        <span class="text-muted" ng-repeat="f in item.fields | limitTo: 4">
          <span class="m-l-xs m-r-xs" ng-if="!$first"> · </span>
          {{f.label}}: <span ng-bind-html="highlight(f.display_value, data.q)"></span>
        </span>
      </div>
    7. Clique em Atualizar.

    Resultado

    Teste a pesquisa externa no seu portal. Os resultados são exibidos no valor do campo de nome definido na etapa três.

    Uma fonte de pesquisa externa na página de pesquisa

    Cada resultado de pesquisa é aberto no site externo definido no modelo de página de pesquisa.

    Um único resultado de pesquisa da fonte de pesquisa externa