Connecteur Slack
Connectez votre workspace Slack à Brevo via Tajo pour des notifications marketing en temps réel, des alertes d’équipe sur les événements clients et l’automatisation de workflows déclenchés par les interactions Slack.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Slack |
| Catégorie | Intégration personnalisée |
| Complexité d’installation | Facile |
| Intégration officielle | Oui |
| Données synchronisées | Utilisateurs, canaux, messages, événements |
| URL de base de l’API | https://slack.com/api |
Fonctionnalités
- Alertes marketing, Envoyez des notifications en temps réel pour les événements de campagne, nouveaux abonnés et jalons de revenus
- Notifications d’événements clients, Alertez les équipes lors d’actions clients à forte valeur depuis Brevo
- Déclencheurs de workflows, Utilisez les interactions Slack (clics de boutons, soumissions de formulaires) pour déclencher des automatisations Brevo
- Routage basé sur les canaux, Routez les notifications vers des canaux spécifiques selon le type d’événement ou le segment client
- Synchronisation d’utilisateurs, Mappez les utilisateurs du workspace Slack aux contacts Brevo pour les communications internes
- Messages interactifs, Envoyez des messages riches avec boutons et actions pour les workflows d’équipe
- Messages planifiés, Planifiez les notifications pour les résumés marketing quotidiens/hebdomadaires
- Prise en charge des threads, Regroupez les notifications liées dans des threads pour une communication organisée
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un workspace Slack avec accès admin
- Une application Slack créée sur api.slack.com/apps
- Un bot token avec les scopes requis
- Un compte Brevo avec accès API
- Un compte Tajo
Authentification
Bot Token (recommandé)
Installez une application Slack dans votre workspace et utilisez le bot token pour l’accès API.
- Créez l’application sur api.slack.com/apps
- Ajoutez les scopes OAuth requis dans « OAuth & Permissions »
- Installez l’application dans le workspace
- Copiez le Bot User OAuth Token (
xoxb-...)
curl -X POST "https://slack.com/api/chat.postMessage" \ -H "Authorization: Bearer xoxb-YOUR-BOT-TOKEN" \ -H "Content-Type: application/json" \ -d '{"channel": "C01234567", "text": "Hello from Tajo!"}'OAuth 2.0
Pour distribuer votre intégration Slack à plusieurs workspaces :
# URL d'autorisationhttps://slack.com/oauth/v2/authorize? client_id={client_id}& scope=chat:write,channels:read,users:read& redirect_uri={redirect_uri}
# Échange du tokencurl -X POST "https://slack.com/api/oauth.v2.access" \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Scopes bot requis
chat:write # Envoyer des messageschannels:read # Lister les canauxchannels:history # Lire les messages de canauxusers:read # Lister les utilisateurs du workspaceusers:read.email # Lire les adresses e-mail utilisateurreactions:write # Ajouter des réactions aux messagesfiles:write # Uploader des fichiersAccès aux e-mails utilisateur
Le scope users:read.email est requis pour faire correspondre les utilisateurs Slack aux contacts Brevo. Sans lui, le mappage utilisateur sera limité aux noms affichés.
Configuration
Configuration de base
connectors: slack: enabled: true bot_token: "${SLACK_BOT_TOKEN}" signing_secret: "${SLACK_SIGNING_SECRET}"
# Canaux de notification channels: marketing: "C01234567" sales: "C01234568" support: "C01234569" alerts: "C01234570"
# Routage d'événements notifications: new_subscriber: channel: marketing template: subscriber_alert high_value_order: channel: sales template: order_alert support_ticket: channel: support template: ticket_alertMappage des champs
Mappez les données utilisateur Slack vers les attributs de contact Brevo :
Default Mappings
| Parameter | Type | Description |
|---|---|---|
profile.email required | string | E-mail utilisateur (identifiant unique pour la correspondance Brevo) |
real_name optional | string | Nom complet, réparti en FIRSTNAME/LASTNAME |
profile.phone optional | string | Mappé vers l'attribut SMS |
profile.title optional | string | Intitulé de poste |
tz optional | string | Fuseau horaire de l'utilisateur |
is_admin optional | boolean | Statut admin du workspace |
team_id optional | string | ID d'équipe du workspace |
status_text optional | string | Statut personnalisé de l'utilisateur |
Méthodes API
Messagerie
| Méthode | Endpoint | Description |
|---|---|---|
POST | chat.postMessage | Envoyer un message vers un canal |
POST | chat.update | Mettre à jour un message existant |
POST | chat.delete | Supprimer un message |
POST | chat.scheduleMessage | Planifier un message |
POST | chat.postEphemeral | Envoyer un message éphémère à un utilisateur |
Canaux
| Méthode | Endpoint | Description |
|---|---|---|
GET | conversations.list | Lister les canaux |
GET | conversations.info | Obtenir les infos d’un canal |
GET | conversations.members | Lister les membres d’un canal |
GET | conversations.history | Obtenir les messages d’un canal |
Utilisateurs
| Méthode | Endpoint | Description |
|---|---|---|
GET | users.list | Lister les utilisateurs du workspace |
GET | users.info | Obtenir les infos d’un utilisateur |
GET | users.lookupByEmail | Trouver un utilisateur par e-mail |
GET | users.conversations | Lister les canaux d’un utilisateur |
Interactions
| Méthode | Endpoint | Description |
|---|---|---|
POST | views.open | Ouvrir une vue modale |
POST | views.update | Mettre à jour une vue modale |
POST | reactions.add | Ajouter une réaction emoji |
Événements
Notifications Brevo-vers-Slack
| Événement | Déclencheur | Action Slack |
|---|---|---|
new_subscriber | Contact créé dans Brevo | Publier dans #marketing |
campaign_sent | Campagne e-mail envoyée | Publier un résumé dans #marketing |
order_placed | Commande à forte valeur détectée | Publier dans #sales avec les détails |
cart_abandoned | Panier abandonné depuis 30 min | Publier dans #sales pour suivi |
ticket_created | Ticket de support ouvert | Publier dans #support |
unsubscribed | Contact désabonné | Publier une alerte dans #marketing |
Déclencheurs Slack-vers-Brevo
| Événement Slack | Déclencheur | Action Brevo |
|---|---|---|
message_action | Raccourci de message personnalisé | Ajouter un contact à une liste ou déclencher une automatisation |
block_actions | Clic sur bouton dans un message | Mettre à jour un attribut de contact ou envoyer un e-mail |
view_submission | Formulaire modal soumis | Créer un contact ou déclencher un workflow |
Exemples de code
Initialiser le connecteur
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connecter Slackawait tajo.connectors.connect('slack', { botToken: process.env.SLACK_BOT_TOKEN, signingSecret: process.env.SLACK_SIGNING_SECRET});Envoyer des notifications marketing
// Envoyer une notification lors d'une commande à forte valeurawait tajo.slack.notify({ channel: 'sales', event: 'order_placed', data: { orderValue: '$1,250.00', products: ['Premium Widget', 'Pro Service'], isFirstOrder: true }, template: { blocks: [ { type: 'header', text: { type: 'plain_text', text: 'New High-Value Order' } }, { type: 'section', fields: [ { type: 'mrkdwn', text: '*Amount:*\n$1,250.00' } ] }, { type: 'actions', elements: [ { type: 'button', text: { type: 'plain_text', text: 'View in Brevo' }, url: 'https://app.brevo.com/contacts' } ] } ] }});Gérer les interactions Slack
import crypto from 'crypto';
app.post('/slack/interactions', async (req, res) => { // Vérifier la signature de la requête Slack const timestamp = req.headers['x-slack-request-timestamp']; const signature = req.headers['x-slack-signature']; const sigBasestring = `v0:${timestamp}:${req.rawBody}`; const mySignature = 'v0=' + crypto .createHmac('sha256', process.env.SLACK_SIGNING_SECRET) .update(sigBasestring) .digest('hex');
if (signature !== mySignature) { return res.status(401).send('Unauthorized'); }
const payload = JSON.parse(req.body.payload);
// Gérer les actions sur boutons if (payload.type === 'block_actions') { await tajo.connectors.handleWebhook('slack', { type: 'interaction', action: payload.actions[0].action_id, userId: payload.user.id, payload }); }
res.status(200).send();});Limites de débit
Les limites de débit de l’API Slack utilisent un système par tiers :
| Tier | Limite | Méthodes courantes |
|---|---|---|
| Tier 1 | 1 requête/minute | chat.delete, conversations.kick |
| Tier 2 | 20 requêtes/minute | conversations.history, users.info |
| Tier 3 | 50 requêtes/minute | conversations.list, users.list |
| Tier 4 | 100 requêtes/minute | chat.postMessage |
| Spécial | Variable | chat.postMessage vers le même canal : 1/s |
Limites supplémentaires :
- Web API : limite de burst avec throttling à court terme
- Events API : livraison avec retry sur 3 tentatives
- Incoming Webhooks : 1 message/seconde par URL de webhook
- Block Kit : maximum 50 blocs par message
Fréquence de publication dans un canal
La publication dans le même canal est limitée à environ 1 message par seconde. Groupez les notifications ou utilisez des threads pour éviter le rate limiting.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
not_authed | Bot token invalide | Réinstallez l’application et copiez le nouveau bot token |
channel_not_found | Bot absent du canal | Invitez le bot dans le canal cible |
missing_scope | Scope requis non accordé | Ajoutez le scope et réinstallez l’application |
| Événement non reçu | Abonnement d’événement non configuré | Configurez l’URL Event Subscriptions |
| Timeout d’interaction | Réponse > 3 secondes | Répondez immédiatement 200, traitez en asynchrone |
Mode debug
Activez la journalisation verbeuse :
connectors: slack: debug: true log_level: verbose log_events: trueTester la connexion
tajo connectors test slack# ✓ Bot token valid# ✓ Workspace accessible# ✓ Channels readable# ✓ Message posting enabled# ✓ Event subscriptions activeBonnes pratiques
- Utilisez Block Kit, Construisez des messages riches et interactifs avec le framework Block Kit de Slack
- Répondez rapidement, Acquittez les interactions en moins de 3 secondes, traitez-les en asynchrone
- Mettez les messages associés en thread, Regroupez les notifications liées en threads pour réduire le bruit
- Routez par canal, Envoyez différents types d’événements vers les canaux d’équipe appropriés
- Incluez des boutons d’action, Ajoutez des boutons « View in Brevo » pour un accès rapide aux données clients
- Implémentez l’unfurling, Affichez des previews riches pour les liens Brevo partagés dans Slack
Sécurité
- Bot Token, Token d’accès OAuth à portée limitée avec permissions granulaires
- Signature de requête, Vérification de signature HMAC SHA-256 pour les requêtes entrantes
- OAuth 2.0, Autorisation standard de l’industrie pour la distribution multi-workspaces
- Chiffrement TLS, Toutes les communications API chiffrées via HTTPS
- Rotation des tokens, Rotation automatique des tokens pour une sécurité renforcée