Source de données : Slack
1Présentation
Slack est un service de communication collaborative, qui permet d'échanger entre utilisateurs, soit au travers de communications ad-hoc, soit au sein de canaux de communication.
Il est possible d'envoyer des messages dans un canal de communication, pour notifier les utilisateurs de manière automatisée.
Si vous avez correctement configuré les paramètres de connexion au service Slack, Temma crée automatiquement un objet de type \Temma\Datasources\Slack, avec lequel vous pourrez envoyer des notifications. Par convention, nous partirons du principe que vous avez nommé cette connexion slack dans le fichier etc/temma.php (voir la documentation de la configuration).
Dans les contrôleurs, la connexion à Slack est alors disponible en écrivant :
$slack = $this->slack;
Dans les autres objets gérés par le le composant d'injection de dépendances, la connexion à Slack est accessible en écrivant :
$slack = $loader->dataSources->slack;
$slack = $loader->dataSources['slack'];
2Configuration
Pour envoyer des notifications sur Slack, vous devez d'abord créer une application Slack et activer les webhooks. Vous pourrez ensuite créer un ou plusieurs webhooks pour cette application, chaque webhook étant lié à un canal dans lequel il peut poster des messages.
Dans le fichier etc/temma.php (voir la documentation de la configuration), vous pourrez alors déclarer le DSN (Data Source Name) qui permet de se connecter à Slack.
Le DSN de connexion à Slack peut s'écrire de la forme : slack://WEBHOOK
Avec WEBHOOK la valeur de l'URL du webhook, sans le préfixe https://.
Exemple : hooks.slack.com/services/TXXXXXXXX/BYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
3Contenu des notifications
Les notifications peuvent contenir du texte, qui accepte un dérivé de la syntaxe Markdown.
Les notifications peuvent aussi accueillir des "pièces-jointes", c'est-à-dire des blocs qui peuvent eux-mêmes contenir du texte, une image, un texte de "pied-de-page", ainsi qu'un texte qui se positionne au-dessus du bloc.
4Appels unifiés
4.1Accès de type tableau
// envoie une notification simple
$slack[''] = "Message à envoyer";
// envoie une notification formatée
$slack[''] = [
'text' => 'Texte de la notification, avec <https://temma.net|un lien>',
'attachments' => [
[
'pretext' => 'Texte au-dessus du bloc',
'text' => '*gras* _italique_ ~barré~ `code`',
'image' => 'https://site.com/chemin/vers/image.jpg',
'footer' => 'Texte de pied de page du bloc',
],
'Bloc textuel',
'Un autre bloc uniquement textuel',
[
'image' => 'https://site.com/chemin/vers/image2.jpg',
],
],
];
4.2Méthode avancée
// envoie une notification simple
$slack->set('', "Message à envoyer");
// envoie une notifications formatée
$slack->set('', [
'text' => 'Texte principal',
'attachments' => [
'Premier bloc',
'Deuxième bloc',
],
]);