Transmissão por telefone v2.0. Renascimento da lenda no bot do telegrama

imagem


Este é o primeiro de uma próxima série sobre como revivi uma história antiga no código. Neste artigo, descreverei a implementação do registro em termos de residência.



fundo



Pela primeira vez, li sobre a transmissão por telefone de Leningrado em um livro de ficção. Então comecei a procurar informações sobre isso na rede. Fiquei surpreso e encorajado ao ver como o bug levou a um fenômeno sócio-técnico único. Na verdade, esse é o primeiro chat público, uma rede social, chame do que quiser, mas imagine o que era na URSS! Para aquela época e para o regime social, era algo inimaginável.



O que é isso? Se possível, mais simples



Existem muitos artigos sobre esse assunto na rede, um , dois , mas tentarei explicar de forma simples.



Os PBXs daquela época tinham um bug - ao ligar para determinados números inexistentes, as pessoas acabavam em uma conversa em grupo, também chamada de conferência de áudio ou "Transmissão por telefone". Para aquela época, era tão legal e incomum que o assunto fosse. As Pessoas Etherians se conheceram, se conheceram, conversaram e até iniciaram relacionamentos, famílias no "Ether". Isso é romance!



Como isso acabou



Claro, houve tentativas de assumir o controle disso, mas esses fenômenos surgiram em toda a União e isso era problemático. Mas o tempo e a modernização das centrais telefônicas automáticas fizeram o "Ether de telefonia" entrar para a história.



Quero reviver algumas ideias



Porque Também sou um romântico, trabalho com PBX, VoIP e programação em python - decidi reviver a ideia no código.



O resultado do meu trabalho foi uma simbiose da ideia de "Telephone Ether", VoIP PBX Asterisk e Telegram.

Se você estiver interessado em saber como funciona, use o link .



Implementação do registro. Base da cidade



É possível e até necessário implementar tais bots com uma quantidade mínima de dados que os usuários inserem durante o registro. Por exemplo, no meu bot, cerca de 20% dos usuários não concluíram o processo de registro. Solicito todos esses dados para

recursos futuros que serão implementados se houver mais usuários, por exemplo



  • Vem por cidade, país, assunto (para isso, ao se cadastrar, o usuário é solicitado a indicar o local de residência)
  • Datando por filtros (para isso, ao se cadastrar, é solicitado que o usuário indique sexo, idade)


Esses dados no bot podem ser alterados a qualquer momento através do menu de configurações, ninguém se preocupa em especificar nenhum valor. Deliberadamente não implementei a definição de residência por meio do botão enviar geolocalização para não confundir os usuários e preservar o anonimato.



Neste artigo, decidi partilhar o momento mais difícil da implementação do registo - a escolha de um local de residência.



Idealmente, para implementar o registro em termos de indicação do local de residência, é necessário ter um banco de dados de todas as cidades do mundo, o que implica a presença de vários problemas:



  1. Encontre essa base ou crie-a você mesmo.



    Não é tão fácil encontrar esse banco de dados gratuitamente, é ainda mais difícil de criar.
  2. . .
  3. . .
  4. . 1,5 — 2 GB. , vps, ..


E, em geral, por que armazenar as cidades do Zimbábue se seu conteúdo se destina aos países da CEI?

Todas as bases de dados que não tornei públicas não satisfizeram nenhum dos pontos listados.



Então eu andei de bicicleta e segui meu caminho híbrido.



Decidi criar a base sozinho. Além disso, crie um mecanismo para preencher ainda mais o modo automático com dados que não estão no banco de dados.



Li vários artigos sobre a audiência de telegramas e decidi fazer uma base de dados real em modo semi-manual para os países da Rússia, Ucrânia, Bielo-Rússia, Uzbequistão e EUA.



Como eu fiz isso?



Para esses países, peguei dados da Wikipedia sobre grandes cidades, salvei em um arquivo csv e passei cada valor pela maravilhosa biblioteca geopy... Os resultados foram salvos em um banco de dados SQLite.

Divido a base com a comunidade. Espero que para alguém isso economize tempo.



O usuário tem a oportunidade de entrar no local de residência com erros ou usando os nomes antigos dos assentamentos graças ao uso da biblioteca geopy. Passo os dados inseridos pelo usuário por meio de geopy, a seguir verifico a presença do registro correspondente no banco de dados. Se existir um registro no banco de dados, atribuo ao usuário um identificador do assentamento; do contrário, escrevo um novo assentamento no banco de dados e novamente atribuo seu identificador ao usuário.



Portanto, não armazeno um monte de liquidações desnecessárias no banco de dados.



De forma simplificada, o algoritmo para a escolha do local de residência de um cliente durante o registro é o seguinte:







Foi assim que meu circuito híbrido ficou.



Ao mesmo tempo, na hospedagem, o banco de dados ocupa apenas 512 KB e é preenchido dinamicamente pelos próprios usuários.



All Articles