Enviar notificaciones de Slack desde una interfaz web
1Introducción
Este mini tutorial explica cómo crear una interfaz web simple que envía notificaciones a un canal de Slack.
Necesitarás crear una aplicación de Slack. Una vez creada la aplicación, puedes generar una URL de webhook y
seleccionar el canal que se asociará a ella.
Este proceso se describe en detalle en la documentación de Slack.
2Configuración del proyecto
Si ya tienes un proyecto Temma existente, puedes saltarte este paso.
Si tu proyecto Temma no se va a usar para servir un sitio web (y no vas a usar plantillas Smarty), instala la versión mínima con:
$ composer create-project digicreon/temma-project-api mon_api |
Si quieres crear un proyecto Temma completo, incluyendo la renderización web, instálalo así:
$ composer create-project digicreon/temma-project-web mon_site |
3Configuración
Mantendremos la configuración al mínimo, con solo lo estrictamente necesario.
Edita el archivo etc/temma.php :
<?php
return [
'application' => [
'dataSources' => [
// definición de la fuente de datos de Slack
'slack' => 'slack://WEBHOOK'
],
],
];
Reemplaza WEBHOOK con el token de webhook proporcionado por Slack, sin el prefijo https://.
Ejemplo: hooks.slack.com/services/TXXXXXXXX/BYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
4Controlador
Vamos a crear un controlador Message con tres acciones, correspondientes a las tres rutas:
- /message/form: Muestra el formulario de envío del mensaje
- /message/notify: Procesa el formulario enviado y envía el mensaje a Slack
- /message/sent: Muestra un mensaje de confirmación
Crea el archivo controller/Message.php:
<?php
/** Controlador Message. */
class Message extends \Temma\Web\Controller {
/** Muestra el formulario. */
public function form() {
}
/** Envía la notificación a Slack. */
public function notify() {
// recupera el mensaje
$message = $_POST['message'] ?? null;
// si el mensaje está vacío, redirige al formulario
if (!$message)
return $this->_redirect('/message/form');
// envía el mensaje a Slack
$this->slack[''] = $message;
// redirige a la confirmación
$this->_redirect('/message/sent');
}
/** Muestra el mensaje de confirmación. */
public function sent() {
}
}
Las acciones form y sent no hacen nada más que renderizar una página.
La acción notify envía la notificación a Slack (solo si el mensaje no está vacío) y luego redirige en consecuencia: si está vacío, de vuelta al formulario; si es válido, a la página de confirmación.
5Plantillas Smarty
Edita el archivo templates/message/form.tpl :
<html>
<body>
<form method="post" action="/message/notify">
Tu mensaje:
<input type="text" name="message">
<input type="submit" value="Enviar">
</form>
</body>
</html>
Edita el archivo templates/message/sent.tpl :
<html>
<body>
Tu mensaje ha sido enviado a Slack.
</body>
</html>