Ce tutoriel explique comment utiliser Cloud Run Functions 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
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, and Google Knowledge Graph Search 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, and Google Knowledge Graph Search 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.
- La fonction 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 met en forme la réponse dans un message Slack.
- La fonction 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 :
Créer la clé API Knowledge Graph
Sur la page Identifiants de Google Cloud Console, cliquez sur le bouton Créer des identifiants, puis sélectionnez Clé API. Notez cette clé, car vous l'utiliserez pour accéder à l'API Knowledge Graph dans la section suivante.
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/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 kgSearch \ --runtime nodejs20 \
--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 kg_search \ --runtime python312 \
--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 KGSearch \ --runtime go121 \
--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 \ --entry-point functions.SlackSlashCommand \ --runtime java17 \ --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 \ --entry-point SlackKnowledgeGraphSearch.Function \ --runtime dotnet6 \
--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 kg_search --runtime ruby33 \
--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 searchKnowledgeGraph --runtime php82 \
--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 :
Créez une application Slack pour héberger votre commande Slack Slash. Associez-la à une équipe Slack dans laquelle vous disposez des autorisations pour installer des intégrations.
Accédez aux commandes Slash et cliquez sur le bouton Create new command (Créer une commande).
Saisissez
/kg
comme nom de la commande.Entrez l'URL de la commande :
Node.js
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kgSearch
Python
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kg_search
Go
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/KGSearch
Java
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/java-slack-function
C#
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/csharp-slack-function
Ruby
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/kg_search
PHP
https://YOUR_REGION-YOUR_PROJECT_ID.cloudfunctions.net/searchKnowledgeGraph
où
YOUR_REGION
est la région dans laquelle votre fonction est déployée etYOUR_PROJECT_ID
est votre ID de projet Cloud.Les deux valeurs sont visibles dans votre terminal lorsque le déploiement de votre fonction est terminé.
Cliquez sur Enregistrer.
Allez à Informations de base.
Cliquez sur Install your app to your workspace (Installer votre application dans votre 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 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
Tapez la commande dans votre chaîne Slack :
/kg giraffe
Consultez les journaux pour vous assurer que les exécutions sont terminées :
gcloud functions logs read --limit 100
Nettoyer
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 que vous avez déployée dans ce tutoriel, exécutez la commande suivante :
Node.js
gcloud functions delete kgSearch
Python
gcloud functions delete kg_search
Go
gcloud functions delete KGSearch
Java
gcloud functions delete java-slack-function
C#
gcloud functions delete csharp-slack-function
Ruby
gcloud functions delete kg_search
PHP
gcloud functions delete searchKnowledgeGraph
Vous pouvez également supprimer des fonctions Cloud Run à partir de la console Google Cloud.