Engineering

Erstellen eines Suchbots mit Slack, Zapier und Elastic App Search

Wäre es nicht hilfreich, einen eigenen Suchbot zu erstellen, den Sie direkt in Slack abfragen können? Stellen Sie sich vor, Sie könnten Tausende und Abertausende von Kundendatensätzen, Artikeln, Serverprotokollen oder Helpdesk-Tickets direkt in einem Slack-Channel durchsuchen. Wir werden einen hilfreichen Suchbot erstellen, indem wir Zapier verwenden, um Elastic App Search und Slack miteinander zu verweben.

Ganz ohne Programmierung!

Suchbot: Die Einzelteile

Wir brauchen Folgendes:

  • Ein Elastic App Search-Konto oder eine kostenlose 14-tägige Testversion. Elastic App Search ist eine Sammlung von Werkzeugen für erstklassige Suchfunktionen. Sie können die Relevanz mit Gewichtungen und Boosting, Kuratierung und Synonymen exakt abstimmen und erhalten umfassende Suchanalysen. Das Beste daran? Elastic App Search basiert auf dem Elastic Stack.
  • Elastic App Search-Dokumente. Jedes neue Konto enthält ein Beispielsuchfeld mit Daten der US-Nationalparks. Sie können dieses Feld verwenden oder Ihre eigenen Dokumente indexieren und das Tutorial anpassen.
  • Ein Zapier-Konto oder -Testkonto. Zapier ist ein Automatisierungsdienst. Mit Zapier erstellen Sie Zaps. Ein Zap ist eine Automatisierungspipeline. Jeder Schritt in einer Automatisierungskette kann Daten verarbeiten und transformieren.
  • Etwa 30 Minuten Zeit.

Nach Abschluss dieses Tutorials können Sie „search for query“ in einem bestimmten Slack-Channel eingeben, um query als API-Aufruf an Elastic App Search zu senden:

Eine Slack-Nachricht mit einer Suchaufforderung nach Bergen und Ergebnisse mit Bergen

Wir beginnen in Slack

Melden Sie sich bei Zapier an und klicken Sie auf Make a Zap! (Zap erstellen).

Zunächst müssen wir einen Trigger (Auslöser) erstellen.

Der Trigger verbindet Zapier mit einem Slack-Arbeitsbereich.

Suchen Sie nach Slack und wählen Sie die Option aus.

Sie haben verschiedene Slack-Trigger zur Auswahl.

Wir verwenden: “New Message Posted Anywhere” (Neue Nachricht an einer beliebigen Stelle).

Auswählen der Nachrichtenfunktion in der Zapier Slack-App

Klicken Sie auf Continue (Weiter). Zapier fordert Sie zur Authentifizierung bei Slack auf.

Nach der Authentifizierung ordnen wir die Kontoinstanz dem Zap zu.

Wählen Sie „no“ (nein) aus, wenn Sie gefragt werden, ob Sie auf Botfilter antworten möchten - diese Funktion brauchen wir nicht!

Stattdessen brauchen wir einige Beispieldaten aus Slack. Geben Sie in einem Test-Channel im zugeordneten Slack-Arbeitsbereich die Nachricht „search for old growth“ ein. Diese Nachricht wird in der Phase Test This Step (Diesen Schritt testen) für Zapier verfügbar gemacht.

Eine importierte Slack-Nachricht

Wählen Sie die Nachricht aus und klicken Sie auf Continue (Weiter).

Damit haben wir den ersten Schritt in unserer Automatisierungskette - hervorragend!

Passender Filter

Im nächsten Schritt konfigurieren wir unseren Zap-Filter.

Klicken Sie unter der Überschrift ADD A HELPER STEP (Helferschritt hinzufügen) auf Filter.

Wählen Sie die Option Only continue if… (Nur fortfahren wenn ...) aus.

Füllen Sie die Felder wie folgt aus:

Erstellen eines Zap-Filters: Text (Contains) „search for“

[Text] [Contains] "search for"

Damit wird der Zap aktiviert, wenn jemand search for in Slack eingibt.

Und … Action!

Anschließend erstellen wir vier Aktionen, um alles, was nach „search for“ folgt, als Suche zu verwenden und die Suchergebnisse aus App Search passend formatiert zurückzugeben.

In der ersten Aktion entfernen wir die Zeichenfolge „search for“ aus der Suchabfrage, die wir an App Search übergeben.

Klicken Sie auf Add a step (Schritt hinzufügen) und wählen Sie Action/Search (Aktion/Suche) aus.

Wählen Sie Formatter (Formatierer) aus. Sie finden diese Option direkt unter BUILT-IN APPS (INTEGRIERTE APPS).

Wählen Sie anschließend Text aus.

Daraufhin wird das Dropdownmenü Transform (Transformieren) angezeigt. Klicken Sie auf das Menü, geben Sie Replace (Ersetzen) ein und wählen Sie die Option aus.

Unten werden die beiden Felder Find (Suchen) und Replace (Ersetzen) angezeigt.

Geben Sie in Find die Zeichenfolge „search for“ ein.

Lassen Sie Replace leer und klicken Sie auf Continue.

Der Zapier-Formatierer

Schließen Sie den Schritt ab und klicken Sie erneut auf Add a Step.

Captain Webhook

Die zweite Aktion ist unser API-Aufruf. Hier erstellen wir die Abfrage, die wir an App Search senden. Alles, was nach „search for“ steht, ist unser Abfrageparameter.

Wir verwenden Webhooks, um den API-Aufruf zu generieren.

Geben Sie im Dropdownfeld Choose an Action App (Aktions-App auswählen) die Zeichenfolge Webhooks by Zapier ein und wählen Sie die Option aus.

Wählen Sie unter der Überschrift CREATE (ERSTELLEN) die Option POST aus und klicken Sie auf Continue.

Für den API-Aufruf sind vier Felder erforderlich:

1. URL

Sie finden die URL des API-Endpunkts im App Search-Dashboard. Diese URL muss Ihren eigenen Hostbezeichner enthalten, z. B.: https://host-2376rb.api.swiftype.com/api/as/v1/engines/sample-engine/search. Die oben gezeigte URL ist öffentlich und kann problemlos für Ihr Beispiel verwendet werden.

Anmeldeinformationen im App Search-Dashboard

2. Payload-Typ

Standardmäßig ist „Form“ (Formular) vorausgewählt. Wählen Sie Json aus.

3. Daten

Geben Sie im ersten Feld „query“ ein. Dies ist der Parameter, den wir in der POST-Abfrage verwenden. Klicken Sie auf das Symbol neben dem Texteingabefeld. Wählen Sie dort die Testdaten „search for old growth“ aus Schritt 1 aus:

Verwenden der Slack-Beispielnachricht aus Schritt 1

Wählen Sie das Text-Feld aus, das die Zeichenfolge aus der Slack-Beispielnachricht enthält.

4. Header

Am unteren Ende des Formulars befindet sich der Bereich Headers (Header). Geben Sie „Authorization“ (Autorisierung) in das erste Feld ein. Geben Sie in das Feld daneben die Zeichenfolge „Bearer“ gefolgt von Ihrem öffentlichen Suchschlüssel ein, den Sie im Menü Credentials (Anmeldeinformationen) im App Search-Dashboard finden:

Hinzufügen des öffentlichen Suchschlüssels als Autorisierungs-Header

Bei Bedarf können Sie den öffentlichen Demonstrationsschlüssel „search-7eud55t7ecdmqzcanjsc9cqu“ verwenden, falls Sie keinen eigenen Schlüssel haben.

Klicken Sie auf Continue und führen Sie anschließend einen Test durch. Sie sollten eine Beispielantwort mit Daten aus Nationalparks von der App Search Engine erhalten.

Hervorragend - Wir können also eine API-Anfrage stellen. Anschließend werden wir die Antwort formatieren.

Automagisch

Klicken Sie auf Add a Step.

Wählen Sie Action/Search und anschließend Formatter aus.

Wählen Sie unter der Überschrift CREATE (ERSTELLEN) die Option Utilities (Hilfsfunktionen) aus und klicken Sie auf Continue.

Geben sie im Abschnitt Transform die Zeichenfolge Line Itemizer (Zeilenaufteilung) ein.

Wir möchten zwei Objekte unter dem Header Line-item(s) (Zeilenobjekte) basierend auf dem Ergebnis des API-Aufrufs aus Schritt 4 erstellen ...

  1. Titel: „Results Title Raw“
  2. Link: „Results NPS Link Raw“

Wir möchten in unseren Ergebnissen den Namen eines US-Nationalparks und einen Link zu weiteren Informationen anzeigen:

Erstellen von zwei Zeilenobjekten aus dem API-Aufruf

Testen Sie den Schritt und schließen Sie ihn ab. Auf zu unserer dritten Aktion ...

Schritt, Format, Schritt

Klicken Sie auf Add a Step ...

Wählen Sie Formatter und Utilities aus, wie im vorherigen Schritt ...

Suchen Sie dieses Mal jedoch nach Line-Item to Text (Zeilenobjekt zu Text).

Dort finden Sie ein Feld mit dem Titel Values (Werte), das einen Input (Eingabe)-Header enthält. Klicken Sie in die Leiste, wählen Sie Schritt 5, Utilities (Hilfsfunktionen) aus und ziehen Sie die beiden zuvor erstellten Zeilenobjekte in das Feld.

Beachten Sie, dass die Struktur im Eingabefeld die Formatierung der Slack-Nachricht abbildet. Wir möchten den Titel, gefolgt von einem Leerzeichen und einer URL in Klammern:

[TITLE] ([LINK])

Außerdem möchten wir jedes Ergebnis in einer separaten Zeile ausgeben. Fügen Sie dazu im Feld unter der Überschrift Separator (Trennzeichen) Folgendes ein: „[:newline:]“:

[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK])
[TITLE] ([LINK]) 

Im Zap sollte das Ergebnis wie folgt aussehen:

Korrekte Formatierung für neue Zeilen, um das Erscheinungsbild der API-Antworten anzupassen .

Und nun zum letzten Schritt! Wir möchten die formatierten Suchergebnisse an einen bestimmten Slack-Channel senden.

Letzte Übertragung

... Klicken Sie auf Add a step, geben Sie Action/Search ein ...

Wählen Sie Slack aus.

Unter Create (Erstellen): Wählen Sie Send Channel Message (Channel-Nachricht senden) und anschließend save + continue (Speichern und weiter) aus.

Wählen Sie Ihr Slack-Konto aus und klicken Sie auf Continue ...

Wählen Sie den gewünschten Channel für den Zap aus: #random eignet sich gut für Tests.

Klicken Sie unter der Überschrift Message Text (Nachrichtentext) in das Feld und wählen Sie die Ausgabe aus Schritt 6 aus:

Auswählen, in welchem Slack-Channel geantwortet wird, und die Ausgabe der gesamten Filterkette als Nachrichteninhalt

Wenn Sie möchten, können Sie den But „Suchbot“ nennen und ihm einen schicken Avatar zuweisen.

name: Slackbot-Bild: APP SEARCH!

Kopieren Sie den Link zum Elastic App Search-Bild aus diesem Blogeintrag per Rechtsklick auf das folgende Bild, wenn Sie möchten:

Das wunderschöne Elastic App Search-Logo

AN DIE ARBEIT, SUCHBOT!

Nach Abschluss der Konfiguration können Sie den Zap aktivieren:

ZAP AKTIVIEREN!

Öffnen Sie Slack, geben Sie „search for something“ ein und probieren Sie einige Abfragen aus.

Ein GIF mit Antworten in Slack

Voilà! Sie haben soeben einen intelligenten Suchbot in Slack erstellt.

Zusammenfassung

Suchbots sind sehr hilfreich. Möglicherweise möchten Sie eine interne Wissensdatenbank durchsuchen oder einen Fehler in einem großen Pool von Serverprotokollen suchen. In diesen Fällen können Sie einen Suchbot mit Elastic App Search erstellen und mühelos mit Slack verbinden.

Probieren Sie App Search noch heute mit einem kostenlosen 14-tägigen Test unserer gehosteten Version aus oder laden Sie die Beta der selbstverwalteten Version herunter. Alle neuen Testversionen enthalten einen Beispieldatensatz, damit Sie experimentieren können, ohne Ihre eigenen Daten zu verwenden.