1. Présentation
Dans cet atelier de programmation, vous allez apprendre à créer un bot Slack à l'aide de la boîte à outils Botkit et à l'exécuter sur Google Cloud. Vous pourrez ensuite interagir avec le bot dans une chaîne Slack en direct.
Points abordés
- Créer une intégration personnalisée de bot dans Slack
- Sécuriser vos secrets Slack avec Secret Manager
- Déployer un bot Slack sur Cloud Run, une plate-forme de calcul entièrement gérée qui effectue un scaling automatique de vos conteneurs sans état
Prérequis
Comment allez-vous utiliser ce tutoriel ?
Comment évalueriez-vous votre expérience avec Google Cloud ?
<ph type="x-smartling-placeholder">2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)
- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours la modifier.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID
). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, vous allez utiliser dans ce tutoriel Cloud Shell, un environnement de ligne de commande exécuté dans le cloud.
Activer Cloud Shell
- Dans Cloud Console, cliquez sur Activer Cloud Shell .
Si vous démarrez Cloud Shell pour la première fois, un écran intermédiaire vous explique de quoi il s'agit. Si un écran intermédiaire vous s'est présenté, cliquez sur Continue (Continuer).
Le provisionnement et la connexion à Cloud Shell ne devraient pas prendre plus de quelques minutes.
Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute dans Google Cloud, ce qui améliore considérablement les performances du réseau et l'authentification. Une grande partie, voire la totalité, de votre travail dans cet atelier de programmation peut être effectué dans un navigateur.
Une fois connecté à Cloud Shell, vous êtes authentifié et le projet est défini sur votre ID de projet.
- Exécutez la commande suivante dans Cloud Shell pour vérifier que vous êtes authentifié :
gcloud auth list
Résultat de la commande
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet:
gcloud config list project
Résultat de la commande
[core] project = <PROJECT_ID>
Si vous obtenez un résultat différent, exécutez cette commande :
gcloud config set project <PROJECT_ID>
Résultat de la commande
Updated property [core/project].
3. Activer les API
Dans Cloud Shell, activez les API Artifact Registry, Cloud Build, Cloud Run et Secret Manager:
gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ secretmanager.googleapis.com
Un message de réussite semblable à celui-ci s'affiche:
Operation "operations/..." finished successfully.
Vous êtes maintenant prêt à préparer et à déployer votre application.
4. Créer un espace de travail Slack
Vous aurez besoin d'un espace de travail Slack dans lequel vous serez autorisé à créer des intégrations personnalisées. Vous pouvez créer un espace de travail sans frais si vous n'en avez pas encore que vous souhaitez utiliser pour ce tutoriel.
5. Créer un utilisateur de bot Slack
Un utilisateur bot peut consulter et publier des messages, ainsi qu'importer des fichiers dans Slack. Dans cet atelier de programmation, vous allez créer un bot pour publier un message d'accueil simple.
Créer une application Slack
- Accédez à la page de gestion des applications Slack.
- Cliquez sur le bouton Create new app (Créer une application) en haut à droite.
- Donnez un nom à l'application, par exemple "Kittenbot".
- Choisissez l'espace de travail Slack où elle sera installée pour votre équipe.
Créer un utilisateur de bot
- Accédez à la page d'accueil de l'application dans le panneau de gauche, sous Fonctionnalités.
- Attribuez un niveau d'accès à votre jeton de bot en cliquant sur Examiner les niveaux d'accès à ajouter
- Faites défiler la page jusqu'à Champs d'application du jeton de bot, puis cliquez sur Ajouter un champ d'application OAuth. Sélectionnez
chat:write
pour envoyer des messages en tant que Kittenbot.
- Faites défiler la page vers le haut et cliquez sur le bouton Install App to your Workspace (Installer l'application dans votre espace de travail).
- L'application est alors installée pour votre équipe, l'utilisateur de bot que vous venez de créer est ajouté et un jeton de bot est généré.
- Lorsque vous y êtes invité, cliquez sur Autoriser. pour autoriser le bot à discuter dans votre espace de travail.
Activer les messages et les commandes
- Faites défiler la page jusqu'à Afficher les onglets et assurez-vous que les deux options sont activées:
Obtenir la signature secrète du client
- Accédez à Informations générales sous Paramètres.
- Faites défiler la page jusqu'à Signing Secret (Code secret de signature), cliquez sur Show (Afficher), puis copiez le code secret dans le presse-papiers:
- Enregistrez le secret dans une variable d'environnement:
CLIENT_SIGNING_SECRET=PASTE_THE_SIGNING_SECRET
Obtenir le jeton du bot
- Accédez à la page OAuth & Autorisations sous Fonctionnalités.
- Cliquez sur le bouton Copy (Copier) pour copier le texte du champ Bot user OAuth access token (Jeton d'accès OAuth de l'utilisateur bot) dans votre presse-papiers.
- Enregistrez le jeton du bot dans une variable d'environnement:
BOT_TOKEN=PASTE_THE_BOT_TOKEN
Ne vous inquiétez pas. Vous pouvez revenir sur cette page de configuration à partir de la page de gestion des applications si vous avez besoin de récupérer à nouveau ces jetons.
6. Un secret, c'est sacré
Nous voulons nous assurer que votre jeton de bot et votre signature secrète client sont stockés de manière sécurisée. Si vous les codez en dur dans le code source, vous risquez d'exposer accidentellement ces secrets en les publiant dans le système de contrôle des versions ou en les intégrant à une image Docker.
Secret Manager constitue une méthode sécurisée et pratique pour stocker des clés API, des mots de passe, des certificats et d'autres données sensibles. Secret Manager fournit un emplacement centralisé et une source de vérité unique pour la gestion, la consultation et l'audit des secrets sur Google Cloud.
Créer vos secrets
Enregistrez votre signature secrète client et votre jeton de bot à l'aide des commandes suivantes:
- Signature secrète du client
echo -n $CLIENT_SIGNING_SECRET | gcloud secrets create client-signing-secret \ --replication-policy automatic \ --data-file -
- Jeton de bot
echo -n $BOT_TOKEN | gcloud secrets create bot-token \ --replication-policy automatic \ --data-file -
Accéder à vos secrets
Vérifions que vos secrets ont été créés correctement et que vos autorisations fonctionnent. Accédez à vos secrets à l'aide des commandes suivantes:
echo $(gcloud secrets versions access 1 --secret client-signing-secret) echo $(gcloud secrets versions access 1 --secret bot-token)
Vous pouvez également afficher et gérer vos secrets dans la console Google Cloud.
7. Obtenir l'exemple de code
Dans Cloud Shell, exécutez la commande suivante pour cloner le dépôt GitHub :
git clone https://github.com/googlecodelabs/cloud-slack-bot.git
Changez de répertoire en cloud-slack-bot/start
.
cd cloud-slack-bot/start
Comprendre le code
Ouvrez le fichier kittenbot.js
avec l'éditeur de ligne de commande de votre choix (nano, vim, emacs, etc.) ou à l'aide de la commande suivante pour ouvrir directement le dossier actuel dans l'éditeur Cloud Shell:
cloudshell workspace .
Le code de kittenbot a deux fonctions principales. l'une pour récupérer les secrets et l'autre pour exécuter le bot.
Tout d'abord, nous importons les dépendances:
kittenbot.js
const { Botkit } = require('botkit');
const {
SlackAdapter,
SlackEventMiddleware,
} = require('botbuilder-adapter-slack');
const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
SlackAdapter et SlackEventMiddleware sont des packages qui étendent le Botkit et permettent au bot de traduire facilement des messages vers et depuis l'API Slack. Le client Secret Manager vous permet d'accéder aux secrets que vous avez enregistrés précédemment.
Ensuite, nous avons notre fonction pour récupérer les secrets:
/**
* Returns the secret string from Google Cloud Secret Manager
* @param {string} name The name of the secret.
* @return {Promise<string>} The string value of the secret.
*/
async function accessSecretVersion(name) {
const client = new SecretManagerServiceClient();
const projectId = process.env.PROJECT_ID;
const [version] = await client.accessSecretVersion({
name: `projects/${projectId}/secrets/${name}/versions/1`,
});
// Extract the payload as a string.
const payload = version.payload.data.toString('utf8');
return payload;
}
Cette fonction renvoie les valeurs de chaîne des secrets nécessaires pour authentifier le bot.
La fonction suivante initialise le bot:
/**
* Function to initialize kittenbot.
*/
async function kittenbotInit() {
const adapter = new SlackAdapter({
clientSigningSecret: await accessSecretVersion('client-signing-secret'),
botToken: await accessSecretVersion('bot-token'),
});
adapter.use(new SlackEventMiddleware());
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
}
);
});
}
La première partie de la fonction configure SlackAdapter avec les secrets, puis spécifie un point de terminaison pour la réception des messages. Ensuite, une fois le contrôleur activé, le bot répond à tous les messages contenant "hello", "hi" ou "hey". par "Miaou. résume".
Consultez ces parties spécifiques dans le fichier manifeste de l'application:
package.json
{
// ...
"scripts": {
"start": "node kittenbot.js",
// ...
},
"engines": {
"node": "16"
},
// ...
}
Vous pouvez déployer une application Node.js directement depuis la source avec Cloud Run. Voici ce qui se passe en arrière-plan:
- Cloud Run appelle Cloud Build pour créer une image de conteneur (consultez la section Déployer depuis le code source).
- Si le répertoire du code source contient un élément
Dockerfile
, Cloud Build l'utilise pour créer une image de conteneur. - Comme ce n'est pas le cas, Cloud Build appelle Buildpacks pour analyser la source et générer automatiquement une image prête pour la production.
- Buildpacks détecte le fichier manifeste
package.json
et crée une image Node.js. - Le champ
scripts.start
détermine le mode de démarrage de l'application. - Le champ
engines.node
détermine la version Node.js de l'image de base du conteneur. - Au moment du déploiement, les correctifs de sécurité connus sont automatiquement appliqués.
Vous êtes prêt à déployer l'application.
8. Déployer l'application
L'API Slack Events utilise des webhooks pour envoyer des messages sortants concernant des événements. Lorsque vous configurez l'application Slack, vous devez fournir une URL accessible publiquement pour que l'API Slack lui envoie un ping.
Cloud Run est une bonne solution pour héberger des cibles de webhooks. Il vous permet d'utiliser le langage ou l'environnement d'exécution de votre choix et offre une simultanéité, ce qui signifie que votre application peut gérer un volume beaucoup plus élevé.
Récupérer l'ID de votre projet
Définissez la variable d'environnement PROJECT_ID:
PROJECT_ID=$(gcloud config get-value core/project)
Définir votre région Cloud Run
Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute votre service Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région. Définissez la région que vous utiliserez pour votre déploiement, par exemple:
REGION="us-central1"
Modifier les autorisations
Pour pouvoir accéder aux secrets depuis Secret Manager, le compte de service Cloud Run doit disposer du rôle roles/secretmanager.secretAccessor
.
Commencez par enregistrer le compte de service par défaut dans une variable d'environnement:
SERVICE_ACCOUNT=$(gcloud iam service-accounts list \ --format "value(email)" \ --filter "displayName:Compute Engine default service account")
Vérifiez que l'adresse e-mail a bien été enregistrée:
echo $SERVICE_ACCOUNT
Le compte de service a le format suivant: PROJECT_NUMBER-compute@developer.gserviceaccount.com
.
Une fois que vous disposez de l'adresse e-mail, activez le rôle pour le compte de service:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT \ --role roles/secretmanager.secretAccessor
Déployer l'application
Un service Cloud Run expose un point de terminaison unique et adapte automatiquement l'infrastructure sous-jacente pour gérer les requêtes entrantes.
Déployez l'application sur Cloud Run :
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
- Un service appelé
kittenbot
est alors créé. - L'option
--source
utilise le dossier actuel pour créer l'application avec Cloud Build. Cloud Build détecte automatiquement la présence du fichierpackage.json
. - Vous pouvez également définir une région par défaut à l'aide de cette commande:
gcloud config set run/region $REGION
- Vous pouvez également rendre Cloud Run géré par défaut à l'aide de cette commande:
gcloud config set run/platform managed
- L'option
--set-env-vars
définit les variables d'environnement du service. - L'option
--allow-unauthenticated
rend le service public.
La première fois, vous serez invité à créer un dépôt Artifact Registry. Appuyez sur Entrée pour valider:
Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [REGION] will be created. Do you want to continue (Y/n)?
Cette opération lance l'importation de votre code source dans le dépôt Artifact Registry et la compilation de votre image de conteneur:
Building using Dockerfile and deploying container ... * Building and deploying new service... Building Container. OK Creating Container Repository... OK Uploading sources... * Building Container... Logs are available at ...
Attendez ensuite la fin de la compilation et du déploiement. En cas de réussite, la ligne de commande affiche l'URL du service :
... OK Building and deploying new service... Done. OK Creating Container Repository... OK Uploading sources... OK Building Container... Logs are available at ... OK Creating Revision... Creating Service. OK Routing traffic... OK Setting IAM Policy... Done. Service [SERVICE]... has been deployed and is serving 100 percent of traffic. Service URL: https://SERVICE-PROJECTHASH-REGIONID.a.run.app
Vous pouvez obtenir l'URL du service à l'aide de la commande suivante:
SERVICE_URL=$( \ gcloud run services describe kittenbot \ --platform managed \ --region $REGION \ --format "value(status.url)" \ ) echo $SERVICE_URL
L'URL a le format suivant:
https://kittenbot-PROJECTHASH-REGIONID.a.run.app
Cette URL servira de base pour activer l'API Slack Events. Copiez-le dans le presse-papiers pour l'utiliser à l'étape suivante.
Votre service est désormais actif et public. Pour en savoir plus, accédez à la console Cloud Run.
Vous pouvez voir quand la dernière révision a été créée, le volume de trafic qu'elle reçoit et consulter les journaux. Si nous cliquons sur les journaux, nous pouvons voir que le contrôleur Botkit est activé et prêt à recevoir des messages.
Commençons à envoyer des messages depuis notre canal Slack.
9. Activer les événements Slack
Comme nous l'avons vu précédemment, le code kittenbot spécifie un point de terminaison relatif pour la cible du webhook.
kittenbot.js
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
Cela signifie que notre URL complète correspondra à la partie de base du service Cloud Run, plus /api/messages
.
Activer les événements
Sur la page de gestion des applications, accédez à la section Abonnements aux événements dans la barre latérale, puis activez l'option Activer les événements. Saisissez l'URL de votre service:
PASTE_THE_SERVICE_URL/api/messages
Selon la rapidité à laquelle vous saisissez l'URL, la validation peut être effectuée avant que vous ayez terminé. S'il n'y parvient pas, cliquez sur "Réessayer".
S'abonner
S'abonner à tous les événements du bot de message
Cliquez sur Enregistrer les modifications en bas de la page. Vous êtes alors invité à réinstaller votre application. Suivez les instructions, puis cliquez sur Autoriser.
À ce stade, votre bot est entièrement intégré. Les messages de l'espace de travail déclencheront l'envoi par Slack à votre service Cloud Run, qui répondra à son tour par un simple message d'accueil.
10. Tester votre bot
Envoyer un message privé à Kittenbot:
Ajoutez kittenbot à votre chaîne en saisissant "@kittenbot". puis cliquez sur "Inviter".
Désormais, tous les membres de votre chaîne peuvent interagir avec Kittenbot !
Chaque message dans Slack déclenche un événement et envoie un message HTTP POST à notre service Cloud Run. Si vous consultez les journaux du service Cloud Run, vous constaterez que chaque message correspond à une entrée POST dans le journal.
Le kittenbot répond à chaque message par "Miaou. résume".
11. Bonus : Mettre à jour votre bot
Cette section facultative devrait prendre quelques minutes. N'hésitez pas à passer directement au nettoyage.
Fils de discussion
Nous aimerions que le bot fasse plus que miauler. Mais comment déployer une nouvelle version d'un élément exécuté sur Cloud Run ?
Remplacez le répertoire par cloud-slack-bot/extra-credit
:
cd ../extra-credit/
Ouvrez le dossier actuel dans l'éditeur Cloud Shell:
cloudshell workspace .
Botkit offre la possibilité de gérer les conversations. Grâce à cet outil, le bot peut demander plus d'informations et répondre aux messages avec plus d'un seul mot.
Définir la boîte de dialogue
Tout d'abord, découvrez comment les fonctions de conversation sont définies à la fin du fichier:
// ...
const maxCats = 20;
const catEmojis = [
':smile_cat:',
':smiley_cat:',
':joy_cat:',
':heart_eyes_cat:',
':smirk_cat:',
':kissing_cat:',
':scream_cat:',
':crying_cat_face:',
':pouting_cat:',
':cat:',
':cat2:',
':leopard:',
':lion_face:',
':tiger:',
':tiger2:',
];
/**
* Function to concatenate cat emojis
* @param {number} numCats Number of cat emojis.
* @return {string} The string message of cat emojis.
*/
function makeCatMessage(numCats) {
let catMessage = '';
for (let i = 0; i < numCats; i++) {
// Append a random cat from the list
catMessage += catEmojis[Math.floor(Math.random() * catEmojis.length)];
}
return catMessage;
}
/**
* Function to create the kitten conversation
* @param {Object} controller The botkit controller.
* @return {Object} The BotkitConversation object.
*/
function createKittenDialog(controller) {
const convo = new BotkitConversation('kitten-delivery', controller);
convo.ask('Does someone need a kitten delivery?', [
{
pattern: 'yes',
handler: async (response, convo, bot) => {
await convo.gotoThread('yes_kittens');
},
},
{
pattern: 'no',
handler: async (response, convo, bot) => {
await convo.gotoThread('no_kittens');
},
},
{
default: true,
handler: async (response, convo, bot) => {
await convo.gotoThread('default');
},
},
]);
convo.addQuestion(
'How many would you like?',
[
{
pattern: '^[0-9]+?',
handler: async (response, convo, bot, message) => {
const numCats = parseInt(response);
if (numCats > maxCats) {
await convo.gotoThread('too_many');
} else {
convo.setVar('full_cat_message', makeCatMessage(numCats));
await convo.gotoThread('cat_message');
}
},
},
{
default: true,
handler: async (response, convo, bot, message) => {
if (response) {
await convo.gotoThread('ask_again');
} else {
// The response '0' is interpreted as null
await convo.gotoThread('zero_kittens');
}
},
},
],
'num_kittens',
'yes_kittens'
);
// If numCats is too large, jump to start of the yes_kittens thread
convo.addMessage(
'Sorry, {{vars.num_kittens}} is too many cats. Pick a smaller number.',
'too_many'
);
convo.addAction('yes_kittens', 'too_many');
// If response is not a number, jump to start of the yes_kittens thread
convo.addMessage("Sorry I didn't understand that", 'ask_again');
convo.addAction('yes_kittens', 'ask_again');
// If numCats is 0, send a dog instead
convo.addMessage(
{
text:
'Sorry to hear you want zero kittens. ' +
'Here is a dog, instead. :dog:',
attachments: [
{
fallback: 'Chihuahua Bubbles - https://youtu.be/s84dBopsIe4',
text: '<https://youtu.be/s84dBopsIe4|' + 'Chihuahua Bubbles>!',
},
],
},
'zero_kittens'
);
// Send cat message
convo.addMessage('{{vars.full_cat_message}}', 'cat_message');
convo.addMessage('Perhaps later.', 'no_kittens');
return convo;
}
Cette nouvelle conversation oriente le fil de discussion en fonction des réponses. Par exemple, si l'utilisateur répond "non". à la question "chaton", il passe au message intitulé "no_kittens", qui constitue la fin du fil de discussion.
Ajouter la boîte de dialogue au contrôleur
Maintenant que la conversation est définie, découvrez comment l'ajouter au contrôleur:
async function kittenbotInit() {
// ...
const controller = new Botkit({
webhook_uri: '/api/messages',
adapter: adapter,
});
// Add Kitten Dialog
const convo = createKittenDialog(controller);
controller.addDialog(convo);
// Controller is ready
controller.ready(() => {
// ...
});
}
Afficher la boîte de dialogue
Maintenant que le contrôleur peut utiliser la boîte de dialogue, découvrez comment la conversation démarre lorsque le chatbot entend "chaton", "chatons", "chat" ou "chats" :
// ...
controller.ready(() => {
controller.hears(
['hello', 'hi', 'hey'],
['message', 'direct_message'],
async (bot, message) => {
await bot.reply(message, 'Meow. :smile_cat:');
return;
}
);
// START: listen for cat emoji delivery
controller.hears(
['cat', 'cats', 'kitten', 'kittens'],
['message', 'direct_message'],
async (bot, message) => {
// Don't respond to self
if (message.bot_id !== message.user) {
await bot.startConversationInChannel(message.channel, message.user);
await bot.beginDialog('kitten-delivery');
return;
}
}
);
// END: listen for cat emoji delivery
// ...
});
// ...
Mettre à jour l'application
Redéployez l'application sur Cloud Run:
gcloud run deploy kittenbot \ --source . \ --platform managed \ --region $REGION \ --set-env-vars PROJECT_ID=$PROJECT_ID \ --allow-unauthenticated
Essayer
Félicitations ! Vous venez de mettre à jour un bot Slack exécuté dans Cloud Run.
Commandes à barre oblique
Que faire si vous ne voulez pas avoir de conversation avec l'utilisateur ? Que faire si vous préférez déclencher une action à l'aide d'une simple commande ?
Slack propose cette fonctionnalité via des commandes à barre oblique, qui permettent aux utilisateurs d'appeler votre application en saisissant la commande dans la zone de message.
Activer les commandes Slack Slash
- Accédez à la section Commandes à barre oblique sous Fonctionnalités sur la page Gestion des applications.
- Cliquez sur Créer une commande.
- Configurez une commande
/cats
avec l'URL de votre service kittenbot. N'oubliez pas d'utiliser le même point de terminaison que celui utilisé pour activer l'API Events. Il s'agit de votre URL, plus'/api/messages'
.
- Suivez les instructions pour mettre à jour votre application et les autorisations.
Ajouter des commandes à barre oblique à votre manette
Découvrez comment un gestionnaire pour les commandes à barre oblique a été ajouté dans la fonction controller.ready:
// ...
// Controller is ready
controller.ready(() => {
// ...
// START: slash commands
controller.on('slash_command', async (bot, message) => {
const numCats = parseInt(message.text);
const response = makeCatMessage(numCats);
bot.httpBody({ text: response });
});
// END: slash commands
});
// ...
Essayer
Saisissez /cats et un nombre pour envoyer la commande à barre oblique. Ex. : /cats 8
Le bot répondra avec huit chats, que vous seul pourrez voir:
12. Nettoyage
Félicitations ! Un bot Slack s'exécute désormais dans Cloud Run. Vous devez désormais nettoyer les ressources utilisées pour limiter vos dépenses et avoir un comportement responsable dans le cloud.
Supprimer le projet
Vous pouvez supprimer l'intégralité du projet, directement dans Cloud Shell:
gcloud projects delete $PROJECT_ID
Si vous préférez supprimer les différentes ressources une par une, passez à la section suivante.
Supprimer le déploiement
gcloud run services delete kittenbot --region $REGION
Résultat de la commande
Service [kittenbot] will be deleted. Do you want to continue (Y/n)? y Deleted service [kittenbot].
Supprimer votre signature secrète client
gcloud secrets delete client-signing-secret
Résultat de la commande
You are about to destroy the secret [client-signing-secret] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [client-signing-secret].
Supprimer le code secret de votre jeton de bot
gcloud secrets delete bot-token
Résultat de la commande
You are about to destroy the secret [bot-token] and its [1] version(s). This action cannot be reversed. Do you want to continue (Y/n)? y Deleted secret [bot-token].
Supprimer les buckets de stockage
Commencez par répertorier les buckets Google Cloud Storage pour obtenir le chemin d'accès au bucket:
gsutil ls
Résultat de la commande
gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/ gs://<PROJECT_ID>_cloudbuild/
À présent, supprimez le bucket d'artefacts:
gsutil rm -r gs://[REGION.]artifacts.${PROJECT_ID}.appspot.com/
Résultat de la commande
Removing gs://[REGION.]artifacts.<PROJECT_ID>.appspot.com/...
Enfin, supprimez le bucket cloudbuild:
gsutil rm -r gs://${PROJECT_ID}_cloudbuild/
Résultat de la commande
Removing gs://<PROJECT_ID>_cloudbuild/...
13. Félicitations !
Vous savez maintenant exécuter un bot Slack dans Cloud Run.
Nous n'avons fait qu'effleurer les possibilités offertes par cette technologie. Nous vous encourageons à l'explorer davantage avec vos propres déploiements Cloud Run.
Points abordés
- Créer une intégration personnalisée de bot dans Slack
- Sécuriser vos secrets Slack avec Secret Manager
- Déployer votre bot Slack sur Cloud Run
Étapes suivantes
- Suivez d'autres tutoriels Cloud Run.
En savoir plus
- Consultez les autres exemples d'intégrations Slack dans Google Cloud sur GitHub.
- Testez d'autres fonctionnalités de Google Cloud. en consultant nos tutoriels.