Трибуна
Andrey Egorov
1215

IP-телефония в Telegram: новый подход к облачной платформе

В закладки

Удобство или конфиденциальность? С этим вопросом мы сталкиваемся на каждом шагу — будь это выбор решения для корпоративной почты, виртуальной АТС или хранения данных организации. Облачные платформы привлекают нас своим удобством, но взамен мы отдаём им свои данные.
В данной статье речь пойдёт о платформе SIP.tg и о том как мы пришли к компромиссу между удобством и конфиденциальностью.

Платформа SIP.tg представляет собой удобный инструмент для подключения к провайдерам IP-телефонии без установки дополнительно ПО, а также для интеграции звонков Telegram в виртуальную АТС при помощи протокола SIP. Подключив свой аккаунт Telegram и виртуальную АТС к платформе SIP.tg, Вы получаете возможность управлять звонками от пользователей мессенджера используя все возможности виртуальной АТС: голосовое меню, очередь звонков, запись разговоров, автоответчик, конференцию и т.д. В дополнение к этому, появляется возможность звонить пользователям Telegram с любого устройства, подключенного к виртуальной АТС. При этом, пользователи будут видеть звонок от имени Вашей компании.

Предыстория

Первая публичная версия платформы была анонсирована в марте 2018 года, накануне блокировок мессенджера, и ничем не отличалась от других облачных платформ: работала исключительно на нашем оборудовании. А для желающих подключить Telegram к виртуальной АТС мы просили ещё больше — дать полный доступ к своему аккаунту Telegram. Несмотря на столь высокую цену, мы безмерно благодарны своим пользователям за доверие и ответственно заявляем, что за всё время не было ни одного случая передачи каких-либо сведений третьим лицам.

Но находились и пользователи, всерьёз обеспокоенные прохождением голосовых потоков через нашу платформу. Принимая во внимание важность данного вопроса, мы стали искать решение.

В сентябре 2018 года произошло первое разделение платформы на два компонента: модуль управления (Manager) и модуль преобразования голоса (Worker). Была анонсирована возможность перенести обработку голосовых данных на своё оборудование без какого-либо ущерба удобству. Этот подход решил сразу несколько проблем, главная из которых — конфиденциальность разговора. Мы дали пользователю свободу выбора — и это лучшее, что может быть.

Но оставался нерешённым второй вопрос — неограниченный доступ к аккаунтам пользователей при подключении Telegram к виртуальной АТС. Осознавая возможный ущерб в результате форс-мажора, откладывать решение было недопустимо. Рассматривали разные варианты:

  • просили команду Telegram добавить разные уровни доступа к аккаунту;
  • просили команду Telegram разрешить ботам совершать и принимать голосовые звонки;
  • думали над отдельным распространением модуля управления.

Общение с командой Telegram было безрезультатным. Распространение модуля управления ставило под угрозу будущее проекта: при платном распространении присутствует риск его взлома с целью обхода ограничений, а распространение на бесплатной основе, в конечном счёте, приведёт к потере мотивации дальнейшей разработки.

Но то, что не сделали до нас, почему бы не сделать нам? К тому же, с момента зарождения нашего проекта прошло больше года: появились новые библиотеки и, в силу естественных причин, накопилось много проблемных мест в коде модуля управления, которые необходимо было решать. А чтобы не переписывать модуль по несколько раз, новую версию решено было делать сразу на базе новой библиотеки — TDLib.

Хранилище сессий Telegram

И вот, в январе 2019 года, после ряда экспериментов, мы подошли к окончательному внедрению. Более того, нам удалось сохранить все существующие Telegram сессии пользователей и преобразовать их в формат хранения новой библиотеки. Так от модуля управления откололся ещё один компонент, который теперь называется хранилищем сессий Telegram (Telegram Storage).

Текущая схема компонентов платформы SIP.tg

Теперь сессию своего аккаунта Telegram можно хранить на своём оборудовании, также как и производить обработку голоса во время звонка. Модуль управления будет подключаться к Вашему хранилищу сессий и через него взаимодействовать с Telegram.

Как можно догадаться, при таком подходе модуль управления всё ещё имеет полный контроль над сессией Telegram пользователя, не смотря на то, что сама сессия уже не хранится на нашем оборудовании. Решение напрашивается само собой: ограничить разрешённые операции в модуле хранилища, что и было сделано. Таким образом, появилась долгожданная возможность управлять уровнем доступа к аккаунту путём изменения разрешённых операций в файле конфигурации.

Сразу после внедрения хранилища сессий Telegram мы не анонсировали новую возможность, поскольку ещё несколько месяцев продолжали оптимизировать её работу и исправлять ошибки. Но это было не единственное над чем велась работа. Нельзя обойти стороной ещё одно расширение.

Социальная составляющая SIP.tg: группы

Помимо подключения аккаунта Telegram к виртуальной АТС, платформа SIP.tg позволяет использовать мессенджер и как софтфон (от англ. softphone — программный телефон). Но, в отличии от обычной программы-телефона, Telegram обладает главной ценностью — это ваши контакты, доступные в облаке мессенджера.

С момента появления модуля преобразования голоса, появилась возможность разрешить его использование своим друзьям. Аналогично, теперь можно дать доступ и к своему хранилищу сессий Telegram. Но и это не всё — теперь можно разрешить использовать свои SIP-аккаунты софтфона сразу нескольким пользователям для звонков. Причём, можно указать: кому разрешено принимать звонки, а кому — звонить. В некоторых случаях данное нововведение позволит отказаться от использования виртуальной АТС между SIP.tg и оператором связи. Управлять своей группой можно через команду /group в боте.

Планы на будущее

Нас нередко спрашивают: не собираемся ли мы завтра закрыть проект?

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

Нет, мы не закрываемся, мы хотим двигаться вперёд! И, чтобы исключить подобные сомнения, расскажу о произошедших и предстоящих важных изменениях.

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

16 апреля 2019 года у нас появилось юридическое лицо в зоне ЕС. Наша компания MB "Žinučių linija" зарегистрирована в Литовской республике под номером 305133662. Работа с юридическими лицами в России будет возможна, в том числе, по агентской схеме через нашего партнёра, в других странах вне зоны ЕС — согласуется индивидуально. Подробности можно узнать в поддержке.

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

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Andrey Egorov", "author_type": "self", "tags": ["\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c","\u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u044b","\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f_\u0430\u0442\u0441","\u0431\u043e\u0442\u044b","voip","telegram","sip","ip_\u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0438\u044f"], "comments": 8, "likes": 5, "favorites": 21, "is_advertisement": false, "subsite_label": "tribuna", "id": 74083, "is_wide": false, "is_ugc": true, "date": "Wed, 10 Jul 2019 20:45:37 +0300", "is_special": false }
0
{ "id": 74083, "author_id": 224427, "diff_limit": 1000, "urls": {"diff":"\/comments\/74083\/get","add":"\/comments\/74083\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/74083"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
8 комментариев
Популярные
По порядку
Написать комментарий...
1

При всех достоинствах телеги, у нее ужасное качество голосовой связи.
Через 15 минут интенсивного общения голова болеть начинает.
Тот же вацап дает заметно лучшее качество.
А с обычным звонком через VoLTE не сравнить вообще

Ответить
0

За это отвечает используемый аудиокодек. WhatsApp, по разным источникам, использует либо OPUS, либо SILK; в VoLTE используются вариации кодека AMR.

В Telegram применяется только OPUS с подстраиваемыми к качеству соединения параметрами. С другой стороны, при подключении к IP-телефонии, кодек OPUS редко поддерживается оборудованием, поэтому общее качество также может пострадать.

Качество голоса — вещь субъективная и также может зависеть от динамика в телефоне. Например, я не замечал никаких болезненных ощущений при разговоре через Telegram.

Ответить
0

качество голоса - не субъективная, а объективная вещь
чем сильнее сжатие, тем сильнее нагружаются нейроны мозга "восстанавливающие" в голове оригинал звука
это зависит в меньшей степени от колонок и в большей от сжатия

Ответить
0

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

Так или иначе, к нашему сервису это имеет мало отношения, поскольку мы не специализируемся на исследовании сжатия аудиокодеков. Правильнее всего этот вопрос решать через поддержку Telegram VoIP (номер +4240004). Замечания попадают напрямую разработчику библиотеки обработки голоса, можно писать на русском языке.

Ответить
0

"1. голосовое меню, 2. очередь звонков, 3. запись разговоров, 4. автоответчик, 5. конференцию"
разве все это по умолчанию не есть в ботах ?
Но учить телефонщиков переходить на телеграм .. благое дело )

Ответить
0

Вы, наверное, имелии ввиду виртуальную АТС, а не ботов?

Ответить
0

Есть в телеграм бот, мошеннический, тоже позволяет звонить на мобильные. Я его удалил и название не скажу. Вот как он работал: вы якобы выбирайте номер телефона какой хотите, вводите номер на который хотите позвонить, звоните и все вроде работает. НО оказывается, звонок поступает не с номера который вы выбрали, а с спец. номера, на который человек потом перезванивает и с него списывают от 3$ за минуту. А держатель номера зарабатывает. Номера начинаются с +676, +691 +250 +1. Отпишите в ответ если вы подобным пользуйтесь, я скажу этот ли бот. Там бесплатно давали 1$ на баланс. Ещё была возможность изменения голоса (которая работала).

Ответить
0

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

Увы, но пока имеется техническая возможность подмены Caller ID, эффективно с этим бороться не получится.

Ответить

Комментарий удален

Комментарий удален

{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ] { "page_type": "default" }