Transmisión telefónica v2.0. Renacimiento de la leyenda en el telegram bot

imagen


Esta es la primera de una próxima serie sobre cómo reviví en código una historia que había desaparecido. En este artículo, describiré la implementación del registro en términos de residencia.



Antecedentes



Por primera vez leí sobre la transmisión telefónica de Leningrado en un libro de ficción. Luego comencé a buscar información sobre esto en la red. Me sorprendió y animó cómo el error condujo a un fenómeno socio-técnico tan singular. De hecho, este es el primer chat público, una red social, llámalo como quieras, ¡pero imagina lo que era en la URSS! Para esa época y el régimen social, era algo inimaginable.



¿Lo que es? Si es posible, más simple



Hay muchos artículos sobre este tema en la red, uno , dos , pero intentaré explicarlo de forma sencilla.



Los PBX de esa época tenían un error: cuando llamaban a ciertos números inexistentes, la gente terminaba en una conversación grupal, esto también se llama conferencia de audio o "transmisión telefónica". Para ese momento, fue tan genial e inusual que el tema fue. La gente de Etherians llegó a conocerse, se conoció, habló e incluso comenzó relaciones, familias en "Ether". ¡Esto es romance!



Cómo terminó



Por supuesto, hubo intentos de tomar el control de esto, pero estos fenómenos surgieron en toda la Unión y esto fue problemático. Pero el tiempo y la modernización de la central telefónica automática hicieron que la "Telefonía Ether" pasara a la historia.



Quiero revivir algunas ideas



Porque También soy un romántico, trabajo con PBX, VoIP y programación en Python. Decidí revivir la idea en el código.



El resultado de mi trabajo fue la simbiosis de la idea de "Telephone Ether", VoIP PBX Asterisk y Telegram.

Si está interesado en tener una idea de cómo funciona, utilice el enlace .



Implementación de registro. Base de la ciudad



Es posible e incluso necesario implementar dichos bots con una cantidad mínima de datos que los usuarios ingresan durante el registro. Por ejemplo, en mi bot, aproximadamente el 20% de los usuarios no completaron el proceso de registro. Solicito todos estos datos para

funciones futuras que se implementarán si hay más usuarios, por ejemplo



  • Se transmite por ciudad, país, temática (para ello, al registrarse, se solicita al usuario que indique su lugar de residencia)
  • Citas por filtros (para ello, al registrarse, se le pide al usuario que indique sexo, edad)


Estos datos en el bot se pueden cambiar en cualquier momento a través del menú de configuración, nadie se molesta en especificar ningún valor. Deliberadamente no implementé la determinación del lugar de residencia a través del botón de enviar geolocalización para no avergonzar a los usuarios y preservar su anonimato.



En este artículo, decidí compartir el momento más difícil de la implementación del registro: elegir un lugar de residencia.



Idealmente, para implementar el registro en cuanto a indicar el lugar de residencia, es necesario tener una base de datos de todas las ciudades del mundo, lo que implica la presencia de varios problemas:



  1. Encuentre una base de este tipo o créela usted mismo.



    No es tan fácil encontrar una base de datos de este tipo de forma gratuita, es aún más difícil de crear.
  2. . .
  3. . .
  4. . 1,5 — 2 GB. , vps, ..


Y, en general, ¿por qué almacenar las ciudades de Zimbabwe si su contenido está destinado a los países de la CEI?

Todas las bases de datos que no hice públicas no cumplieron con ninguno de los puntos enumerados.



Así que monté mi bicicleta y seguí mi camino híbrido.



Decidí crear la base yo mismo. Además, cree un mecanismo para completar aún más el modo automático con datos que no están en la base de datos.



Leí varios artículos sobre la audiencia de telegramas y decidí hacer una base de datos real en modo semi-manual para los países de Rusia, Ucrania, Bielorrusia, Uzbekistán y Estados Unidos.



Como lo hice



Para los países indicados, tomé datos de Wikipedia sobre grandes ciudades, los guardé en un archivo csv y pasé cada valor a través de la maravillosa biblioteca geopy.... Los resultados se guardaron en una base de datos SQLite.

Comparto la base con la comunidad. Espero que a alguien le ahorre tiempo.



El usuario tiene la posibilidad de ingresar a un lugar de residencia con errores o usando nombres antiguos de asentamientos gracias a mi uso de la biblioteca de geopia. Paso los datos ingresados ​​por el usuario a través de geopy, luego verifico la presencia del registro correspondiente en la base de datos. Si existe un registro en la base de datos, le asigno al usuario un identificador del asentamiento, si no, escribo un nuevo asentamiento en la base de datos y nuevamente asigno su identificador al usuario.



Por lo tanto, no almaceno un montón de asentamientos innecesarios en la base de datos.



De forma simplificada, el algoritmo para elegir un lugar de residencia por parte de un cliente durante el registro es el siguiente:







Así resultó mi circuito híbrido.



Al mismo tiempo, en el hosting, la base de datos ocupa solo 512 KB y es llenada dinámicamente por los propios usuarios.



All Articles