Source de données : Google Chat


1Présentation

Google Chat permet de créer des "espaces" de communication, vers lesquels il est possible d'envoyer des notifications.

Si vous avez correctement configuré les paramètres de connexion à Google Chat, Temma crée automatiquement un objet de type \Temma\Datasources\GoogleChat, avec lequel vous pourrez envoyer des messages. Par convention, nous partirons du principe que vous avez nommé cette connexion gchat dans le fichier etc/temma.php (voir la documentation de la configuration).

Dans les contrôleurs, la connexion à Google Chat est alors disponible en écrivant :

$gchat = $this->gchat;

Dans les autres objets gérés par le le composant d'injection de dépendances, la connexion à Google Chat est accessible en écrivant :

$gchat = $loader->dataSources->gchat;
$gchat = $loader->dataSources['gchat'];

2Configuration

Pour envoyer des messages dans un espace Google Chat, vous devez d'abord créer un webhook. Chaque webhook étant lié à un espace 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 à Google Chat.

Le DSN de connexion à Google Chat s'écrit de la forme : googlechat://WEBHOOK

Avec WEBHOOK la valeur de l'URL du webhook, sans le préfixe https://.
Exemple : chat.googleapis.com/v1/spaces/XXXXXXX/messages?key=YYYYYYY&token=ZZZZZZZ


3Contenu des notifications

Les notifications peuvent contenir du texte simple, ou un dérivé de la syntaxe Markdown, ou une mise en page complexe contenant titre, sous-titre, pictogramme, code HTML, images et liens.


4Appels unifiés

4.1Accès de type tableau

// envoie un message simple
$gchat[''] = "Message à envoyer";

// message contenant du Markdown
$gchat[''] = 'Texte avec du _formattage_  *simple*.';

// notification riche, avec un titre, un sous-titre, un pictogramme et des sections avec image et liens
$gchat[''] = [
    'title'    => 'Le titre',
    'subtitle' => 'Le sous-titre',
    'picto'    => 'https://url du picto',
    // chaque section peut avoir un titre, un texte une image ou une liste de bouttons
    'sections' => [
        [
            'title' => 'Permière section',
            'html'  => 'Du texte',
        ],
        [
            'icon'        => 'STAR',
            'topLabel'    => 'Statut',
            'html'        => 'Un lien.',
            'bottomLabel' => 'Généré hier',
        ],
        [
            'image' => 'https://url_image',
            'alt'   => 'Text alternatif', // optionnal
        ],
        [
            'title' => 'Une autre section',
            'buttons' => [
                'Button 1' => 'https://lien_1',
                'Button 2' => 'https://lien_2',
                'Button 3' => 'https://lien_3',
            ]
        ],
    ],
];

4.2Méthode avancée

// envoie un message simple
$gchat->set('', "Message à envoyer");

// notification riche
$gchat->set('', [
    'title' => 'Le titre',
    'picto' => 'htpss://url du picto',
]);