Canal Slack OpenClaw
Connectez OpenClaw à Slack en utilisant le mode Socket (par défaut) ou l'API HTTP Events. Cette intégration de niveau entreprise permet à votre assistant IA de fonctionner dans les espaces de travail Slack — gérant les DM, les conversations de salon, les réactions, les fils de discussion et les commandes slash. Le mode Socket se connecte via WebSocket sans nécessiter d'URL publique ; le mode HTTP utilise l'API Events de Slack pour les déploiements accessibles publiquement.
Slack Fonctionnalités prises en charge
Messages texte
Pris en charge
Médias et fichiers
Pris en charge
Réactions
Pris en charge
Fils de discussion
Pris en charge
Messages vocaux
Non pris en charge
Discussion de groupe
Pris en charge
Slack Prérequis
- Un espace de travail Slack avec des privilèges d'administration (pour installer des applications personnalisées)
- Une application Slack créée sur api.slack.com/apps
- App Token (xapp-...) avec le scope connections:write (pour le mode Socket)
- Bot Token (xoxb-...) obtenu après l'installation de l'application dans votre espace de travail
- OpenClaw Gateway en cours d'exécution et configuré
Slack Configuration rapide
Créer une application Slack et activer le mode Socket
Rendez-vous sur api.slack.com/apps et cliquez sur 'Create New App' → 'From scratch'. Donnez-lui un nom et sélectionnez votre espace de travail. Naviguez vers 'Socket Mode' dans la barre latérale et activez-le. Générez un App-Level Token avec le scope 'connections:write' — cela vous donne le token xapp-...
Configurer les scopes OAuth et installer dans l'espace de travail
Accédez à 'OAuth & Permissions', ajoutez les Bot Token Scopes requis (chat:write, channels:history, channels:read, im:write, im:history, im:read, users:read, reactions:read, reactions:write, files:write, etc.). Cliquez sur 'Install to Workspace' et autorisez. Copiez le Bot User OAuth Token (xoxb-...). Ensuite, accédez à 'Event Subscriptions', activez les événements et abonnez-vous à : message.channels, message.groups, message.im, message.mpim, app_mention, reaction_added, reaction_removed.
Ajouter la configuration, démarrer le Gateway et inviter le bot
Ajoutez la configuration du canal Slack dans ~/.openclaw/openclaw.json avec votre appToken et botToken. Démarrez le Gateway — il se connectera à Slack via le mode Socket. Invitez le bot dans vos salons cibles en tapant '/invite @NomDeVotreBot' dans Slack. Envoyez un message pour tester.
Slack Exemple de configuration
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-1-YOUR_APP_TOKEN",
"botToken": "xoxb-YOUR_BOT_TOKEN"
}
}
}Slack Documentation Détaillée
Vue d'ensemble de l'architecture
Créer votre application Slack
Sécurité des DM (Couplage)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"dm": {
"policy": "pairing",
"allowFrom": ["U01ABCDEF", "user@company.com"]
}
}
}
}Configuration des salons (Politique de groupe)
{
"channels": {
"slack": {
"groupPolicy": "allowlist",
"channels": {
"C01ABCDEF": {
"allow": true,
"requireMention": true,
"users": ["U01ABCDEF"],
"skills": ["search", "docs"],
"systemPrompt": "Gardez les réponses courtes et techniques."
},
"#general": {
"allow": true,
"requireMention": true
}
}
}
}
}Threading des réponses
{
"channels": {
"slack": {
"replyToMode": "off",
"replyToModeByChatType": {
"direct": "all",
"group": "first",
"channel": "off"
}
}
}
}Token utilisateur (Optionnel)
{
"channels": {
"slack": {
"enabled": true,
"appToken": "xapp-...",
"botToken": "xoxb-...",
"userToken": "xoxp-...",
"userTokenReadOnly": true
}
}
}Commandes slash et App Home
{
"channels": {
"slack": {
"slashCommand": {
"enabled": true,
"name": "openclaw",
"sessionPrefix": "slack:slash",
"ephemeral": true
}
}
}
}Permissions et scopes
Mode HTTP (API Events)
{
"channels": {
"slack": {
"enabled": true,
"mode": "http",
"botToken": "xoxb-...",
"signingSecret": "your-signing-secret",
"webhookPath": "/slack/events"
}
}
}Configuration avancée
{
"channels": {
"slack": {
"historyLimit": 50,
"textChunkLimit": 4000,
"chunkMode": "newline",
"mediaMaxMb": 20,
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
}
}
}
}Slack Référence de Configuration
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Activer ou désactiver le canal Slack |
| mode | string | "socket" | Mode de connexion. Options : socket (mode Socket, par défaut), http (API Events) |
| appToken | string | "" | Token d'application Slack (xapp-...) pour le mode Socket. Peut aussi utiliser la variable d'environnement SLACK_APP_TOKEN |
| botToken | string | "" | Token OAuth Bot User Slack (xoxb-...). Peut aussi utiliser la variable d'environnement SLACK_BOT_TOKEN |
| userToken | string | "" | Token utilisateur Slack optionnel (xoxp-...) pour un accès en lecture amélioré |
| userTokenReadOnly | boolean | true | Restreindre le User Token aux opérations en lecture seule. Définir à false pour autoriser les écritures en tant qu'utilisateur installateur |
| signingSecret | string | "" | Signing Secret pour la vérification des requêtes en mode HTTP (depuis Basic Information → App Credentials) |
| webhookPath | string | "/slack/events" | Chemin du point d'accès webhook pour le mode HTTP |
| dm.policy | string | "pairing" | Politique de contrôle d'accès aux DM. Options : pairing (approbation par code), open (tout le monde peut envoyer des DM) |
| dm.allowFrom | string[] | [] | Utilisateurs autorisés à envoyer des DM au bot. Supporte les ID utilisateur, @noms_utilisateur, emails et joker (*) |
| dm.enabled | boolean | true | Accepter ou non les messages directs |
| dm.groupEnabled | boolean | false | Activer la gestion des DM de groupe (MPIM) |
| dm.groupChannels | string[] | [] | ID des salons de DM de groupe autorisés |
| groupPolicy | string | "open" | Politique de gestion des salons. Options : open (tous les salons), disabled (aucun salon), allowlist (salons configurés uniquement) |
| channels.<id>.allow | boolean | true | Autoriser ou refuser ce salon en mode allowlist |
| channels.<id>.requireMention | boolean | false | Si le bot doit être @mentionné pour répondre dans ce salon |
| channels.<id>.users | string[] | [] | Liste blanche des utilisateurs pour ce salon (ID, @noms_utilisateur ou emails) |
| channels.<id>.skills | string[] | [] | Restreindre les compétences disponibles dans ce salon (vide = toutes les compétences) |
| channels.<id>.systemPrompt | string | "" | Prompt système IA personnalisé pour ce salon |
| channels.<id>.allowBots | boolean | false | Traiter les messages d'autres bots dans ce salon |
| replyToMode | string | "off" | Mode de threading des réponses. Options : off (salon principal), first (fil pour la première réponse), all (fil pour toutes les réponses) |
| replyToModeByChatType | object | {} | Surcharges de threading par type de conversation. Clés : direct, group, channel. Valeurs : off, first, all |
| reactionNotifications | string | "off" | Quelles réactions déclenchent des notifications à l'agent. Options : off, own, all |
| historyLimit | number | 50 | Nombre de messages récents à inclure comme contexte IA. Définir à 0 pour désactiver |
| textChunkLimit | number | 4000 | Nombre maximum de caractères par segment de message pour les longues réponses IA |
| chunkMode | string | "split" | Comment découper les longues réponses. Options : split (limite stricte), newline (limites de paragraphes) |
| mediaMaxMb | number | 20 | Taille maximale des fichiers multimédias en mégaoctets |
| slashCommand.enabled | boolean | true | Activer la gestion des commandes slash |
| slashCommand.name | string | "openclaw" | Le nom de la commande slash (sans /) |
| slashCommand.ephemeral | boolean | true | Si les réponses aux commandes slash ne sont visibles que par l'invocateur |
Activer ou désactiver le canal Slack
Mode de connexion. Options : socket (mode Socket, par défaut), http (API Events)
Token d'application Slack (xapp-...) pour le mode Socket. Peut aussi utiliser la variable d'environnement SLACK_APP_TOKEN
Token OAuth Bot User Slack (xoxb-...). Peut aussi utiliser la variable d'environnement SLACK_BOT_TOKEN
Token utilisateur Slack optionnel (xoxp-...) pour un accès en lecture amélioré
Restreindre le User Token aux opérations en lecture seule. Définir à false pour autoriser les écritures en tant qu'utilisateur installateur
Signing Secret pour la vérification des requêtes en mode HTTP (depuis Basic Information → App Credentials)
Chemin du point d'accès webhook pour le mode HTTP
Politique de contrôle d'accès aux DM. Options : pairing (approbation par code), open (tout le monde peut envoyer des DM)
Utilisateurs autorisés à envoyer des DM au bot. Supporte les ID utilisateur, @noms_utilisateur, emails et joker (*)
Accepter ou non les messages directs
Activer la gestion des DM de groupe (MPIM)
ID des salons de DM de groupe autorisés
Politique de gestion des salons. Options : open (tous les salons), disabled (aucun salon), allowlist (salons configurés uniquement)
Autoriser ou refuser ce salon en mode allowlist
Si le bot doit être @mentionné pour répondre dans ce salon
Liste blanche des utilisateurs pour ce salon (ID, @noms_utilisateur ou emails)
Restreindre les compétences disponibles dans ce salon (vide = toutes les compétences)
Prompt système IA personnalisé pour ce salon
Traiter les messages d'autres bots dans ce salon
Mode de threading des réponses. Options : off (salon principal), first (fil pour la première réponse), all (fil pour toutes les réponses)
Surcharges de threading par type de conversation. Clés : direct, group, channel. Valeurs : off, first, all
Quelles réactions déclenchent des notifications à l'agent. Options : off, own, all
Nombre de messages récents à inclure comme contexte IA. Définir à 0 pour désactiver
Nombre maximum de caractères par segment de message pour les longues réponses IA
Comment découper les longues réponses. Options : split (limite stricte), newline (limites de paragraphes)
Taille maximale des fichiers multimédias en mégaoctets
Activer la gestion des commandes slash
Le nom de la commande slash (sans /)
Si les réponses aux commandes slash ne sont visibles que par l'invocateur
Slack Questions Fréquentes
Slack Dépannage
Le salon est bloqué par groupPolicy, ou le bot n'est pas dans la liste blanche, ou le bot n'a pas été invité dans le salon.
La politique DM est définie sur 'pairing' et l'expéditeur n'a pas été approuvé, ou l'onglet Messages n'est pas activé dans App Home.
L'App Token (xapp-...) est invalide ou expiré, ou il y a un problème réseau entre votre serveur et Slack.
Le Bot Token ne dispose pas des scopes OAuth requis, ou le token a été révoqué/régénéré.
La commande slash n'a pas été créée dans le portail API Slack, ou l'URL de requête est mal configurée (mode HTTP).
Les longues réponses de l'IA dépassant le textChunkLimit d'OpenClaw (4 000 caractères par défaut) sont automatiquement découpées en plusieurs messages. Note : les limites de Slack sont de 3 000 caractères par section block et 40 000 caractères par champ text de message.