Enviar Notificações do Slack a Partir de uma Interface Web
1Introdução
Este mini tutorial explica como criar uma interface web simples que envia notificações para um canal do Slack.
Você precisará criar um aplicativo Slack. Depois que o aplicativo for criado, você pode gerar uma URL de webhook e
selecionar o canal a ser associado a ela.
Esse processo é descrito em detalhes na documentação do Slack.
2Configuração do Projeto
Se você já tem um projeto Temma existente, pode pular esta etapa.
Se o seu projeto Temma não vai ser usado para servir um site (e você não vai usar templates Smarty), instale a versão mínima com:
$ composer create-project digicreon/temma-project-api mon_api |
Se você quiser criar um projeto Temma completo, incluindo a renderização web, instale-o desta forma:
$ composer create-project digicreon/temma-project-web mon_site |
3Configuração
Vamos manter a configuração mínima, apenas com o que é estritamente necessário.
Edite o arquivo etc/temma.php :
<?php
return [
'application' => [
'dataSources' => [
// definição da fonte de dados do Slack
'slack' => 'slack://WEBHOOK'
],
],
];
Substitua WEBHOOK pelo token de webhook fornecido pelo Slack, sem o prefixo https://.
Exemplo: hooks.slack.com/services/TXXXXXXXX/BYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
4Controlador
Vamos criar um controlador Message com três ações, correspondentes às três rotas:
- /message/form: exibe o formulário de envio de mensagem
- /message/notify: processa o formulário enviado e manda a mensagem para o Slack
- /message/sent: exibe uma mensagem de confirmação
Crie o arquivo controller/Message.php:
<?php
/** Controlador Message. */
class Message extends \Temma\Web\Controller {
/** Exibe o formulário. */
public function form() {
}
/** Envia a notificação para o Slack. */
public function notify() {
// recupera a mensagem
$message = $_POST['message'] ?? null;
// se a mensagem estiver vazia, redireciona para o formulário
if (!$message)
return $this->_redirect('/message/form');
// envia a mensagem para o Slack
$this->slack[''] = $message;
// redireciona para a confirmação
$this->_redirect('/message/sent');
}
/** Exibe a mensagem de confirmação. */
public function sent() {
}
}
As ações form e sent não fazem nada além de renderizar uma página.
A ação notify envia a notificação para o Slack (somente se a mensagem não estiver vazia) e depois redireciona de acordo: se vazia, de volta ao formulário; se válida, para a página de confirmação.
5Templates Smarty
Edite o arquivo templates/message/form.tpl :
<html>
<body>
<form method="post" action="/message/notify">
Sua mensagem:
<input type="text" name="message">
<input type="submit" value="Enviar">
</form>
</body>
</html>
Edite o arquivo templates/message/sent.tpl :
<html>
<body>
Sua mensagem foi enviada para o Slack.
</body>
</html>