Datenbankgesteuerten Slackbot erstellen

Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.

In diesem Lernprogramm erstellen Sie einen Slackbot, mit dem Sie Einträge in einer IBM Db2 SaaS-Back-End-Datenbank suchen und erstellen können. Der Slackbot wird durch den IBM® watsonx™ Assistant-Service unterstützt. Sie werden Slack und IBM® watsonx™ Assistant mithilfe einer Assistant-Integration integrieren. IBM Db2 SaaS wird für watsonx Assistant als angepasste Erweiterung verfügbar gemacht.

Die Slack-Integration sendet Nachrichten zwischen Slack und watsonx Assistant. Eine angepasste Erweiterung, die in Python geschrieben und als serverunabhängige Code Engine-App bereitgestellt wurde, stellt eine REST-API für das Datenbank-Back-End bereit.

Ziele

  • Chatbot mit watsonx Assistant erstellen, der mit einem Datenbank-Back-End interagiert
  • watsonx Assistant durch eine Integration mit Slack verbinden
  • Python-Datenbankapp erstellen und in Code Engine bereitstellen
  • Zugriff auf eine IBM Db2 SaaS-Datenbank über eine angepasste watsonx Assistant-Erweiterung

des

  1. Der Benutzer interagiert mit IBM® watsonx™ Assistantentweder über Slack oder über einen Web-Chat-Client
  2. Der Chatbot verwendet eine angepasste Erweiterung mit REST-API, die als Python-App in Code Engine bereitgestellt wird.
  3. Die angepasste Erweiterungs-App ruft Daten aus einer IBM Db2 SaaS-Datenbank ab und fügt Daten in eine Datenbank ein

Vorbereitende Schritte

Für dieses Lernprogramm ist Folgendes erforderlich:

  • IBM Cloud CLI,
    • Plug-in für Code Engine,
  • git zum Klonen des Quellcode-Repositorys
  • jq zum Abfragen von JSON-Daten.

Um die Installation dieser Tools zu vermeiden, können Sie Cloud Shell über die IBM Cloud-Konsole verwenden.

Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie in der Anleitung zur Einführung in die Lernprogramme.

Services einrichten und Back-End implementieren

In diesem Abschnitt werden Sie die erforderlichen Services einrichten und die Back-End-App implementieren. All dies kann über die Befehlszeilenschnittstelle (CLI) in einem Terminal erreicht werden.

  1. Klonen Sie das GitHub und navigieren Sie in das geklonte Verzeichnis:

    git clone https://github.com/IBM-Cloud/slack-chatbot-database-watson
    cd slack-chatbot-database-watson
    
  2. Wenn Sie nicht eingeloggt sind, verwenden Sie ibmcloud login oder ibmcloud login --sso, um sich interaktiv anzumelden. Stellen Sie sicher, dass Sie die Region und die Ressourcengruppe auswählen, mit der Sie zusammenarbeiten möchten. Sie wird zum Erstellen der Services und Aktionen verwendet. Sie können Ihre verfügbaren Ressourcengruppen mithilfe von ibmcloud resource groups auflisten.

    ibmcloud target -r <region> -g <resource group>
    

    Verwenden Sie ibmcloud target -g default, um zur Standardressourcengruppe zu wechseln.

  3. Erstellen Sie eine IBM Db2 SaaS-Instanz und nennen Sie sie Ereignisdatenbank. Passen Sie die Region us-south an Ihre Region (z. B. eu-de) an.

    ibmcloud resource service-instance-create eventDB dashdb-for-transactions free us-south
    

    Sie können auch einen anderen als den kostenfreien Lite-Plan verwenden. Der kostenfreie Plan steht nicht an allen Standorten zur Verfügung. Warten Sie, bis der Service bereitgestellt wird. Anweisungen finden Sie in der Ausgabe des obigen Befehls. Sie können auch den nächsten Befehl ausführen, um den Status zu überprüfen:

    ibmcloud resource service-instance eventDB
    
  4. Für den späteren Zugriff auf den Datenbankservice über die App Code Engine ist die entsprechende Berechtigung erforderlich. Aus diesem Grund erstellen Sie Serviceberechtigungsnachweise mit dem Namen slackbotkey:

    ibmcloud resource service-key-create slackbotkey Manager --instance-name eventDB --output json > slackbotkey.json
    

    Die Datei slackbotkey.json enthält die Datei service key mit dem Namen service credentials. Diese Klartextdatei enthält das Administratorkennwort und die Verbindungszeichenfolgen für die eventDB-Serviceinstanz.

    Die Ausgabe wird in der Datei slackbotkey.json gespeichert und in diesem Schritt benötigt. Führen Sie den folgenden Befehl aus, um die URL der Datenbankverbindung zu extrahieren:

    jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json
    

    Sie wird als $DB2_URI referenziert und kann in einer Shellvariablen gespeichert werden, wenn sie auf Ihrer Workstation oder Cloud-Shell unterstützt wird, und exportiert werden, wenn Sie die Anwendung lokal ausführen.

     export DB2_URI=$(jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json)
     echo $DB2_URI
    

    Die Ausgabe sollte das Format ibm_db_sa://username:password@database-hostname:port/bludb?Security=SSL; aufweisen und in der Shellvariablen DB2_URIenthalten sein.

  5. Erstellen Sie eine Instanz des watsonx Assistant-Service. Verwenden Sie eventAssistant als Namen und den kostenlosen Lite-Plan. Passen Sie us-south an Ihren Standort an.

    ibmcloud resource service-instance-create eventAssistant conversation free us-south
    
  6. Stellen Sie das vordefinierte Container-Image mit der angepassten Erweiterung als Code Engine-App bereit. Erstellen Sie zunächst ein Projekt:

    ibmcloud ce project create --name slackbot
    

    Wählen Sie dann das Projekt als aktives Projekt aus:

    ibmcloud ce project select --name slackbot
    

    Implementieren Sie anschließend die App mit dem Namen Slackbot-Backend. Ersetzen Sie den Wert für API_TOKEN (MY_SECRET). Verwenden Sie Ihren eigenen Text für MY_SECRET, wenn Sie möchten, und nehmen Sie in allen zukünftigen Schritten Substitutionen vor. Er wird verwendet, um die Aufrufe der REST API zu sichern.

    ibmcloud ce app create --name slackbot-backend --image icr.io/solution-tutorials/tutorial-slack-chatbot-database:latest --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"
    

    Notieren Sie den gemeldeten URI für die App. Auf sie wird in den nächsten Schritten als $APP_URL verwiesen. Sie können eine Shellvariable verwenden:

    APP_URL=$(ibmcloud ce app get -n slackbot-backend --output json | jq -r .status.url)
    echo $APP_URL
    

    Anstatt ein vorerstelltes Container-Image bereitzustellen, können Sie auch ein eigenes Image aus dem bereitgestellten Code erstellen und implementieren. Sie können den Erstellungsbefehl ändern, um einen Build aus der Quelle zu erstellen: ibmcloud ce app create --name slackbot-backend --build-source . --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI". Verwenden Sie dazu die Datei Dockerfile, die sich im Repository befindet. Weitere Details finden Sie in der Dokumentation zu Code Engine unter App aus lokalem Quellcode bereitstellen. Da Sie nicht das öffentliche Container-Image verwenden, sondern Ihr eigenes, müssen Sie auch einen geheimen Registry-Schlüssel einrichten.

  7. Testen Sie die Implementierung, indem Sie eine von der App bereitgestellte REST-API aufrufen, um das Datenbankschema (erneut) zu erstellen und einige Beispieldatensätze einzufügen.

    curl -X 'POST' "$APP_URL/database/recreate" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
    

    Die obige Anforderung sollte eine Fehlernachricht zurückgeben, dass die Bestätigung fehlt. Wiederholen Sie den Vorgang mit einem Abfrageparameter:

    curl -X 'POST' "$APP_URL/database/recreate?confirmation=True" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
    

    Die Anforderung sollte erfolgreich sein und angeben, dass die Datenbank erneut erstellt wurde. Zeit für einen weiteren Test:

    curl -X 'GET' "$APP_URL/events" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
    
  8. Notieren Sie die Projekt-ID, die in einem zukünftigen Schritt erforderlich sein wird.

    ibmcloud ce app get -n slackbot-backend --output json |  jq -r .metadata.namespace
    

Assistenten erstellen

In diesem Teil des Tutorials werden Sie mit dem Dienst watsonx Assistant arbeiten. Zunächst erstellen Sie einen neuen Assistenten. Anschließend erstellen Sie die angepasste Erweiterung und fügen sie dem Assistenten hinzu. Anschließend erstellen Sie Aktionen und testen sie mithilfe der Webvorschau. Schließlich integrieren Sie den Chatbot mit Slack und führen weitere Tests durch.

  1. Öffnen Sie in der IBM Cloud-Ressourcenliste die Übersicht über Ihre Services. Suchen Sie die Instanz des Service watsonx Assistant im Abschnitt AI/ Machine Learning. Klicken Sie auf den zugehörigen Eintrag, um die Servicedetails zu öffnen.

  2. Klicken Sie auf Watson Assistant starten, um das Tool watsonx Assistant aufzurufen.

  3. Legen Sie im Begrüßungsdialog einen neuen Assistenten an, indem Sie slackbot als Assistentennamen verwenden, und klicken Sie dann auf Weiter, um mit der Personalisierung zu beginnen.

  4. Für die erste Frage zur Bereitstellung wählen Sie Web.

  5. Bei den anderen Fragen antworten Sie bitte für Ihre Rolle oder mit Andere / Bin mir noch nicht sicher.

  6. Klicken Sie auf Weiter, um die Chat-Benutzeroberfläche auf Wunsch anzupassen.

  7. Klicken Sie auf Weiter und klicken Sie auf Erstellen, um die Aktion abzuschließen.

    Die neue Seite enthält eine geführte Tour, die Sie durchführen können, wenn Sie watsonx Assistant noch nicht kennen.

Angepasste Erweiterung hinzufügen und konfigurieren

Als Nächstes werden Sie eine angepasste Erweiterung zu watsonx Assistant und dem neu erstellten Assistenten hinzufügen und konfigurieren.

  1. Klicken Sie im Dashboard unten links auf Integrationen und anschließend auf Angepasste Erweiterung erstellen unter Erweiterungen.
  2. Klicken Sie im Dialogfenster mit mehreren Schritten auf Weiter und geben Sie Ereignisse als Name der Erweiterung und API für Ereignisdatenbank als Erweiterungsbeschreibung ein. Klicken Sie auf Weiter.
  3. Wählen Sie die lokale Datei slackbot-openapi-spec.json aus und laden Sie sie hoch und klicken Sie auf Weiter.
  4. Im letzten Schritt können Sie die Erweiterung mit enthaltenen Servern und Operationen überprüfen. Klicken Sie anschließend auf Fertig stellen.
  5. Notieren Sie auf der Seite Integrationen die neue Kachel Ereignisse im Abschnitt Erweiterungen. Klicken Sie auf Hinzufügen auf dieser Kachel, um die Erweiterung des Assistenten zu konfigurieren.
  6. Der neue Dialog beginnt mit einer kurzen Übersicht. Klicken Sie auf Weiter, um zur tatsächlichen Konfiguration zu gelangen. Wählen Sie in der Dropdown-Liste für Authentifizierungstyp select API-Schlüsselauthentifizierung aus und geben Sie die gewünschte API-Schlüssel (MY_SECRET-Ersetzung) ein.
  7. Verwenden Sie für die Servervariablen Ihre Bereitstellung Region, Slackbot-Back-End als Anwendungsname und die Code Engine Projekt-ID Ihrer App. Danach sollte die Generierte URL mit der Ihrer Code Engine-App übereinstimmen. Wenn Sie fertig sind, klicken Sie auf Weiter, um zur Überprüfungsseite zu gelangen. Klicken Sie anschließend auf Beenden und Schließen, um zur Seite Integrationen zurückzukehren.

Erste Aktion erstellen

Zunächst erstellen Sie eine Aktion, um Informationen zu einem einzelnen Ereignis abzurufen, das durch seinen Namen identifiziert wird.

  1. Klicken Sie oben links auf Aktionen und auf der Willkommensseite auf Aktion erstellen.

  2. Klicken Sie auf die Kachel Start from scratch.

  3. Geben Sie im Dialogfenster Neue Aktion als Beispiel Ereignisdetails anzeigen ein und klicken Sie auf Speichern.

  4. Die nächste Anzeige zeigt den Schritteditor für die Aktion mit geöffnetem Schritt 1. Geben Sie in Assistent sagt Wie lautet der Ereignisname? ein. Wählen Sie dann bei Kundenantwort definieren Text mit freiem Format als Option. Übernehmen Sie für Und dann den Wert Mit dem nächsten Schritt fortfahren.

  5. Klicken Sie unten links auf Neuer Schritt, um Schritt 2 hinzuzufügen. Lassen Sie die ersten Teile (Assistent sagt, Kundenantwort definieren) unverändert, aber wählen Sie unter Und dann Erweiterung verwendenaus. Wählen Sie in den Dropdown-Listen die Erweiterung Ereignisse und die zugehörige Operation Ereignisdatensatz nach Name aus. Anschließend zeigt Parameter die möglichen Eingaben an. Wenn Sie die Dropdown-Liste verwenden, weisen Sie für Set short_name den Wert **Aktionsschrittvariablen > 1 zu. Wie lautet der Name der Veranstaltung. Sie bezieht sich auf die Kundeneingabe aus dem vorherigen Schritt. Klicken Sie auf Übernehmen, um diesen Schritt abzuschließen.

  6. Fügen Sie eine Neuer Schritt hinzu. Ändern Sie oben die Auswahl so, dass Schritt 3 wird mit Bedingung ausgeführt. Wählen Sie unter Bedingungen und Wenn 2 Erfolgreich ausgeführt aus. Es bezieht sich auf ein Ergebnis aus der Verwendung der Erweiterung in Schritt 2.

  7. Unter Assistenten sagt können Sie die Antwort mit den Ereignisdetails erstellen, indem Sie auf die Ausgabefelder des API-Aufrufs für die bereitgestellte App verweisen. Verwenden Sie Ich habe die folgenden Ereignisdetails erhalten: gefolgt von der Taste Enter, um zur nächsten Zeile zu gelangen. Der Editor unterstützt das Markdown-Format. Verwenden Sie daher den Schlüssel -, um eine Liste mit Punkten zu erstellen. Fügen Sie ein Listenelement mit Name: hinzu und klicken Sie dann auf das Symbol Variable einfügen. Wählen Sie in der Dropdown-Liste 2 body.shortname aus. Verwenden Sie erneut die Taste Enter, um zu einer neuen Zeile mit einem Listenelement zu gelangen. Fügen Sie Position: mit 2 body.location aus der Dropdown-Liste für Variablen hinzu. Wiederholen Sie dies für Beginnt, Endet und Kontakt. Setzen Sie anschließend Und dann auf Aktion beenden.

  8. Erstellen Sie einen weiteren Schritt mit einer Bedingung, um Fehler in der Erweiterung zu behandeln. Lassen Sie nun den Schritt darauf reagieren, dass 2 Erfolgreich ausgeführt Falsch ist. Lassen Sie den Assistenten Es ist ein Problem aufgetreten sagen und beenden Sie die Aktion erneut.

    Der Einfachheit halber werden nicht alle Fehler und Bedingungen wie leere Ergebnisse behandelt.

  9. Klicken Sie auf das Symbol Speichern in der rechten oberen Ecke und anschließend auf die X daneben, um den Schritteditor zu schließen.

  10. Wählen Sie unten rechts Vorschau aus, um das Dialogfeld zu testen.

  11. Geben Sie im Chat show me event details ein und übergeben Sie den Chat. Der Bot sollte Wie lautet der Name des Ereignisses? antworten. Geben Sie nun Think ein und übergeben Sie die Anforderung. Da die Backend-App eine Platzhaltersuche verwendet, sollte sie das Beispielereignis mit dem Namen Think 2022 finden und die Details zurückgeben (siehe Bildschirmabbildung unten).

Chatvorschau mit Ereignisdetails
Vorschau mit Ereignisdetails

Sie können auf Untersuchen klicken, um Details zur Verwendung der angepassten Erweiterung anzuzeigen. Sie können Eingabe-und Ausgabevariablen überprüfen und prüfen, wie die API-Funktion der Erweiterung aufgerufen wird.

Aktion zum Erfassen von Daten und Einfügen eines neuen Datensatzes

Ähnlich wie beim Abrufen eines Datensatzes ist es möglich, Eingaben zu einem Ereignis zu erfassen und diese Daten über die angepasste Erweiterung hinzuzufügen.

  1. Wechseln Sie zu Aktionen und Von Ihnen erstellt. Klicken Sie auf Neue Aktion.

  2. Klicken Sie auf die Kachel Start from scratch.

  3. Geben Sie im Dialogfenster Neue Aktion Neues Ereignis hinzufügen und Speichern ein.

  4. Verwenden Sie Wie wollen Sie das Ereignis nennen? für Assistent sagt. Der Kunde antwortet wieder mit Freitext.

  5. Fügen Sie eine Neuer Schritt hinzu und lassen Sie den Assistenten sagen Wo ist die Veranstaltung?. Auch hier kann der Kunde mit Freitext antworten.

  6. Fügen Sie einen weiteren Schritt hinzu und fragen Sie "Wann beginnt das Ereignis?", aber verwenden Sie "Datum" für "Kundenantwort definieren".

  7. Wiederholen Sie das Gleiche, aber mit Wann endet das Ereignis?

  8. Zuletzt, in einem neuen Schritt, fragen Sie Wie lautet die URL (Webadresse) für das Ereignis? und lassen Sie den Kunden mit freiem Text antworten.

  9. Erstellen Sie jetzt zur Bestätigung der Eingabe einen neuen Schritt. Verwenden Sie Ist dies richtig? und zeigen Sie die zusammengestellten Daten als Listenpunktliste an. Fügen Sie ein Element für Name, Ort, Beginn, Ende und Kontakt hinzu und verwenden Sie Aktionsvariablen, die sich auf die Eingabeschritte für die Daten beziehen (siehe Bildschirmabbildung unten). Verwenden Sie Bestätigung als Kundenantworttyp.

    Bestätigungsschritt
    Bestätigungsschritt

  10. Fügen Sie einen neuen Schritt mit der Bedingung hinzu, dass die vorherige Bestätigung Nein ist. Der Assistent könnte Ok, fangen wir von vorne an sagen. Setzen Sie Und dann auf Vorherige(n) Schritt(e) erneut abfragen und wählen Sie alle vorherigen Schritte aus.

  11. Reagieren Sie in einem neuen Schritt, der Schritt 8 sein sollte, auf die Bestätigung Ja. Wählen Sie unter Und dann Erweiterung verwenden aus. Konfigurieren Sie die Ereigniserweiterung mit Neuen Ereignisdatensatz einfügen als Operation. Stimmen Sie die Parameter mit den Aktionsvariablen für die Schritte ab, z. B. Kurzname mit . Wie möchten Sie das Ereignis nennen?

  12. Erstellen Sie einen neuen Schritt mit einer Bedingung 8 Ran erfolgreich ist wahr. Der Assistent soll Ein neuer Datensatz mit der ID VARIABLE wurde erstellt sagen. Für VARIABLE wählen Sie 8 body.eid aus Ereignisse (Schritt 8). Beenden Sie die Aktion unter Und dann.

  13. Erstellen Sie einen neuen Schritt, bei dem die Bedingung für 8 Ran erfolgreich falsch ist. Verwenden Sie etwas wie Anscheinend gab es ein Problem bei der Erstellung des neuen Ereignisdatensatzes für den Assistenten und beenden Sie die Aktion mit Und dann. Speichern und schließen Sie die Aktion mit den Symbolen oben rechts.

  14. Speichern Sie die Aktion und testen Sie dann die neue Aktion, indem Sie links auf Vorschau klicken und den Webchat nutzen. Geben Sie add new event ein und übergeben Sie das Ereignis. Wenn Sie vom Bot dazu aufgefordert werden, geben Sie meine Konferenz als Name, Home-Office als Position ein, wählen die Daten für Anfang und Ende aus und verwenden http://localhost als URL. Bestätigen Sie anschließend, dass die Daten korrekt sind.

Wenn Sie einen Chatbot erstellen, können Sie Chatbot veröffentlichen. Dabei handelt es sich um die kontrollierte Freigabe einer Version, die es ermöglicht, Änderungen zurückzunehmen und die Entwicklung fortzusetzen, ohne dass der Chatbot mit echten Kunden interagiert.

Integration mit Slack

Jetzt integrieren Sie den Chatbot in Slack.

  1. Klicken Sie unten links auf Integrationen.
  2. Suchen Sie in der Integrationsübersicht im Abschnitt Kanäle nach Slack und klicken Sie auf Hinzufügen.
  3. Befolgen Sie die schrittweisen Anweisungen, um die Entwurf-Umgebung Ihres Chatbots mit Slack zu integrieren. Weitere Informationen hierzu finden Sie im Abschnitt zum Integrieren mit Slack.
  4. Öffnen Sie anschließend Ihren Slack-Arbeitsbereich. Beginnen Sie einen direkten Chat mit dem Bot und sagen Sie Ereignisdetails anzeigen. Antworten Sie dann ähnlich wie oben mit Denken, wenn Sie zur Eingabe eines Ereignisnamens aufgefordert werden.

Slack mit dem Ereignisbot
Slack mit dem Ereignisbot

Ressourcen entfernen

Rufen Sie die IBM Cloud-Ressourcenliste auf, um die Ressourcen für dieses Lernprogramm zu bereinigen. Suchen Sie die Serviceinstanzen von watsonx Assistant und IBM Db2 SaaS und löschen Sie sie. Suchen Sie in ähnlicher Weise das Projekt Code Engine und löschen Sie es.

Je nach Ressource wird diese möglicherweise nicht sofort gelöscht, sondern (standardmäßig für 7 Tage) aufbewahrt. Sie können die Ressource zurückfordern, indem Sie sie permanent löschen oder innerhalb des Aufbewahrungszeitraums wiederherstellen. In diesem Dokument erfahren Sie mehr zur Verwendung der Ressourcenrückforderung.

Zugehörige Inhalte

Hier finden Sie weitere Ressourcen zu den Themen, die in diesem Lernprogramm behandelt werden.