Fonte de dados: Slack
1Apresentação
Slack é um serviço de comunicação colaborativa, que permite aos usuários trocar informações por meio de comunicações pontuais ou dentro de canais de comunicação.
É possível enviar mensagens dentro de um canal de comunicação, para notificar os usuários de forma automatizada.
Se você configurou corretamente os parâmetros de conexão do Slack, o Temma cria automaticamente um objeto do tipo \Temma\Datasources\Slack, com o qual você pode enviar notificações. Por convenção, vamos supor que você nomeou essa conexão slack no arquivo etc/temma.php (veja documentação de configuração).
Nos controladores, a conexão ao Slack fica então disponível da seguinte forma:
$slack = $this->slack;
Nos demais objetos gerenciados pelo componente de injeção de dependências, a conexão ao Slack é acessível da seguinte forma:
$slack = $loader->dataSources->slack;
$slack = $loader->dataSources['slack'];
2Configuração
Para enviar notificações no Slack, você precisa primeiro criar um aplicativo Slack e ativar os webhooks. Você poderá então criar um ou mais webhooks para esse aplicativo, cada webhook vinculado a um canal no qual pode publicar mensagens.
No arquivo etc/temma.php (veja documentação de configuração), você declara o DSN (Data Source Name) usado para se conectar ao Slack.
O DSN usado para se conectar ao Slack pode ser escrito como slack://WEBHOOK
Com WEBHOOK o valor da URL do webhook, sem o prefixo https://.
Exemplo: hooks.slack.com/services/TXXXXXXXX/BYYYYYYYY/ZZZZZZZZZZZZZZZZZZZZZZZZ
3Conteúdo das notificações
As notificações podem conter texto, que aceita uma variante da sintaxe Markdown.
As notificações também podem ter "anexos", ou seja, blocos que podem conter texto, uma imagem, um texto de "rodapé", além de um texto posicionado acima do bloco.
4Chamadas unificadas
4.1Acesso tipo array
// envia uma notificação simples
$slack[''] = "Message to send";
// envia uma notificação formatada
$slack[''] = [
'text' => 'Text of the notification, with <https://temma.net|a link>',
'attachments' => [
[
'pretext' => 'Text above the block',
'text' => "*bold* _italic_ ~strikedout~ `code`",
'image' => "https://site.com/path/to/image.jpg",
'footer' => "Text of the block footer",
],
'Text block',
"Another text-only block",
[
'image' => "https://site.com/path/to/image2.jpg",
],
],
];
4.2Método avançado
// envia uma notificação simples
$slack->set('', "Message to send");
// envia uma notificação formatada
$slack->set('', [
'text' => 'Main text',
'attachments' => [
'First block',
'Second block',
],
]);