Fuente de datos: Slack


1Presentación

Slack es un servicio de comunicación colaborativa, que permite a los usuarios intercambiar información tanto mediante comunicaciones puntuales como dentro de canales de comunicación.

Es posible enviar mensajes dentro de un canal de comunicación, para notificar a los usuarios de forma automatizada.

Si has configurado correctamente los parámetros de conexión a Slack, Temma crea automáticamente un objeto de tipo \Temma\Datasources\Slack, con el que puedes enviar notificaciones. Por convención, supondremos que has llamado a esta conexión slack en el archivo etc/temma.php (consulta la documentación de configuración).

En los controladores, la conexión a Slack está entonces disponible escribiendo:

$slack = $this->slack;

En otros objetos gestionados por el componente de inyección de dependencias, la conexión a Slack es accesible escribiendo:

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

2Configuración

Para enviar notificaciones en Slack, primero debes crear una aplicación de Slack y activar los webhooks. Después puedes crear uno o varios webhooks para esa aplicación, cada webhook vinculado a un canal en el que puede publicar mensajes.

En el archivo etc/temma.php (consulta la documentación de configuración), declaras el DSN (Data Source Name) usado para conectarte a Slack.

El DSN usado para conectarse a Slack se puede escribir como slack://WEBHOOK

Con WEBHOOK el valor de la URL del webhook, sin el prefijo https://.
Ejemplo: hooks.slack.com/services/TXXXXXXXX/BYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ


3Contenido de la notificación

Las notificaciones pueden contener texto, que acepta una variante de la sintaxis Markdown.

Las notificaciones también pueden tener "adjuntos" ("attachments"), es decir, bloques que a su vez pueden contener texto, una imagen, un texto de "pie de página", y un texto que se posiciona encima del bloque.


4Llamadas unificadas

4.1Acceso tipo array

// enviar una notificación simple
$slack[''] = "Mensaje para enviar";

// enviar una notificación con formato
$slack[''] = [
    'text'        => 'Texto de la notificación, con <https://temma.net|un enlace>',
    'attachments' => [
        [
            'pretext' => 'Texto encima del bloque',
            'text'    => "*negrita* _cursiva_ ~tachado~ `código`",
            'image'   => "https://site.com/ruta/a/imagen.jpg",
            'footer'  => "Texto del pie del bloque",
        ],
        'Bloque de texto',
        "Otro bloque solo de texto",
        [
            'image' => "https://site.com/ruta/a/imagen2.jpg",
        ],
    ],
];

4.2Método avanzado

// enviar una notificación simple
$slack->set('', "Mensaje para enviar");

// enviar una notificación con formato
$slack->set('', [
    'text'        => 'Texto principal',
    'attachments' => [
        'Primer bloque',
        'Segundo bloque',
    ],
]);