Apercu
Le connecteur Slack fournit la fonctionnalite permettant de recuperer les messages des canaux d’un espace de travail Slack et de les enregistrer dans l’index Fess.
Cette fonctionnalite necessite le plugin fess-ds-slack.
Contenu pris en charge
Messages des canaux publics
Messages des canaux prives
Fichiers joints (optionnel)
Prerequis
L’installation du plugin est requise
La creation et la configuration des permissions de l’application Slack sont necessaires
L’obtention du OAuth Access Token est requise
Installation du plugin
Installez depuis l’interface d’administration via « Systeme » -> « Plugins » :
Telechargez
fess-ds-slack-X.X.X.jardepuis Maven CentralTelechargez et installez depuis l’interface de gestion des plugins
Redemarrez Fess
Ou consultez Présentation pour plus de details.
Configuration
Configurez depuis l’interface d’administration via « Crawler » -> « Data Store » -> « Nouveau ».
Configuration de base
| Element | Exemple |
|---|---|
| Nom | Company Slack |
| Nom du gestionnaire | SlackDataStore |
| Active | Oui |
Configuration des parametres
token=xoxp-your-token-here
channels=general,random
file_crawl=false
include_private=false
Liste des parametres
| Parametre | Requis | Description |
|---|---|---|
token | Oui | OAuth Access Token de l’application Slack |
channels | Oui | Canaux cibles du crawl (separes par des virgules, ou *all) |
file_crawl | Non | Crawler egalement les fichiers (par defaut : false) |
include_private | Non | Inclure les canaux prives (par defaut : false) |
Configuration du script
title=message.user + " #" + message.channel
digest=message.text + "\n" + message.attachments
content=message.text
created=message.timestamp
timestamp=message.timestamp
url=message.permalink
Champs disponibles
| Champ | Description |
|---|---|
message.text | Contenu textuel du message |
message.user | Nom d’affichage de l’expediteur |
message.channel | Nom du canal ou le message a ete envoye |
message.timestamp | Date et heure d’envoi du message |
message.permalink | Lien permanent du message |
message.attachments | Informations de fallback des fichiers joints |
Configuration de l’application Slack
1. Creation de l’application Slack
Accedez a https://api.slack.com/apps :
Cliquez sur « Create New App »
Selectionnez « From scratch »
Entrez le nom de l’application (ex: Fess Crawler)
Selectionnez l’espace de travail
Cliquez sur « Create App »
2. Configuration OAuth & Permissions
Dans le menu « OAuth & Permissions » :
Ajoutez les Bot Token Scopes suivants :
Pour les canaux publics uniquement :
channels:history- Lecture des messages des canaux publicschannels:read- Lecture des informations des canaux publics
Pour inclure les canaux prives (include_private=true) :
channels:historychannels:readgroups:history- Lecture des messages des canaux privesgroups:read- Lecture des informations des canaux prives
Pour crawler egalement les fichiers (file_crawl=true) :
files:read- Lecture du contenu des fichiers
3. Installation de l’application
Dans le menu « Install App » :
Cliquez sur « Install to Workspace »
Verifiez les permissions et cliquez sur « Autoriser »
Copiez le « Bot User OAuth Token » (commence par
xoxb-)
Note
Normalement, utilisez le Bot User OAuth Token qui commence par xoxb-, mais le User OAuth Token qui commence par xoxp- peut egalement etre utilise dans les parametres.
4. Ajout aux canaux
Ajoutez l’application aux canaux a crawler :
Ouvrez le canal dans Slack
Cliquez sur le nom du canal
Selectionnez l’onglet « Integrations »
Cliquez sur « Ajouter des applications »
Ajoutez l’application creee
Exemples d’utilisation
Crawler des canaux specifiques
Parametres :
token=xoxb-your-slack-bot-token-here
channels=general,random,tech-discussion
file_crawl=false
include_private=false
Script :
title=message.user + " #" + message.channel
digest=message.text + "\n" + message.attachments
content=message.text
created=message.timestamp
timestamp=message.timestamp
url=message.permalink
Crawler tous les canaux
Parametres :
token=xoxb-your-slack-bot-token-here
channels=*all
file_crawl=false
include_private=false
Script :
title=message.user + " #" + message.channel
content=message.text
created=message.timestamp
url=message.permalink
Crawler en incluant les canaux prives
Parametres :
token=xoxb-your-slack-bot-token-here
channels=*all
file_crawl=false
include_private=true
Script :
title=message.user + " #" + message.channel
digest=message.text
content=message.text + "\nPiece jointe: " + message.attachments
created=message.timestamp
url=message.permalink
Crawler en incluant les fichiers
Parametres :
token=xoxb-your-slack-bot-token-here
channels=general,random
file_crawl=true
include_private=false
Script :
title=message.user + " #" + message.channel
content=message.text
created=message.timestamp
url=message.permalink
Inclure des informations detaillees sur les messages
Script :
title="[" + message.channel + "] " + message.user
content=message.text
digest=message.text.substring(0, Math.min(200, message.text.length()))
created=message.timestamp
timestamp=message.timestamp
url=message.permalink
Depannage
Erreur d’authentification
Symptome : invalid_auth ou not_authed
Points a verifier :
Verifier si le token a ete correctement copie
Verifier le format du token :
Bot User OAuth Token : commence par
xoxb-User OAuth Token : commence par
xoxp-
Verifier si l’application est installee dans l’espace de travail
Verifier si les permissions necessaires sont accordees
Canal introuvable
Symptome : channel_not_found
Points a verifier :
Verifier si le nom du canal est correct (# n’est pas necessaire)
Verifier si l’application a ete ajoutee au canal
Pour les canaux prives, definir
include_private=trueVerifier si le canal existe et n’est pas archive
Impossible de recuperer les messages
Symptome : Le crawl reussit mais 0 messages
Points a verifier :
Verifier si les scopes necessaires sont accordes :
channels:historychannels:readPour les canaux prives :
groups:history,groups:read
Verifier si des messages existent dans le canal
Verifier si l’application a ete ajoutee au canal
Verifier si l’application Slack est active
Erreur de permission insuffisante
Symptome : missing_scope
Solution :
Ajouter les scopes necessaires dans les parametres de l’application Slack :
Canaux publics :
channels:historychannels:read
Canaux prives :
groups:historygroups:read
Fichiers :
files:read
Reinstaller l’application
Redemarrer Fess
Impossible de crawler les fichiers
Symptome : Les fichiers ne sont pas recuperes meme avec file_crawl=true
Points a verifier :
Verifier si le scope
files:readest accordeVerifier si des fichiers sont effectivement postes dans le canal
Verifier les permissions d’acces aux fichiers
Limitation de debit API
Symptome : rate_limited
Solution :
Augmenter l’intervalle de crawl
Reduire le nombre de canaux
Repartir en plusieurs data stores avec des planifications differentes
Limites de l’API Slack :
Methodes Tier 3 : 50+ requetes/minute
Methodes Tier 4 : 100+ requetes/minute
Cas de nombreux messages
Symptome : Le crawl prend du temps ou expire
Solution :
Diviser les canaux et configurer plusieurs data stores
Repartir le calendrier de crawl
Envisager une configuration pour exclure les anciens messages
Exemples d’utilisation avancee des scripts
Filtrage des messages
Indexer uniquement les messages d’un utilisateur specifique :
if (message.user == "Jean Dupont") {
title=message.user + " #" + message.channel
content=message.text
created=message.timestamp
url=message.permalink
}
Uniquement les messages contenant des mots-cles :
if (message.text.contains("important") || message.text.contains("incident")) {
title="[Important] " + message.user + " #" + message.channel
content=message.text
created=message.timestamp
url=message.permalink
}
Traitement des messages
Resume des messages longs :
title=message.user + " #" + message.channel
content=message.text
digest=message.text.length() > 100 ? message.text.substring(0, 100) + "..." : message.text
created=message.timestamp
url=message.permalink
Formatage du nom du canal :
title="[Slack: " + message.channel + "] " + message.user
content=message.text
created=message.timestamp
url=message.permalink
Informations de reference
Apercu des connecteurs DataStore - Apercu des connecteurs Data Store
Connecteur Atlassian - Connecteur Atlassian
Présentation - Guide de configuration Data Store