Robot d'aide à l'action collective pour le slack Data Against Covid-19
Après l'installation de l'app dans votre workspace par vos admins. Dans slack tapez:
Community vous répond:
Puis suivez les boutons!
- Ajout de commandes/boutons à l'application
- Forkez le projet
- Lancez une nouvelle branche partant de la branche
develop
(on utilise gitflow ici). Votre branche devra s'appellerfeature/new-command-<nom de vos commandes>
. - Ajoutez des fichiers sur cette nouvelle branche
- Lancez une pull request de votre nouvelle branche sur la branche
develop
du repo parent. Un admin la verifiera et l'approuvera.
Plus de detail plus bas.
- Pour modifier le comportement de l'application
- Forkez le projet
- Modifiez le fichier server.js
- Lancez une Pull-Request
Avant de modifier server.js
assurez-vous que ceci ne peut pas être fait plus simplement avec des commandes.
Cette application a vocation à être installée sur slack à travers la slack api. Elle n'est pas distribué, par slack app-store, mais vous pouvez :
- Forkez votre copie
- Configurez un server sur lequel la faire tourner
- Reliez le server à la slack API
Et c'est bon!
[Guide de configuration precis a venir]
Les commandes sont écrites au format JSON
dans les dossiers:
messages/commands_prioritaires
: Commandes principales qui apparaissent avec/community aide
.messages/commands
: Commandes à visée utilisateur, mais moins importantes. Apparaissent avec/community doc
.messages/commands_hidden
: Commandes internes, avec but d'accroître l'intéractivite sans accroître le bruit. Apparaissent avec/community doc-dev
.
Ces fichiers sont explorés automatiquement et les commandes sont ajoutées sans autres intervention.
La liste des commandes prioritaire est très courte: nous voulons diriger les utilisateurs sur ces activitées.
L'information doit y être très claire.
commands_prioritaires
sans l'accord préalable de l'équipe de modération dataagainstcovid19.
Ce sont le point d'entrée des actions des utilisateurs, ils marquent l'entrée normale d'un process utilisateur.
Ces commandes ont pour but de relier les actions des blocks interactifs entre-eux afin de créer des flux d'informations digestes.
Les commandes sont des fichiers JSON
qui nécessitent au moins deux attributs:
"command"
(string; or array of strings) : répertorie les noms que prend la commande (utilisés pour l'appeller et produire sa doc)."answer"
(JSON block object): décrit le message à envoyer. Ce message est créé à l'aide de l'interface graphique du BlockKit builder de slack.
Ci-dessous un exemple de fichier command sans réponses.
{
"command": ["Une nouvelle commande a executer", "nouvelle-cmd"],
"answer": {
// go to https://api.slack.com/tools/block-kit-builder?mode=message&blocks=%5B%5D
// To generate a valid and pretty Slack message response
// And paste it inside the answer field
}
}
Vous avez aussi la possibilité de stocker plusieurs commandes par fichiers:
[
{
"command": ["Une nouvelle commande a executer", "nouvelle-cmd"],
"answer": {
// ...
}
},
{
"command": ["Une deuxieme commande a executer", "deuxieme-cmd"],
"answer": {
// ...
}
}
]
Ces commandes sont exactement comme si elles étaient chacune dans leur fichier.
Les blocks sont le format de messagerie des applications slack. Ce sont des objets au format JSON
. Prennons exemple sur les blocks du fichier _.json
qui apparait lorsque la commande \community
est tapée dans votre barre de message sur slack:
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Bienvenue sur Community*.\nCe service vous aidera à trouver les informations necessaires pour assurer une communication efficace dans ce slack.\n"
}
},
{
"type": "actions",
"elements": [
{
"type": "button",
"action_id": "interactif-_/aide",
"value": "aide",
"text": {
"type": "plain_text",
"text": "Que peux faire community :robot_face: ?"
}
},
{
"type": "button",
"action_id": "interactif-_/au-revoir",
"value": "au-revoir",
"text": {
"type": "plain_text",
"text": "Non merci"
}
}
]
}
]
}
Le premier block est un block de type "section"
. Il contient simplement du texte et supporte le format markdown.
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Bienvenue sur Community*.\nCe service vous aidera à trouver les informations necessaires pour assurer une communication efficace dans ce slack.\n"
}
},
Ce block ajoute deux boutons:
- Que peux faire community :robot_face: ?
- Non merci
{
"type": "actions",
"elements":
[
{
"type": "button",
"action_id": "interactif-_/aide",
"value": "aide",
"text": {
"type": "plain_text",
"text": "Que peux faire community :robot_face: ?"
}
},
{
"type": "button",
"action_id": "interactif-_/au-revoir",
"value": "au-revoir",
"text": {
"type": "plain_text",
"text": "Non merci"
}
}
]
}
Pour que ces boutons deviennent interactifs deux attributs clefs:
"action_id"
: un id unique dans l'aplication se referent à ce bouton précis. Pour ce bot il doit etre nommer suivant la norme suivante:interactif-<nom de la commande d'appel>/<nom de la commande appelée>
."value"
: La commande à envoyer lorsque le bouton est appuyé. Nous recommendons l'utilisation des alias court des commandes.
Il y a encore bien d'autres blocks: comme les selectionneurs, les blocks contexte, ou image; veuillez utiliser le block kit de design mis à disposition par slack.