Телефонный эфир v2.0. Возрождение легенды в telegram боте

image

Это первая статья из будущей серии статей о том, как я возродил однажды ушедшую в историю идею в коде. В этой статье я опишу реализацию регистрации в части места жительства.

Предыстория


Впервые о Ленинградском телефонном эфире я прочитал в одной художественной книге. Потом я начал искать информацию об этом в сети. Меня поразило и воодушевило то, как баг привел к такому уникальному социально-техническому явлению. По сути это первый публичный чат, социальная сеть, называйте как хотите, но просто представьте себе что это было в СССР! Для того времени и социального режима это было нечто невообразимое.

Что это такое? Если можно, попроще


Статей на данную тему в сети много, раз, два, но я попытаюсь объяснить просто.

АТС того времени имели баг — при звонках на определенные несуществующие номера люди попадали в групповой разговор, еще это называется аудиоконференция или же «Телефонный эфир». Для того времени это было насколько круто и не обычно, что «тема зашла». Эфиряне Люди знакомились, встречались, общались и даже заводили отношения, семьи в «Эфире». Вот это романтика!

Чем все закончилось


Конечно же были попытки взять это под контроль, но данные феномены возникали по всему Союзу и это было проблематично. Но время и модернизация АТС таки заставили «Телефонный эфир» уйти в историю.

Некоторые идеи хочется возродить


Т.к. я тоже романтик работаю с АТС, VoIP, и программирую на python — я решил возродить идею в коде.

Результатом моего труда стал симбиоз идеи «Телефонного эфира», VoIP PBX Asterisk и Telegram.
Если Вам интересно пощупать как это работает, воспользуйтесь ссылкой.

Реализация регистрации. База городов


Можно и даже нужно реализовывать подобного рода боты с минимальным количеством данных, которые пользователи вводят при регистрации. Например в моем боте, около 20% пользователей не завершили процесс регистрации. Все эти данные я запрашиваю для будущих
фич которые будут внедрены при наличии большего количества пользователей, например

  • Эфиры по городам, станам, темам (для этого при регистрации пользователю предлагается указать место жительства)
  • Знакомства по фильтрам (для этого при регистрации пользователю предлагается указать пол, возраст)

Эти данные в боте можно изменить в любое время через меню настройки, никто не мешает указать любое значение. Я специально не стал реализовывать определение места жительства через кнопку отправить геолокацию дабы не смущать пользователей и сберечь их анонимность.

В этой статье я решил поделиться самым сложным моментом реализации регистрации — выбор места жительства.

В идеальном случае для реализации регистрации в части указания места жительства нужно иметь базу данных всех городов мира, что подразумевает наличие нескольких проблем:

  1. Найти такую базу либо создать ее самому.

    Бесплатно найти такую базу не так уж просто, создать еще сложнее.
  2. Гарантировать ее актуальность. Особенно актуально при переименовании городов.
  3. Желательно реализовать максимальное удобство для пользователя. Пользователь должен иметь возможность ввести место жительства с ошибками или используя старые названия населенных пунктов.
  4. Размер базы. База РЕАЛЬНО ВСЕХ населенных пунктов мира будет иметь размер минимум в 1,5 — 2 GB. Не всегда это хорошо, если Вы используете vps, скорость работы самой базы и т.д.

И вообще, зачем хранить города Зимбабве если Ваш контент предназначен для стран СНГ?
Все базы которые я нешел в открытом доступе не удовлетворяли ни один из перечисленных пунктов.

Поэтому я поехал своим велосипедом пошел по своему гибридному пути.

Базу я решил создавать сам. Также, сделать механизм дальнейшего заполнения в автоматическом режиме данными, которых нет в базе.

Я прочитал несколько статей об аудитории telegram и решил сделать актуальную базу в полу ручном режиме для стран Россия, Украина, Белоруссия, Узбекистан и США.

Как я это делал?

Для указанных стран я взял данные с Википедии о больших городах, сохранил в csv файл и пропустил каждое значение через чудную библиотеку geopy. Результаты сохранял в SQLite базу.
Делюсь базой с сообществом. Надеюсь кому-то она сохранит время.

Пользователь имет возможность ввести место жительства с ошибками или используя старые названия населенных пунктов благодаря использованию мной библиотеки geopy. Введенные пользователем данные я пропускаю через geopy, далее проверяю наличие соответствующей записи в базе. Если запись в базе существует — я присваиваю пользователю идентификатор населенного пункта, если же нет — я записываю в базу новый населенный пункт и опять же таки присваиваю его идентификатор пользователю.

Таким образом я не храню кучу ненужных населенных пунктов в базе.

В упрощенном виде, алгоритм выбора места жительства клиентом во время регистрации выглядит следующим образом:



Вот такой получилась моя гибридная схема.

При этом на хостинге база занимает всего 512 KB и динамически наполняется самими пользователями.

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 9 120 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 13

    +1
    АТС того времени имели баг — при звонках на определенные несуществующие номера люди попадали в групповой разговор, еще это называется аудиоконференция или же «Телефонный эфир»

    Да, и это было реально прикольно. Правда хоть убейте, не могу вспомнить на какой номер мы звонили в РнД, емнип, какой-то короткий, трёхзначный.
    Спасибо за ностальгии пост.
      0
      А при чем тут Asterisk? Не хватает технического описания.
        0
        В следующих статьях я раскрою стык telegram_bot — asterisk.
          0
          вот с этого было бы лучше начинать, это гораздо интересней)
            0
            Предварительно могу сказать что использую tg2sip для звонков в asterisk
              0
              Ну да единственное решение, но у меня почему-то были проблемы с кодеком!
              0

              Вот, более техническим языком
              https://habr.com/ru/post/520424/

                0
                Спасибо, сейчас почитаем!
          0
          Есть такой @VoicesOfStrangers_bot с похожей функциональностью.
            0
            Абсолютно другая тема.
            Здесь — живой аудиочат, в дальнейшем с разбиением по городам, странам, темам. Там же просто шлют в общую ленту аудиосообщения. Но бот тоже очень крутой.
            +1
            Эх, не успел я на 3 года с комментами к статье о Ленинградском эфире…
            Жаль.
            А я тот самый динозавр оттуда.
            Было весело.
            Томас (привет!) Поручик, Машка с Юга, Медуза (бррр… чтоб ты сдох).
            Слава Вычислитель (который и искал те самые номера).
            А мы там были, и кричали сквозь короткие гудки. И жгли выходные каскады усилков, включенных напрямую в телефонную розетку.
            Но когда это было? Многие читающие еще не родились к тому времени.
            А сейчас, в телеге, это зачем? Ну заглянут, ну познакомятся ненадолго. А тогда это был
            стиль жизни, тогда это было «нельзя». Что сейчас «нельзя»?
              0
              А сейчас, в телеге, это зачем? Ну заглянут, ну познакомятся ненадолго. А тогда это был
              стиль жизни, тогда это было «нельзя». Что сейчас «нельзя»?

              Как раз для Вас я это и делал, для таких отзывов как отзыв №1 от tvr
              Для того лампового тепла которое исходит от этой идеи.
              Для возрождения той романтики которая кроется за живым общением.
              Вы пробовали общаться на современных сайтах, приложениях знакомств, на той же мамбе? Там половина, если не больше — это боты!
              Почему бы не возродить тот стиль жизни, возможно даже в более широких масштабах, например разбив эфиры на темы по интересам, темам где люди найдут себе собеседника по душе и по контексту?
              Сейчас можно все, именно поэтому мы и не стоим на месте, именно поэтому telegram.
              0
              А вот теперь посмотрите на хайп вокруг clubhouse…
              Функционал clubhouse идентичен моему боту.
              Наглядно. Продвижение любого продукта важнее идеи (

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое