Einrichten des Openflow Connector für Slack¶
Bemerkung
Der Konnektor unterliegt den Bedingungen für Konnektoren.
Unter diesem Thema werden die Schritte zur Einrichtung des Openflow Connector für Slack beschrieben.
Voraussetzungen¶
Stellen Sie sicher, dass Sie Openflow Connector für Slack gelesen haben.
Stellen Sie sicher, dass Sie Openflow eingerichtet haben.
Eine Slack App einrichten¶
Richten Sie eine Slack-App in Ihrem Slack-Arbeitsbereich ein. Um den Zugang zum Slack-Arbeitsbereich einzurichten, benötigen Sie einen Slack-Administrator. Dazu erstellen Sie eine Slack-App oder stellen ihr Anmeldeinformationen zur Verfügung und installieren die App im Slack-Arbeitsbereich und in den Kanälen. Sie können eine Slack-App erstellen, indem Sie die JSON-Konfiguration verwenden:
Aktualisieren Sie das JSON-Manifest. Kopieren Sie den JSON-Manifesttext unten. Ändern Sie die Eigenschaften „Name“ und „Display Name“ von
EXAMPLE_NAME_CHANGE_THIS
auf den gewünschten Namen Ihrer Slack-App. Es wird empfohlen, denselben Namen und Anzeigenamen für Ihre App zu verwenden.{ "display_information": { "name": "EXAMPLE_NAME_CHANGE_THIS" }, "features": { "bot_user": { "display_name": "EXAMPLE_NAME_CHANGE_THIS", "always_online": false } }, "oauth_config": { "scopes": { "bot": [ "channels:history", "channels:read", "groups:history", "groups:read", "im:history", "im:read", "mpim:history", "mpim:read", "users.profile:read", "users:read", "users:read.email", "files:read", "app_mentions:read", "reactions:read" ] } }, "settings": { "event_subscriptions": { "bot_events": [ "message.channels", "message.groups", "message.im", "message.mpim", "reaction_added", "reaction_removed", "file_created", "file_deleted", "file_change" ] }, "interactivity": { "is_enabled": true }, "org_deploy_enabled": false, "socket_mode_enabled": true, "token_rotation_enabled": false } }
Erstellen Sie eine Slack-App über die Apps-Seite.
Wählen Sie auf der Seite Ihre Apps Neue App erstellen.
Wählen Sie Aus einem Manifest.
Wählen Sie den Arbeitsbereich, in dem Sie Ihre App entwickeln werden. Bei Bedarf können Sie [Ihre App](https://api.slack.com/distribution) später auf andere Arbeitsbereiche verteilen.
Kopieren Sie das aktualisierte JSON-Manifest aus Schritt 1.
Generieren Sie ein Token auf App-Ebene. Sie müssen ein Token auf App-Ebene erstellen, auch wenn Sie das JSON-Manifest verwenden. Scrollen Sie unter Basisinformationen zum Abschnitt Token auf App-Ebene und klicken Sie auf die Schaltfläche, um ein [app-level token](https://api.slack.com/concepts/token-types#app) zu generieren. Fügen Sie dem Token den Zugriffsbereich
connections:write
hinzu.Installieren und autorisieren Sie die App.
Kehren Sie zum Abschnitt Basisinformationen der App-Management-Seite zurück.
Installieren Sie Ihre App, indem Sie auf die Schaltfläche In Arbeitsbereich installieren klicken.
Sie werden nun durch OAuth-Ablauf von Slack geleitet. Wählen Sie Zulassen auf dem folgenden Bildschirm.
Wenn Sie Ihre App einem anderen Arbeitsbereich als Ihrem eigenen hinzufügen möchten, müssen diese Schritte von einem Benutzer aus diesem Arbeitsbereich durchgeführt werden. Navigieren Sie nach der Installation zurück zur Seite OAuth und Berechtigungen. Unter OAuth Token finden Sie ein Zugriffstoken. Zugriffstoken stellen die Berechtigungen dar, die der installierende Benutzer an Ihre App delegiert hat. Bewahren Sie es sicher und geschützt auf. Vermeiden Sie es, es in öffentliche Versionskontrollsysteme einzuchecken. Greifen Sie stattdessen über eine Umgebungsvariable darauf zu.
Hinzufügen der App zu Kanälen. Ihre App ist noch nicht Mitglied in einem Kanal. Wählen Sie also einen Kanal aus, in dem Sie einige Testmeldungen hinzufügen, und
/invite
Ihre App. Zum Beispiel/invite @Grocery Reminders
.
Bemerkung
Starten Sie die Prozessoren neu, um die neuen Kanäle zu laden. Nachdem die App zu einem neuen Kanal hinzugefügt wurde, muss der Consume Slack Conversation
-Prozessor in der OpenFlow-Laufzeit angehalten und neu gestartet werden.
Erforderliche Eingangsregeln einrichten¶
Ein Snowflake-Administrator sollte die Anleitung zum Ausgangsverkehr befolgen, um Ausgangsregeln auf den Endpunkt https://slack.com/api
anzuwenden und den WebSocket-Ausgangsverkehr auf wss://wss.slack.com
zu aktivieren. Am einfachsten ist es, eine Regel hinzuzufügen, die den Datenausgang für die Domäne „slack.com“ zulässt.
Snowflake-Konto einrichten¶
Als Snowflake-Kontoadministrator führen Sie die folgenden Aufgaben aus:
Erstellen Sie eine neue Rolle oder verwenden Sie eine vorhandene Rolle und erteilen Sie die Berechtigungen von Datenbanken.
Erstellen Sie einen neuen Benutzer für den Snowflake-Dienst mit dem Typ SERVICE.
Weisen Sie dem Benutzer des Snowflake-Dienstes die Rolle zu, die Sie in den vorherigen Schritten erstellt haben.
Konfigurieren Sie mit Schlüsselpaar-Authentifizierung für den Snowflake SERVICE-Benutzer aus Schritt 2.
Snowflake empfiehlt diesen Schritt dringend. Konfigurieren Sie einen von Openflow unterstützten Geheimnismanager, z. B. AWS, Azure und Hashicorp, und speichern Sie die öffentlichen und privaten Schlüssel im Geheimnisspeicher.
Bemerkung
Wenn Sie aus irgendeinem Grund keinen Geheimnismanager verwenden möchten, sind Sie dafür verantwortlich, die für die Schlüsselpaar-Authentifizierung verwendeten öffentlichen und privaten Schlüsseldateien gemäß den Sicherheitsrichtlinien Ihrer Organisation zu schützen.
Nachem der Geheimnismanager konfiguriert ist, legen Sie fest, wie Sie sich bei ihm authentifizieren möchten. Auf AWS wird empfohlen, die mit Openflow verknüpfte EC2-Instanzrolle zu verwenden, da auf diese Weise keine weiteren Geheimnisse gespeichert werden müssen.
Konfigurieren Sie in Openflow einen mit diesem Geheimnismanager verknüpften Parameter Provider über das Hamburger-Menü oben rechts. Navigieren Sie zu Controller Settings » Parameter Provider, und rufen Sie Ihre Parameterwerte ab.
Zu diesem Zeitpunkt können alle Anmeldeinformationen mit den zugehörigen Parameterpfaden referenziert werden, und es müssen keine sensiblen Werte innerhalb von Openflow aufbewahrt werden.
Wenn andere Snowflake-Benutzer Zugriff auf die vom Konnektor aufgenommenen Rohdokumente und -tabellen benötigen (z. B. für die benutzerdefinierte Verarbeitung in Snowflake), weisen Sie diesen Benutzern die in Schritt 1 erstellte Rolle zu.
Bestimmen Sie ein Warehouse, das der Konnektor verwenden soll. Beginnen Sie mit der kleinsten Warehouse-Größe und experimentieren Sie dann mit der Größe in Abhängigkeit von der Anzahl der zu replizierenden Tabellen und der Menge der übertragenen Daten. Große Tabellenzahlen lassen sich in der Regel besser mit Multi-Cluster-Warehouses skalieren als mit größeren Warehouse-Größen.
Anwendungsfall 1: Nur Slack-Inhalte aufnehmen¶
Verwenden Sie die Konnektor, um:
eine benutzerdefinierte Analyse der aufgenommenen Slack-Daten durch (keine Cortex Search-Verarbeitung) durchzuführen.
Slack-Meldungen, Reaktionen, Dateianhänge und Mitgliederlisten in Snowflake aufzunehmen und sie Sie sie auf dem neuesten Stand zu halten.
Einrichten des Konnektors¶
Führen Sie als Data Engineer die folgenden Aufgaben aus, um den Konnektor zu konfigurieren:
Konnektor installieren¶
Erstellen Sie in Snowflake eine Datenbank und ein Schema für den Konnektor, um die aufgenommenen Daten zu speichern. Erteilen Sie der im ersten Schritt erstellten Rolle die erforderlichen Berechtigungen von Datenbanken. Ersetzen Sie den Platzhalter für die Rolle durch den tatsächlichen Wert und verwenden Sie die folgenden SQL-Befehle:
CREATE DATABASE DESTINATION_DB; CREATE SCHEMA DESTINATION_DB.DESTINATION_SCHEMA; GRANT USAGE ON DATABASE DESTINATION_DB TO ROLE <CONNECTOR_ROLE>; GRANT USAGE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>; GRANT CREATE TABLE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
Navigieren Sie zur Openflow-Übersichtsseite. Wählen Sie im Abschnitt Featured connectors die Option View more connectors aus.
Suchen Sie auf der Seite Openflow-Konnektoren den Konnektor und wählen Sie Add to runtime.
Wählen Sie im Dialog Select runtime Ihre Laufzeit aus der Dropdown-Liste Available runtimes aus.
Wählen Sie Add aus.
Bemerkung
Bevor Sie den Konnektor installieren, stellen Sie sicher, dass Sie in Snowflake eine Datenbank und ein Schema für den Konnektor erstellt haben, in dem die aufgenommenen Daten gespeichert werden.
Authentifizieren Sie sich bei der Bereitstellung mit den Anmeldedaten Ihres Snowflake-Kontos und wählen Sie Allow, wenn Sie dazu aufgefordert werden, damit die Laufzeitanwendung auf Ihr Snowflake-Konto zugreifen kann. Die Installation des Konnektors nimmt einige Minuten in Anspruch.
Authentifizieren Sie sich bei der Laufzeit mit den Anmeldeinformationen Ihres Snowflake-Kontos.
Das Openflow-Canvas wird mit der hinzugefügten Prozessgruppe des Konnektors angezeigt.
Konnektor konfigurieren¶
Klicken Sie mit der rechten Maustaste auf die importierte Prozessgruppe und wählen Sie Parameter aus.
Geben Sie die erforderlichen Parameterwerte ein, wie unter Ablaufparameter: Nur Inhalt aufnehmen beschrieben.
Klicken Sie mit der rechten Maustaste auf das Canvas und wählen Sie Alle Controller-Dienste aktivieren aus.
Klicken Sie mit der rechten Maustaste auf die importierte Prozessgruppe und wählen Sie Start. Der Ablauf erstellt alle erforderlichen Snowflake-Objekte und beginnt mit der Aufnahme von Slack-Daten.
Ablaufparameter: Nur Inhalt aufnehmen¶
Parameter |
Beschreibung |
---|---|
App Token |
Slack Token auf App-Ebene, generiert in der Slack-App. |
Bot Token |
Slack Bot-Token generiert in der Slack-App. |
Destination Database |
Datenbank, die alle Konnektorobjekte enthält (erstellt, falls nicht vorhanden). |
Destination Schema |
Schema in der Datenbank (erstellt, falls nicht vorhanden). |
Snowflake Account |
Bezeichner des Snowflake-Kontos. |
Snowflake Role |
Rolle, die der Ablauf nach der Authentifizierung einnimmt. |
Snowflake User |
Benutzername, den der Ablauf für die Verbindung verwendet. |
Snowflake Private Key |
Privater RSA-Schlüssel, der für die Authentifizierung verwendet wird (Format PKCS8 PEM). Beachten Sie, dass entweder Snowflake Private Key oder Snowflake Private Key File definiert sein muss. |
Snowflake Private Key Password |
Kennwort für den verschlüsselten privaten Schlüssel (leer lassen, wenn er unverschlüsselt ist). |
Snowflake Private Key File |
Datei mit dem privaten RSA-Schlüssel (Format PKCS8 PEM). Die Header beginnt mit |
Snowflake Warehouse |
Warehouse, das für das vom Ablauf ausgeführte SQL verwendet wird. |
Upload Interval |
Zeit zum Sammeln von Daten, bevor sie an Snowflake gesendet werden. Ein längeres Intervall verringert die Auslastung von Snowflake, kann aber die Latenzzeit und den Speicherverbrauch erhöhen. |
Refresh Slack Members |
Minuten zwischen den Aktualisierungen der Slack-Mitgliedschaft (ACL). |
Anwendungsfall 2: Slack-Inhalt aufnehmen und Cortex aktivieren¶
Verwenden Sie die Konnektor, um:
Bereiten Sie Slack-Daten für die konversationelle Suche mit Snowflake Cortex vor.
Stellen Sie sicher, dass die Zugriffskontrollen für Slack-Kanäle in den Suchergebnissen beachtet werden.
Einrichten des Konnektors¶
Führen Sie als Data Engineer die folgenden Aufgaben aus, um den Konnektor zu konfigurieren:
Konnektor installieren¶
Erstellen Sie in Snowflake eine Datenbank und ein Schema für den Konnektor, um die aufgenommenen Daten zu speichern. Erteilen Sie der im ersten Schritt erstellten Rolle die erforderlichen Berechtigungen von Datenbanken. Ersetzen Sie den Platzhalter für die Rolle durch den tatsächlichen Wert und verwenden Sie die folgenden SQL-Befehle:
CREATE DATABASE DESTINATION_DB; CREATE SCHEMA DESTINATION_DB.DESTINATION_SCHEMA; GRANT USAGE ON DATABASE DESTINATION_DB TO ROLE <CONNECTOR_ROLE>; GRANT USAGE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>; GRANT CREATE TABLE ON SCHEMA DESTINATION_DB.DESTINATION_SCHEMA TO ROLE <CONNECTOR_ROLE>;
Navigieren Sie zur Openflow-Übersichtsseite. Wählen Sie im Abschnitt Featured connectors die Option View more connectors aus.
Suchen Sie auf der Seite Openflow-Konnektoren den Konnektor und wählen Sie Add to runtime.
Wählen Sie im Dialog Select runtime Ihre Laufzeit aus der Dropdown-Liste Available runtimes aus.
Wählen Sie Add aus.
Bemerkung
Bevor Sie den Konnektor installieren, stellen Sie sicher, dass Sie in Snowflake eine Datenbank und ein Schema für den Konnektor erstellt haben, in dem die aufgenommenen Daten gespeichert werden.
Authentifizieren Sie sich bei der Bereitstellung mit den Anmeldedaten Ihres Snowflake-Kontos und wählen Sie Allow, wenn Sie dazu aufgefordert werden, damit die Laufzeitanwendung auf Ihr Snowflake-Konto zugreifen kann. Die Installation des Konnektors nimmt einige Minuten in Anspruch.
Authentifizieren Sie sich bei der Laufzeit mit den Anmeldeinformationen Ihres Snowflake-Kontos.
Das Openflow-Canvas wird mit der hinzugefügten Prozessgruppe des Konnektors angezeigt.
Konnektor konfigurieren¶
Klicken Sie mit der rechten Maustaste auf die importierte Prozessgruppe und wählen Sie Parameter aus.
Geben Sie die erforderlichen Parameterwerte ein, wie unter Ablaufparameter: Inhalte aufnehmen und Cortex aktivieren beschrieben.
Klicken Sie mit der rechten Maustaste auf das Canvas und wählen Sie Alle Controller-Dienste aktivieren aus.
Klicken Sie mit der rechten Maustaste auf die importierte Prozessgruppe und wählen Sie Start.
Sobald der Ablauf läuft, fahren Sie mit Abfrage des Cortex Search Service fort, um den Test durchzuführen.
Ablaufparameter: Inhalt aufnehmen und Cortex aktivieren¶
Parameter |
Beschreibung |
---|---|
App Token |
Slack Token auf App-Ebene, generiert in der Slack-App. |
Bot Token |
Slack Bot-Token generiert in der Slack-App. |
Destination Database |
Datenbank, die alle Konnektorobjekte enthält (erstellt, falls nicht vorhanden). |
Destination Schema |
Schema in der Datenbank (erstellt, falls nicht vorhanden). |
Upload Interval |
Zeit zum Sammeln von Daten, bevor sie an Snowflake gesendet werden. Ein größerer Wert verringert die Last, erhöht aber die Datenlatenz. |
Snowflake Account |
Bezeichner des Snowflake-Kontos. |
Snowflake Role |
Rolle, die der Ablauf nach der Authentifizierung einnimmt. |
Snowflake User |
Benutzername, den der Ablauf für die Verbindung verwendet. |
Snowflake Private Key |
PEM-formatierter privater Schlüssel für die Schlüsselpaar-Authentifizierung. |
Snowflake Private Key Password |
Kennwort für den verschlüsselten privaten Schlüssel (leer, wenn er unverschlüsselt ist). |
Snowflake Warehouse |
Warehouse, das für alle SQL-Abfragen verwendet wird, die vom Ablauf und von Cortex ausgeführt werden. |
Refresh Slack Members |
Minuten zwischen den Aktualisierungen der Slack-Mitgliedschaft (ACL). |
Aktivieren von ACLs für private Kanäle¶
Es sind keine weiteren Schritte erforderlich, außer dem Einladen der Slack-App in jeden privaten Kanal. Der Konnektor aktualisiert die Mitgliederliste automatisch und speichert sie zu jedem Refresh Slack Members-Intervall in der Mitgliedertabelle.
Abfrage des Cortex Search Service¶
Nachdem Anwendungsfall 2 gelaufen ist und der Cortex Search Service erstellt wurde, können Sie ihn wie folgt abfragen:
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<openflow_db>.<openflow_schema>.<<SLACK_CORTEX_SEARCH>',
'{
"query": "What is my vacation carry over policy?",
"columns": ["text","channel","ts","username"],
"filter": {"@contains": {"memberemails": "alice@example.com"}},
"limit": 10
}'
)
)['results'] AS results;
Allgemein durchsuchbare Spalten
text
, type
, subtype
, channel
, user
, username
, connectorId
, workspaceId
, ts
, threadTs
Beispiel: Abfrage eines AI-Assistenten zu Personalinformationen (HR)
Mit Cortex Search können Sie einen AI-Assistenten für Mitarbeiter abfragen, um über die neuesten Slack-Posts zu chatten. Die Meldungen, die durchsucht werden, können aus informativen Slack-Kanälen wie „allgemein“ oder „it-help“ stammen.
Führen Sie Folgendes in einem SQL-Arbeitsblatt aus, um den Cortex Search Service über von Slack aufgenommene Meldungen abzufragen.
Ersetzen Sie Folgendes:
cortex_db
: Name der Datenbank, die den Cortex Search Service enthält, angegeben durch den ParameterDestination Database
.cortex_schema
: Name des Schemas, das den Cortex Search Service enthält, angegeben durch den ParameterDestination Schema
.cortex_search_service_name
: Name des Cortex Search Service, angegeben durch den ParameterCortex Search Name
.user_emailID
: E-Mail-ID des Benutzers, für den Sie die Antworten filtern möchten.
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'<cortex_db>.<cortex_schema>.<cortex_search_service_name>',
'{
"query": "What is my vacation carry over policy?",
"columns": ["text", "channel", “ts”,”username”],
"filter": {"@contains": {"memberemails": "<user_emailID>"} },
"limit": 1
}'
)
)['results'] AS results
Führen Sie den folgenden Code in einem Python-Arbeitsblatt aus, um den Cortex Search Service über die von Slack aufgenommenen Meldungen abzufragen. Stellen Sie sicher, dass Sie das snowflake.core
-Paket zu Ihrer Datenbank hinzufügen.
Ersetzen Sie Folgendes:
cortex_db
: Name der Datenbank, die den Cortex Search Service enthält, angegeben durch den ParameterDestination Database
.cortex_schema
: Name des Schemas, das den Cortex Search Service enthält, angegeben durch den ParameterDestination Schema
.cortex_search_service_name
: Name des Cortex Search Service, angegeben durch den ParameterCortex Search Name
.user_emailID
: E-Mail-ID des Benutzers, für den Sie die Antworten filtern möchten.
import snowflake.snowpark as snowpark
from snowflake.snowpark import Session
from snowflake.core import Root
def main(session: snowpark.Session):
root = Root(session)
# fetch service
my_service = (root
.databases["<cortex_db>"]
.schemas["<cortex_schema>"]
.cortex_search_services["<cortex_search_service_name>"]
)
# query service
resp = my_service.search(
query="What is my vacation carry over policy?",
columns = ["text", "channel", "ts","username"],
filter = {"@contains": {"memberemails": "<user_emailID>"} },
limit=1
)
return (resp.to_json())
Führen Sie den folgenden Code in einer Befehlszeilenschnittstelle aus, um den Cortex Search Service über von Slack aufgenommene Meldungen abzufragen. Für den Zugriff auf Snowflake REST-APIs benötigen Sie eine Authentifizierung über ein Schlüsselpaar-Authenthifizierung und OAuth. Weitere Informationen dazu finden Sie unter Rest API und Authentifizierung von Snowflake REST APIs mit Snowflake.
Ersetzen Sie Folgendes:
cortex_db
: Name der Datenbank, die den Cortex Search Service enthält, angegeben durch den ParameterDestination Database
.cortex_schema
: Name des Schemas, das den Cortex Search Service enthält, angegeben durch den ParameterDestination Schema
.cortex_search_service_name
: Name des Cortex Search Service, angegeben durch den ParameterCortex Search Name
.account_url
: Ihre Snowflake-Konto-URL. Anweisungen zum Auffinden Ihrer Konto-URL finden Sie unter Suchen von Organisations- und Kontonamen eines Kontos.
curl --location "https://<account_url>/api/v2/databases/<cortex_db>/schemas/<cortex_schema>/cortex-search-services/<cortex_search_service_name>" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer <CORTEX_SEARCH_JWT>" \
--data '{
"query": "What is my vacation carry over policy?",
"columns": ["text", "channel"],
"limit": 1
}'
Beispielantwort:
{
"results" : [ {
"channel" : "dev notes",
"text" : "Answer to the question asked."
} ]
}