Paramétrer le connecteur Openflow pour Slack¶
Note
Le connecteur est soumis aux conditions d’utilisation du connecteur.
Cette rubrique décrit les paramètres de l’ensemble du connecteur Openflow pour Slack.
Conditions préalables¶
Assurez-vous d’avoir consulté Connecteur Openflow pour Slack.
Assurez-vous que vous avez paramétré Openflow.
Paramétrer une application Slack¶
Paramétrez une application Slack dans votre espace de travail Slack. Un administrateur Slack est nécessaire pour configurer l’accès à l’espace de travail Slack. Pour ce faire, il faut créer ou fournir des identifiants à une App Slack et installer l’App dans l’espace de travail et les canaux Slack. Vous pouvez créer une application Slack en utilisant la configuration JSON:
Mettez à jour le manifeste JSON. Copiez le texte du manifeste JSON ci-dessous. Modifiez les propriétés de nom et de nom d’affichage de
EXAMPLE_NAME_CHANGE_THIS
au nom souhaité de votre application Slack. Il est recommandé d’utiliser le même nom et le même nom d’affichage pour votre application.{ "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 } }
Créez une application Slack sur la page Apps.
Sur la page Vos apps, sélectionnez Créer une nouvelle app.
Sélectionnez à partir d’un manifeste.
Sélectionnez l’espace de travail dans lequel vous développerez votre application. Vous pourrez [distribuer votre application](https://api.slack.com/distribution) à d’autres espaces de travail ultérieurement si vous le souhaitez.
Copiez le manifeste mis à jour JSON à partir de l’étape 1.
Générer un jeton au niveau de l’application. Vous devez créer un jeton au niveau de l’application même après avoir utilisé le manifeste JSON. Sous Informations de base, faites défiler jusqu’à la section Jetons niveau app et cliquez sur le bouton pour générer un [jeton de niveau application](https://api.slack.com/concepts/token-types#app). Incluez le champ d’application
connections:write
au jeton.Installez et autorisez l’application.
Retournez à la section Informations de base de la page de gestion de l’application.
Installez votre application en sélectionnant le bouton Installer dans Workspace.
Vous serez alors dirigé vers le flux Slack OAuth. Sélectionnez Autoriser dans l’écran suivant.
Si vous souhaitez ajouter votre application à un autre espace de travail que le vôtre, ces étapes devront être effectuées par un utilisateur de cet espace de travail. Après l’installation, revenez à la page OAuth et autorisations. Vous verrez un jeton d’accès****sous** Jetons OAuth**. Les jetons d’accès représentent les autorisations déléguées à votre application par l’utilisateur qui l’installe. Gardez-les en sécurité. Évitez de les enregistrer dans un système de contrôle de version public. Au lieu de cela, accédez-y par le biais d’une variable d’environnement.
Ajouter l’application à un canal. Votre application n’est membre d’aucun canal pour l’instant, alors choisissez un canal pour y ajouter des messages de test et
/invite
votre application. Par exemple,/invite @Grocery Reminders
.
Note
Redémarrez les processeurs pour charger les nouveaux canaux. Après l’ajout de l’application à un nouveau canal, le processeur Consume Slack Conversation
dans l’environnement d’exécution OpenFlow doit être arrêté et redémarré.
Mise en place des règles d’entrée nécessaires¶
Un administrateur de Snowflake doit suivre le guide egress pour appliquer les règles d’egress au point de terminaison https://slack.com/api
et activer WebSocket egress sur wss://wss.slack.com
. Le plus simple est d’ajouter une règle pour activer la sortie sur le domaine slack.com.
Paramétrage du compte Snowflake¶
En tant qu’administrateur de compte Snowflake, effectuez les tâches suivantes :
Créez un nouveau rôle ou utilisez un rôle existant et accordez le Privilèges de base de données.
Créez un nouvel utilisateur du service Snowflake avec le type SERVICE.
Autorisez l’utilisateur du service Snowflake le rôle que vous avez créé dans les étapes précédentes.
Configurez avec l’authentification par paire de clés pour l’utilisateur de Snowflake SERVICE de l’étape 2.
Snowflake recommande vivement cette étape. Configurez un gestionnaire de secrets pris en charge par Openflow, par exemple AWS, Azure et Hashicorp, et stockez les clés publiques et privées dans le magasin de secrets.
Note
Si, pour une raison quelconque, vous ne souhaitez pas utiliser un gestionnaire de secrets, il vous incombe de protéger les fichiers de clés publiques et privées utilisés pour l’authentification par paires de clés conformément aux politiques de sécurité de votre organisation.
Une fois le gestionnaire de secrets configuré, déterminez comment vous vous y authentifierez. Sur AWS, il est recommandé d’utiliser le rôle de l’instance EC2 associée à Openflow, car de cette manière, aucun autre secret ne doit être conservé.
Dans Openflow, configurez un fournisseur de paramètres associé à ce gestionnaire de secrets, à partir du menu hamburger en haut à droite. Naviguez vers Controller Settings » Parameter Provider et récupérez les valeurs de vos paramètres.
À ce stade, tous les identifiants peuvent être référencés avec les chemins de paramètres associés et aucune valeur sensible ne doit être conservée dans Openflow.
Si d’autres utilisateurs de Snowflake ont besoin d’accéder aux documents bruts ingérés et aux tables ingérées par le connecteur (par exemple, pour un traitement personnalisé dans Snowflake), accordez à ces utilisateurs le rôle créé à l’étape 1.
Désignez un entrepôt à utiliser par le connecteur. Commencez par la taille d’entrepôt la plus petite, puis faites des essais en fonction du nombre de tables répliquées et de la quantité de données transférées. Les tables de grande taille s’adaptent généralement mieux aux entrepôts multi-clusters, plutôt qu’aux entrepôts de grande taille.
Cas d’utilisation 1 : ingérer uniquement le contenu de Slack¶
Utilisez la définition du connecteur pour :
Effectuez des analyses personnalisées sur les données Slack ingérées (pas de traitement Cortex Search).
Ingérez les messages Slack, les réactions, les pièces jointes aux fichiers et les listes de membres dans Snowflake, et maintenez-les à jour.
Définir le connecteur¶
En tant qu’ingénieur des données, effectuez les tâches suivantes pour configurer le connecteur :
Installer le connecteur¶
Créez une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées. Accordez les Privilèges de base de données requis au rôle créé lors de la première étape. Remplacez l’espace réservé au rôle par la valeur réelle et utilisez les commandes SQL suivantes :
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>;
Naviguez jusqu’à la page d’aperçu d’Openflow. Dans la section Featured connectors, sélectionnez View more connectors.
Sur la page des connecteurs Openflow, trouvez le connecteur et sélectionnez Add to runtime.
Dans la boîte de dialogue Select runtime, sélectionnez votre environnement d’exécution dans la liste déroulante Available runtimes.
Sélectionnez Add.
Note
Avant d’installer le connecteur, assurez-vous que vous avez créé une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées.
Authentifiez-vous au déploiement avec les identifiants de votre compte Snowflake et sélectionnez Allow lorsque vous êtes invité à autoriser l’application d’exécution à accéder à votre compte Snowflake. Le processus d’installation du connecteur prend quelques minutes.
Authentifiez-vous auprès de l’environnement d’exécution avec les identifiants de votre compte Snowflake.
Le canevas Openflow apparaît avec le groupe de processus du connecteur ajouté.
Configuration du connecteur¶
Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Paramètres.
Saisissez les valeurs des paramètres requises comme décrit dans Paramètres de flux : Ingérer le contenu uniquement ci-dessous.
Cliquez avec le bouton droit de la souris sur le canevas et sélectionnez Activer tous les services du contrôleur.
Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Démarrer. Le flux crée tous les objets Snowflake requis et commence à ingérer les données Slack.
Paramètres de flux : Contenu ingéré uniquement¶
Paramètre |
Description |
---|---|
Jeton d’application |
Jeton au niveau de l’application Slack généré dans l’application Slack. |
Jeton de bot |
Jeton de bot Slack généré dans l’application Slack. |
Base de données de destination |
Base de données contenant tous les objets du connecteur (créée si absente). |
Schéma de destination |
Schéma à l’intérieur de la base de données (créé si absent). |
Compte Snowflake |
Identificateur de compte Snowflake. |
Rôle Snowflake |
Rôle que le flux assume après l’authentification. |
Utilisateur Snowflake |
Nom d’utilisateur que le flux utilise pour se connecter. |
Clé privée de Snowflake |
Clé privée RSA utilisée pour l’authentification (format PKCS8 PEM). Notez que vous devez définir soit la clé privée de Snowflake, soit le fichier de clé privée de Snowflake. |
Mot de passe de la clé privée de Snowflake |
Mot de passe de la clé privée chiffrée (laissez vide si elle n’est pas chiffrée). |
Fichier de clé privée de Snowflake |
Fichier contenant la clé privée de RSA (format PKCS8 PEM). La ligne d’en-tête commence par |
Entrepôt Snowflake |
Entrepôt utilisé pour le SQL exécuté par le flux. |
Intervalle de téléchargement |
Il est temps de recueillir des données avant de les transmettre à Snowflake. Un intervalle plus long réduit la charge sur Snowflake mais peut augmenter la latence et l’utilisation de la mémoire. |
Actualiser les membres de Slack |
Minutes entre les actualisations des membres de Slack (ACL). |
Cas d’utilisation 2 : Ingérer le contenu de Slack et activer Cortex¶
Utilisez la définition du connecteur pour :
Préparez les données de Slack pour la recherche conversationnelle avec Snowflake Cortex.
Veillez à ce que les contrôles d’accès aux canaux Slack soient respectés dans les résultats de recherche.
Définir le connecteur¶
En tant qu’ingénieur des données, effectuez les tâches suivantes pour configurer le connecteur :
Installer le connecteur¶
Créez une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées. Accordez les Privilèges de base de données requis au rôle créé lors de la première étape. Remplacez l’espace réservé au rôle par la valeur réelle et utilisez les commandes SQL suivantes :
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>;
Naviguez jusqu’à la page d’aperçu d’Openflow. Dans la section Featured connectors, sélectionnez View more connectors.
Sur la page des connecteurs Openflow, trouvez le connecteur et sélectionnez Add to runtime.
Dans la boîte de dialogue Select runtime, sélectionnez votre environnement d’exécution dans la liste déroulante Available runtimes.
Sélectionnez Add.
Note
Avant d’installer le connecteur, assurez-vous que vous avez créé une base de données et un schéma dans Snowflake pour que le connecteur puisse stocker les données ingérées.
Authentifiez-vous au déploiement avec les identifiants de votre compte Snowflake et sélectionnez Allow lorsque vous êtes invité à autoriser l’application d’exécution à accéder à votre compte Snowflake. Le processus d’installation du connecteur prend quelques minutes.
Authentifiez-vous auprès de l’environnement d’exécution avec les identifiants de votre compte Snowflake.
Le canevas Openflow apparaît avec le groupe de processus du connecteur ajouté.
Configuration du connecteur¶
Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Paramètres.
Saisissez les valeurs des paramètres requis comme décrit dans Paramètres de flux : Ingérer le contenu et activer le Cortex ci-dessous.
Cliquez avec le bouton droit de la souris sur le canevas et sélectionnez Activer tous les services du contrôleur.
Cliquez avec le bouton droit de la souris sur le groupe de processus importé et sélectionnez Démarrer.
Une fois le flux lancé, passez à Interroger le service Cortex Search pour les tests.
Paramètres de flux : Ingérer le contenu et activer le Cortex¶
Paramètre |
Description |
---|---|
Jeton d’application |
Jeton au niveau de l’application Slack généré dans l’application Slack. |
Jeton de bot |
Jeton de bot Slack généré dans l’application Slack. |
Base de données de destination |
Base de données contenant tous les objets du connecteur (créée si absente). |
Schéma de destination |
Schéma à l’intérieur de la base de données (créé si absent). |
Intervalle de téléchargement |
Il est temps de recueillir des données avant de les transmettre à Snowflake. Une valeur plus élevée réduit le chargement mais augmente la latence des données. |
Compte Snowflake |
Identificateur de compte Snowflake. |
Rôle Snowflake |
Rôle que le flux assume après l’authentification. |
Utilisateur Snowflake |
Nom d’utilisateur que le flux utilise pour se connecter. |
Clé privée de Snowflake |
La clé privée formatée PEM pour l’authentification de la paire de clés. |
Mot de passe de la clé privée de Snowflake |
Mot de passe de la clé privée chiffrée (vide si elle n’est pas chiffrée). |
Entrepôt Snowflake |
Entrepôt utilisé pour tous les SQL exécutés par le flux et par Cortex. |
Actualiser les membres de Slack |
Minutes entre les actualisations des membres de Slack (ACL). |
Activation des ACLs de canal privé¶
Aucune exigence supplémentaire n’est requise en dehors de l’invitation de l’application Slack à chaque canal privé. Le connecteur actualise automatiquement la liste des membres et la stocke dans la table des membres à chaque intervalle Actualiser les membres de Slack.
Requête auprès du service Cortex Search Service¶
Une fois le cas d’utilisation 2 exécuté et le service Cortex Search créé, vous pouvez l’interroger comme suit :
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;
Colonnes communes consultables
text
, type
, subtype
, channel
, user
, username
, connectorId
, workspaceId
, ts
, threadTs
Exemple : Requête auprès d’un assistant AI pour obtenir des informations sur les ressources humaines (HR)
Vous pouvez utiliser Cortex Search pour interroger un assistant AI afin que les employés discutent des derniers messages sur Slack. Les messages recherchés peuvent provenir de canaux Slack informatifs tels que general ou it-help.
Exécutez ce qui suit dans une feuille de calcul SQL pour interroger le service Cortex Search sur les messages ingérés depuis Slack.
Remplacez les éléments suivants :
cortex_db
: Nom de la base de données contenant le service Cortex Search, spécifié par le paramètreBase de données de destination
.cortex_schema
: Nom du schéma contenant le service Cortex Search, spécifié par le paramètreSchéma de destination
.cortex_search_service_name
: Nom du service de recherche de cortex, spécifié par le paramètreNom Cortex Search
.user_emailID
: ID d’email de l’utilisateur pour lequel vous souhaitez filtrer les réponses.
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
Exécutez le code suivant dans une feuille de calcul Python <label-snowsight_worksheets_create> pour interroger le service Cortex Search sur les messages ingérés depuis Slack. Assurez-vous d’ajouter le paquet snowflake.core
à votre base de données.
Remplacez les éléments suivants :
cortex_db
: Nom de la base de données contenant le service Cortex Search, spécifié par le paramètreBase de données de destination
.cortex_schema
: Nom du schéma contenant le service Cortex Search, spécifié par le paramètreSchéma de destination
.cortex_search_service_name
: Nom du service de recherche de cortex, spécifié par le paramètreNom Cortex Search
.user_emailID
: ID d’email de l’utilisateur pour lequel vous souhaitez filtrer les réponses.
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())
Exécutez le code suivant dans une interface de ligne de commande pour interroger le service Cortex Search sur les messages ingérés depuis Slack. Vous devrez vous authentifier à l’aide d’une paire de clés et de OAuth pour accéder aux APIs REST de Snowflake. Pour plus d’informations, voir Rest API et Authentification d”Snowflake REST APIs avec Snowflake.
Remplacez les éléments suivants :
cortex_db
: Nom de la base de données contenant le service Cortex Search, spécifié par le paramètreBase de données de destination
.cortex_schema
: Nom du schéma contenant le service Cortex Search, spécifié par le paramètreSchéma de destination
.cortex_search_service_name
: Nom du service de recherche de cortex, spécifié par le paramètreNom Cortex Search
.account_url
: Votre URL de compte Snowflake . Pour obtenir des instructions sur la façon de trouver l’URL de votre compte, voir Recherche de l’organisation et du nom de compte pour un compte.
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
}'
Exemple de réponse :
{
"results" : [ {
"channel" : "dev notes",
"text" : "Answer to the question asked."
} ]
}