Sign inSign up

edmur/cptm-alerts

By edmur

•Updated about 7 years ago

Notificações sobre o status nas linhas dos trens e metrôs de São Paulo.

Image
0

100K+

edmur/cptm-alerts repository overview

⁠CPTM Alerts

Notificações em tempo real sobre mudanças de status nas linhas dos trens e metrôs de São Paulo diretamente no canal do Slack.

GitHub release Build Status Docker Cloud Build Status Docker Cloud Automated build GitHub PHP Version

Notificação Exemplo

⁠Getting started

⁠Workspace
  1. Você precisará de um Workspace no slack. Se não tiver crie-o⁠
⁠Token
  1. Você precisará gerar um token para o seu Workspace se comunicar com o projeto.

  2. Para isso crie um App no seu Workspace⁠

App no Workspace

  1. Após criado o App, vá até Bot Users no menu lateral e crie um Bot para seu App.

  2. Após criado o Bot, vá até OAuth & Permissions no menu lateral. Na seção Scope dê a permissão chat:write:bot e bot para o seu App. Será solicitado que o App seja reinstalado no Workspace para as novas permissões.

App configurado corretamente

  1. Após dadas as permissões e reinstalado o App salve a Bot User OAuth Access Token ela será necessária para configurar o projeto.

⁠Configurando o Projeto

⁠Rodando via Docker
  • Crie um container do projeto com o comando:
docker run --detach \
--env SLACK_KEY=your-slack-bot-oauth-key \
--env SLACK_CHANNEL=channel-name \
--env NOTIFY_LEVEL=0 \
--env NOTIFY_DAYS=all \
--env NOTIFY_LINES=all \
--restart unless-stopped \
edmur/cptm-alerts
  • Substitua os valores para as chaves SLACK_KEY e SLACK_CHANNEL.
  • Os parametros NOTIFY_LEVEL, NOTIFY_DAYS e NOTIFY_LINES são opcionais e podem ser omitidos.
  • Para rodar em produção recomendo que crie um volume para manter a persistencia dos dados e para ter acesso aos logs da aplicação.
docker volume create cptm_alerts_data

docker run --detach \
--env SLACK_KEY=your-slack-bot-oauth-key \
--env SLACK_CHANNEL=channel-name \
--env NOTIFY_LEVEL=0 \
--env NOTIFY_DAYS=all \
--env NOTIFY_LINES=all \
--restart unless-stopped \
--volume cptm_alerts_data:/usr/src/Storage \
edmur/cptm-alerts
⁠Rodando Local
  1. Baixe o projeto para uma pasta em sua maquina:
git clone https://github.com/rumd3x/cptm-alerts.git
# ou
composer create-project rumd3x/cptm-alerts
  1. Vá até a pasta do projeto: cd cptm-alerts.

  2. Instale as dependências: composer install (Não é necessário caso tenha baixado via composer create-project).

  3. Crie o seu arquivo de configurações do projeto: cp .env.example .env.

  4. Edite o arquivo .env. Em SLACK_CHANNEL coloque o canal do slack em que o bot publicará as alterações de status. Em SLACK_KEY coloque o Bot User OAuth Access Token salvo anteriormente.

  5. Para verificar o status das linhas execute php /caminho/do/projeto/run.php.

  6. Para receber automaticamente as mudanças de status coloque o comando num cron. Exemplo:

* * * * * php /caminho/do/projeto/run.php >> /caminho/do/log/run.log 2>&1

⁠Configurações de ambiente

No arquivo .env (ou nas flags --env ou -e do docker) é onde são armazaneadas as configurações e existem possibilidades de personalização no comportamento da aplicação.

⁠NOTIFY_LEVEL

A configuração NOTIFY_LEVEL deve conter um número inteiro válido e representa o menor nível de criticidade que a aplicação notificará.

Os níveis existentes são:

Nível 0: Mudanças já esperadas, como o encerramento das operações as 0h e o início das operações.
Nível 1: Mudanças positivas, como a normalização da operação após um período de lentidão.
Nível 2: Mudanças alarmantes, como a operação da linha estar com lentidão.
Nível 3: Mudanças perigosas, como a paralização da operação em uma linha.
  • Exemplo:

Se desejar receber notificações em todos os níveis deverá configurar para NOTIFY_LEVEL=0. Se não quiser receber notificações de mudanças já esperadas trocar para NOTIFY_LEVEL=1. Se quiser receber apenas notificações de paralização NOTIFY_LEVEL=3.

⁠NOTIFY_DAYS

A configuração NOTIFY_DAYS diz os dias que deverão ser enviadas notificações. Deve conter os dias que as notificações serão enviadas separados por vírgula.

Os valores são:

all: Enviar Notificações todos os dias
0: Domingo
1: Segunda-feira
2: Terça-feira
3: Quarta-feira
4: Quinta-feira
5: Sexta-feira
6: Sábado
  • Exemplo: Para receber notificações todos os dias use NOTIFY_DAYS=all. Para receber notificações somente em dias da semana use NOTIFY_DAYS=1,2,3,4,5.
⁠NOTIFY_LINES

A configuração NOTIFY_LINES diz as linhas dos trens/metrô que deverão ser monitoradas. Deve conter o numero das linhas separados por vírgula.

Os valores são:

all: Enviar Notificações para todas as linhas
1: Linha 1 Azul do Metrô
2: Linha 2 Verde do Metrô
3: Linha 3 Vermelha do Metrô
4: Linha 4 Amarela do Metrô
5: Linha 5 Lilás do Metrô
6: Linha 6 Laranja do Metrô
7: Linha 7 Rubi da CPTM
8: Linha 8 Diamante da CPTM
9: Linha 9 Esmeralda da CPTM
10: Linha 10 Turquesa da CPTM
11: Linha 11 Coral da CPTM
12: Linha 12 Safira da CPTM
13: Linha 13 Jade da CPTM
15: Linha 15 Prata da CPTM
17: Linha 17 Ouro da CPTM
  • Exemplo: Para receber notificações de todas as linhas NOTIFY_LINES=all. Para receber notificações somente da linha azul e amarela use NOTIFY_LINES=1,4.

⁠Debugando

⁠Se você fez tudo acima corretamente e não está recebendo notificações em seu canal do slack:
  • Verifique se o composer foi executado corretamente
  • Verifique a saída do php nos logs do cron (Ou execute o comando redirecionando a saída para um arquivo).
  • Verifique os logs do projeto no arquivo /caminho/do/projeto/Storage/Logs/app.log
  • Verifique se o usuário rodando o php está no grupo de permissões correto
  • Verifique se o arquivo .env tem permissão de leitura
  • Verifique se a pasta Storage tem permissão de escrita

⁠Todo

  • Aumentar o Coverage de Testes Unitários
  • Refactor para suportar mais provedores além da CPTM.
  • Adicionar suporte a IFTTT Trigger.

Tag summary

Content type

Image

Digest

Size

187.4 MB

Last updated

about 7 years ago

docker pull edmur/cptm-alerts