Tutorial: Externe Suchquelle für die Knowledge Base einrichten

  • Freigeben Version: Zurich
  • Aktualisiert 13. März 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, folgen Sie diesem Tutorial, um eine Suchquelle für eine externe Knowledge Base 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 grundlegende Kenntnisse von AngularJS .

    Warum und wann dieser Vorgang ausgeführt wird

    In dieser Integration werden Sie:

    • ein Datenabfrageskript erstellen, das die ServiceNow-Tabellen-API verwendet, um eine Knowledge Base einer anderen ServiceNow-Instanz abzufragen,
    • die JSON-Antwort dekodieren und die Felder definieren, die das Such-Widget erwartet,
    • die HTML-Vorlage für Suchquellen aktualisieren, 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. Klicken Sie in der zugehörigen Liste Suchquellen auf Neu.
    3. Erstellen Sie einen Namen und eine ID für die Suchquelle.
      Die ID sollte eindeutig sein und darf keine Leerzeichen oder Sonderzeichen enthalten.
    4. Auf der Registerkarte Datenquelle wählen Sie das Kontrollkästchen Ist geskriptete Quelle aus.
    5. Fügen Sie dem Datenabrufskriptfeld Inhalt hinzu.
      1. Definieren Sie die Suchfunktion, die von der Instanz ausgeführt werden soll.

        In diesem Beispiel wird ein 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 Datenabfrageskript eine Wenn-Anweisung hinzu, um das zurückgegebene JSON-Objekt zu decodieren, jedes Ergebnis zu durchlaufen und die erwarteten Felder festzulegen.

        Das endgültige Datenabfrageskript:

        (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 auf eine externe Site verlinken, anstatt den Datensatz in Ihrer ServiceNow-Instanz zu öffnen, definiert dies, wohin der Link führt.
        • Ziel: Das Ziel für den Link. Stellen Sie das Ziel auf _blank ein, um die Ergebnisse in einer neuen Registerkarte zu öffnen, lassen Sie das Feld ansonsten leer.
        • primär: Das primäre Feld in den Suchergebnissen.
    6. Aktualisieren Sie die Suchseitenvorlage, um die Suchergebnisse auf der externen Site 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. Die Ergebnisse werden unter dem in Schritt 3 definierten Namenfeldwert angezeigt.

    Eine externe Suchquelle auf der Suchseite

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

    Ein einzelnes Suchergebnis aus der externen Suchquelle