Ce tutoriel explique comment utiliser les fonctions Cloud Run pour exécuter une commande Slash Slack qui effectue une recherche dans l'API Google Knowledge Graph.
Objectifs
- Créer une commande Slash dans Slack
- Rédiger et déployer une fonction Cloud Run HTTP
- Effectuer une recherche dans l'API Google Knowledge Graph à l'aide de la commande Slash
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
- Cloud Run functions
- Cloud Build
- Artifact Registry
- Cloud Logging
For details, see Cloud Run functions pricing.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, and Logging APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, and Logging APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Préparez votre environnement de développement.
Node.js
Python
Go
Java
C#
Ruby
PHP
Si la gcloud CLI est déjà installée, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Visualiser le flux de données
Le flux de données dans l'application du tutoriel sur la commande Slack Slash comporte plusieurs étapes :
- L'utilisateur exécute la commande Slash
/kg <search_query>
dans une chaîne Slack. - Slack envoie la commande payload au point de terminaison déclencheur de la fonction Cloud Run.
- La fonction Cloud Run envoie une requête avec la requête de recherche de l'utilisateur à l'API Knowledge Graph.
- L'API Knowledge Graph répond avec les résultats correspondants.
- La fonction Cloud Run met en forme la réponse dans un message Slack.
- La fonction Cloud Run renvoie le message à Slack.
- L'utilisateur visualise la réponse mise en forme dans la chaîne Slack.
Observez le schéma ci-dessous pour visualiser les étapes :
Obtenir des identifiants
Pour déployer votre fonction, vous avez besoin d'une clé API fournie par la console Google Cloud et d'un secret de signature Slack.
Obtenir la clé API Knowledge Graph
Sur la page Identifiants de la console Google Cloud, cliquez sur le bouton Créer des identifiants, puis sélectionnez Clé API. Notez cette clé, car vous allez l'inclure dans votre commande deploy
. Cette clé permet à votre fonction d'accéder à l'API Knowledge Graph.
Obtenir le secret de signature Slack
Vous avez également besoin du secret de signature Slack pour déployer votre fonction. Pour obtenir le secret de signature Slack, créez l'application Slack qui hébergera votre commande Slash Slack. Cette application doit être associée à une équipe Slack dans laquelle vous disposez des autorisations pour installer des intégrations.
Accédez à la page Vos applications de Slack, puis cliquez sur Créer une application.
Sélectionnez À partir de zéro.
Attribuez un nom à votre application et sélectionnez un espace de travail Slack dans lequel vous disposez des autorisations nécessaires pour installer les intégrations.
Cliquez sur Create App (Créer l'application).
L'application est créée et la page Informations de base s'affiche.
Sur la page Informations de base, copiez votre secret de signature Slack et enregistrez-le.
Enregistrez les modifications.
Vous devez ensuite obtenir le code source et déployer votre fonction. Après avoir déployé votre fonction, vous allez configurer votre application Slack pour l'intégrer à la fonction déployée, comme décrit dans la section Configurer l'application.
Préparer la fonction
Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code de Cloud Run Functions :
Node.js
cd nodejs-docs-samples/functions/slack/
Python
cd python-docs-samples/functions/slack/
Go
cd golang-samples/functions/functionsv2/slack/
Java
cd java-docs-samples/functions/slack/
C#
cd dotnet-docs-samples/functions/slack/SlackKnowledgeGraphSearch/
Ruby
cd ruby-docs-samples/functions/slack/
PHP
cd php-docs-samples/functions/slack_slash_command/
Déployer la fonction
Pour déployer la fonction qui est exécutée lorsque vous (ou Slack) effectuez une requête HTTP POST sur le point de terminaison de la fonction, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier pom.xml
).
Remplacez YOUR_SLACK_SIGNING_SECRET
par le secret de signature fourni par Slack sur la page Informations générales de la configuration de votre application, et YOUR_KG_API_KEY
par la clé API Knowledge Graph créée précédemment.
Node.js
gcloud functions deploy nodejs-slack-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=kgSearch \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Node.js compatible pour exécuter votre fonction.
Python
gcloud functions deploy python-slack-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=kg_search \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Python compatible pour exécuter votre fonction.
Go
gcloud functions deploy go-slack-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=KGSearch \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Go compatible pour exécuter votre fonction.
Java
gcloud functions deploy java-slack-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SlackSlashCommand \ --memory=512MB \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Java compatible pour exécuter votre fonction.
C#
gcloud functions deploy csharp-slack-function \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=SlackKnowledgeGraphSearch.Function \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version .NET compatible pour exécuter votre fonction.
Ruby
gcloud functions deploy ruby-slack-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=kg_search \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version Ruby compatible pour exécuter votre fonction.
PHP
gcloud functions deploy php-slack-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=receiveRequest \
--trigger-http \
--set-env-vars "SLACK_SECRET=YOUR_SLACK_SIGNING_SECRET
,KG_API_KEY=YOUR_KG_API_KEY
" \
--allow-unauthenticated
Utilisez l'option --runtime
pour spécifier l'ID d'exécution d'une version PHP compatible pour exécuter votre fonction.
Configurer l'application
Une fois la fonction déployée, vous devez créer une commande Slack Slash qui envoie la requête à votre fonction à chaque déclenchement de la commande :
Revenez à l'application Slack que vous avez créée ci-dessus.
Sélectionnez l'application, accédez aux commandes Slash, puis cliquez sur le bouton Créer une commande.
Saisissez
/kg
comme nom de la commande.Dans le champ URL de la requête, saisissez l'URL de votre fonction.
Vous pouvez copier l'URL à partir du résultat de la commande
deploy
ou accéder à la page Présentation des fonctions Cloud Run dans la console Google Cloud, puis cliquer sur la fonction pour ouvrir sa page Informations sur la fonction et copier l'URL depuis cette page.Saisissez une brève description, puis cliquez sur Enregistrer.
Allez à Informations de base.
Cliquez sur Install to Workspace (Installer sur l'espace de travail) et suivez les instructions à l'écran pour activer l'application pour votre espace de travail.
Votre commande Slash Slack devrait être bientôt disponible.
Comprendre le code
Importer des dépendances
L'application doit importer plusieurs dépendances afin de pouvoir communiquer avec les services Google Cloud Platform :
Node.js
Python
Go
Java
C#
Ruby
PHP
Recevoir le webhook
La fonction suivante est exécutée lorsque vous (ou Slack) effectuez une requête HTTP POST sur le point de terminaison de la fonction :
Node.js
Python
Go
Java
C#
Ruby
PHP
La fonction suivante authentifie la requête entrante en vérifiant l'en-tête X-Slack-Signature
fourni par Slack :
Node.js
Python
Go
Java
C#
Ruby
PHP
Interroger l'API Knowledge Graph
La fonction cloud envoie une demande avec la requête de recherche de l'utilisateur à l'API Knowledge Graph.
Node.js
Python
Go
Java
C#
Ruby
PHP
Mettre en forme le message Slack
Enfin, la fonction suivante met en forme le résultat Knowledge Graph en message Slack enrichi qui sera visible par l'utilisateur :
Node.js
Python
Go
Java
C#
Ruby
PHP
Délais avant expiration de l'API Slack
L'API Slack s'attend à ce que votre fonction réponde dans un délai de trois secondes suivant la réception d'une requête webhook.
Les commandes utilisées dans ce tutoriel prennent généralement moins de trois secondes pour répondre. Pour les commandes à exécution plus longue, nous recommandons de configurer une fonction pour les requêtes push (y compris leur champ response_url
) envoyées à un sujet Pub/Sub qui agit en tant que file d'attente de tâches.
Ensuite, vous pouvez créer une deuxième fonction déclenchée par Pub/Sub qui traite ces tâches et renvoie les résultats à l'adresse response_url
de Slack.
Utiliser la commande Slash
Une fois le déploiement de la fonction terminé, saisissez cette commande dans votre canal Slack :
/kg giraffe
Vous devriez voir l'entrée Knowledge Graph pour "giraffe".
Consultez les journaux pour voir la sortie de l'exécution de la fonction :
gcloud functions logs read --limit 100
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet mais supprimez les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Supprimer la fonction
Pour supprimer la fonction Cloud Run que vous avez déployée dans ce tutoriel, exécutez la commande suivante :
Node.js
gcloud functions delete nodejs-slack-function --gen2 --region REGION
Python
gcloud functions delete python-slack-function --gen2 --region REGION
Go
gcloud functions delete go-slack-function --gen2 --region REGION
Java
gcloud functions delete java-slack-function --gen2 --region REGION
C#
gcloud functions delete csharp-slack-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-slack-function --gen2 --region REGION
PHP
gcloud functions delete php-slack-function --gen2 --region REGION
Vous pouvez également supprimer des fonctions Cloud Run à partir de la console Google Cloud.