Tutorial: Richten Sie eine externe Knowledge Base-Suchquelle ein

  • Freigeben Version: Yokohama
  • Aktualisiert 25. Juni 2026
  • 2 Minuten Lesedauer
  • Definieren Sie eine erweiterte Suchquelle, um Daten aus einer beliebigen Quelle im Internet zurückzugeben. Um die Leistungsfähigkeit von Suchquellen zu verstehen, befolgen Sie dieses Tutorial, um eine externe Knowledge Base-Suchquelle einzurichten.

    Vorbereitungen

    Erforderliche Rolle: keine

    Um eine Quelle für erweiterte Suche zu erstellen, benötigen Sie authentifizierten Zugriff auf eine externe Website über eine REST-API und Grundwissen von AngularJS .

    Warum und wann dieser Vorgang ausgeführt wird

    In dieser Integration werden Sie:

    • Erstellen Sie ein Datenabrufskript, das verwendet ServiceNow Tabellen-API Dient zum Abfragen einer Knowledge Base von einer anderen ServiceNowInstanz.
    • Decodieren Sie die JSON-Antwort, und definieren Sie die Felder, die das Such-Widget erwartet.
    • Aktualisieren Sie die HTML-Vorlage für Suchquellen, um das Suchergebnis auf der externen Website zu öffnen.

    Prozedur

    1. Navigieren Sie in der Plattform-UI zu Serviceportal > Portale Und wählen Sie das Portal aus, dem Sie die Suchquelle hinzufügen möchten.
    2. Von Suchquellen Zugehörige Liste, klicken Sie auf Neu .
    3. Erstellen Sie einen Namen und eine ID für die Suchquelle.
      Die ID muss eindeutig sein und darf keine Leerzeichen oder Sonderzeichen enthalten.
    4. Auf Datenquelle Wählen Sie die Registerkarte aus Ist geskriptete Quelle Kontrollkästchen.
    5. Fügen Sie dem Skriptfeld „Datenabruf“ Inhalte hinzu.
      1. Definieren Sie die Suchfunktion, die von der Instanz ausgeführt werden soll.

        In diesem Beispiel wird verwendet Beispiel für Recordless RESTMessageV2 , Sie können dieses Beispiel jedoch ändern, um eine vorkonfigurierte zu verwenden Ausgehender REST-Webservice Falls erforderlich, oder erstellen Sie ein sichereres Authentifizierungsprofil.

        (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);
        Hinweis:
        Im vorherigen Beispiel ws.setBasicAuth Erfordert einen Anwendernamen und ein Passwort für die Remote-Instanz. Weitere Informationen finden Sie unter RESTMessageV2: Bereichsbezogen, global .
      2. Fügen Sie dem Datenabrufskript eine IF-Anweisung hinzu, um das zurückgegebene JSON-Objekt zu decodieren, iterieren Sie jedes Ergebnis, und legen Sie erwartete Felder fest.

        Das endgültige Datenabrufskript:

        (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); 
        In diesem Beispiel werden die folgenden Felder für das Ergebnisobjekt festgelegt:
        • URL : Wenn Sie mit einer externen Website verknüpfen, anstatt den Datensatz in zu öffnen ServiceNowInstanz, definiert dies, wohin der Link führt.
        • Ziel : Das Ziel für den Link. Legen Sie das Ziel auf fest _Leer Um Ergebnisse auf einer neuen Registerkarte zu öffnen, lassen Sie sie andernfalls leer.
        • Primär : Das primäre Feld, das in den Suchergebnissen angezeigt wird.
    6. Aktualisieren Sie die Suchseitenvorlage, um die Suchergebnisse auf der externen Website zu öffnen.
      <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. Klicken Sie auf Aktualisieren.

    Ergebnisse

    Testen Sie die externe Suche in Ihrem Portal. Ergebnisse werden unter dem in Schritt drei definierten Namensfeldwert angezeigt.

    Eine externe Suchquelle auf der Suchseite

    Jedes Suchergebnis wird auf der externen Website geöffnet, die in der Suchseitenvorlage definiert ist.

    Ein einzelnes Suchergebnis aus der externen Suchquelle