Além dos projetos do cliente, adoramos criar projetos internos - para diversão e conveniência. É legal quando você e seus colegas podem criar um superaplicativo ou um bot para stand-ups . Um bot interno também apareceu para abrir portas e visualizar câmeras, que discutirei neste post.

Isenção de responsabilidade : se você está procurando casos técnicos complexos, não tenho nada para agradá-lo. Estou avisando com antecedência para que você não tenha falsas expectativas. Temos uma solução simples, mas eficaz, que pode ser feita facilmente em algumas horas e obter muito valor.
Como funciona o bot
O bot é extremamente simples: dois botões para portas (abrir uma porta, abrir um portão) + vários botões para câmeras.

Ao mesmo tempo, no lançamento, o efeito acabou sendo insano - eles imediatamente começaram a usar o bot, e assim mesmo, porque é legal mudar algo com um toque no botão.
O bot economiza tempo
Um bot é conveniente. Principalmente quando você se esquece das chaves ou tem preguiça de pegá-las enquanto vai fumar. Parece que são ninharias - bem, você pega um molho de chaves com um chaveiro de Paris ou um passe do bolso e o coloca na porta. Mas toda a nossa vida consiste em pequenas coisas - parece que se você economizar 10-15 segundos todos os dias, poderá desfrutar da realidade por mais 5-10 dias. Confira este lindo infográfico de onde vão nossos anos de vida.
Mas o principal motivo do bot são os correios. Temos um escritório de 800m² em dois andares, mas com uma entrada para os entregadores. Se você trabalhar no térreo, não haverá problemas, mas demorará uma eternidade para ir do departamento de DevOps até a entrada.

Encontro com o mensageiro após muitos anos vagando
Ao mesmo tempo, o encontro do mensageiro em si não faz sentido: você vê um cara de macacão, abre a porta para ele com um botão, espera que ele venha, abre o baú querido, pega o pacote e abre a porta novamente com o botão. E então - o longo caminho de volta.
Tudo seria mais fácil com um bot. Você trabalha com calma, o mensageiro liga, você pede para apertar a campainha e deixa o pedido na porta, ouve a campainha. Ele apertou o botão - abriu o portão, apertou o segundo - abriu a porta. Courier left food - Lucro!
O principal é pressionar dois botões - portas e portões. Caso contrário, o mensageiro ficará preso no pátio e xingará em uma linguagem incompreensível, como o personagem Sims, horrorizado, sem saber o que fazer.
Como o bot monitora o escritório
Com a porta arrumada, mas então surge outro problema - pessoas de fora podem bater no escritório. Se está tudo claro com os rapazes de macacão, então se chega um cliente, parceiro ou alguém que não conhece, nem tudo é tão simples. Para esses casos, a integração com câmeras veio a calhar. É conveniente quando você pode tocar em um botão e entender quem está atrás da porta.
São várias câmeras e se você clicar em cada uma, pode verificar se tudo está em ordem no escritório, se esqueceu de desligar a luz e se deixou suas coisas. É claro que se você esquecer o telefone no banheiro, nenhum robô ajudará. Mas se em um canto de fitness, então é isso.

O que está dentro do bot
Escrevemos um serviço especial, já que é perigoso ficar sem ele - eu não gostaria que alguém acidentalmente tropeçasse em um robô durante a busca e pudesse abrir as portas de nosso escritório. Essa pessoa se senta em Pereslavl-Zalessky e traz confusão na produção móvel de Moscou.

E este é Pereslavl-Zallesky. Parece ótimo!
Portanto, fizemos um mecanismo para confirmar e banir o usuário - uma pessoa digita um número de telefone para registro, e o bot admin confirma com um comando.

Nós nem pensamos em hackear. O bot está sendo executado na rede interna, portanto, não há necessidade de nenhuma proteção adicional. Não existe uma maneira externa de acessar um aplicativo que executa comandos, exceto por meio de um bot. A única forma de um estranho abrir as portas é encontrar um dos nossos funcionários na rua, tirar o telefone e abrir a porta, aliás, confiamos tudo ao Telegram.
Bot e câmeras
A história é semelhante com as câmeras. Existe uma rede interna que gera visualizações automaticamente. Tudo o que é necessário é consultar o link que sempre garante uma imagem nova - o último quadro da câmera. Ele está sempre armazenado na "RAM" - não é atualizado constantemente, mas certamente é. É precisamente no "operativo" que as chamadas são feitas de acordo com o esquema de autorização inteligente.
Quando digo "complicado", quero dizer um pedido fora do padrão, que dificilmente é usado em outro lugar além de câmeras. Você precisa especificar o nome de usuário e a senha diretamente no domínio, assim como mailto. Então tudo é simples - o Java acessa a URL, salva o arquivo e carrega para o Telegram. O bot não cria um novo quadro, mas sobrescreve o existente. Ele não está interessado em quem veio trabalhar, ele está interessado apenas no estado atual. Cada imagem pesa cerca de 200-300 KB, não se fala em cargas elevadas. Mas para que ninguém pudesse "colocar" o bot, e para que o bot não fosse banido pelo Telegram por spam, adicionamos um intervalo de 10 segundos entre o envio de solicitações.
A única coisa que não sabemos é como as imagens são armazenadas - há uma ideia de que soluções de fragmentação são usadas para mover arquivos que foram usados por muito tempo para separar servidores. Se você sabe como funciona, deixe-nos saber nos comentários.
A última coisa que vale a pena notar são as notificações noturnas. Ocasionalmente, damos festas no escritório, e sempre temos pessoas que saem do escritório mais tarde do que outras. Portanto, fizemos isso de forma que se alguém usar o bot das 00:00 às 09:00, o usuário e as pessoas especialmente marcadas recebam uma notificação.

Quem usou o bot recebe uma notificação com um pedido para desligar as luzes, ar condicionado e fechar as janelas. Para pessoas especialmente marcadas - a notificação usual de que tal usuário usou o bot, isso é necessário para entender que está tudo bem e que não há estranhos no escritório.

Como resultado, descobrimos que temos um banco de dados com as seguintes funções:
- admin que confirma e bane;
- usuário que usa;
- alerta que recebe notificações.
Anteriormente, as coisas não iam muito bem com a velocidade em geral - graças ao bloqueio do Telegram. Os comandos que deveriam levar de 2 a 3 milissegundos levaram um segundo para serem concluídos. E para todos os links que usam proxies (recebimento e envio), o ping aumenta muitas vezes.
Às vezes, isso causava travamentos e travamentos. As pessoas se acostumaram a apertar o botão "abrir" 50 vezes. E então, com um atraso, você pode ouvir a sinfonia de campainhas. Tivemos que mudar as portas e os proxies, enquanto não fizemos hardcode, para que pudéssemos mudar com segurança um voila de dígito.
Trilha bônus: ter ideias sobre o que mais você pode fazer para o escritório. Vem com voce tambem
- . , «FINCH ». , , (, ).
- : , , « ?» «» «». , .
- CO2. , . «», , .
- . , . , . , . , — — .
— ? , , , . , , ?
Na verdade, não há casos que não possam ser implementados tecnicamente em um bot. Sempre se trata de UX, ergonomia e imaginação. O Telegram permite que você faça qualquer teclado embutido com botões de qualquer tamanho, até mesmo uma matriz de 50 por 50. Mas esses botões são tudo o que existe: sem fitas, telas, hambúrgueres, caixas de seleção.
Ao mesmo tempo, criar bots individuais é ainda pior, porque você tem que procurá-los, e isso é tantos cliques que o motivo de um bot, se é mais rápido fazer tudo manualmente (mesmo se você estiver no departamento de DevOps e precisar encontrar um mensageiro).
No entanto, ninguém proíbe sonhar. Conte-nos sobre as ideias mais malucas para o bot do Telegam e nós distribuiremos camisetas FINCH exclusivas para os autores das mais legais. Enviaremos para qualquer lugar do mundo.
Obrigado!