-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Интеграция с Telegram #4
Comments
Буду заниматься. Отписываюсь тут, т.к. повесит на себя не особо могу |
Самое приоритетное это уметь логиниться и постить в канал (анонсы о митапах). Всё остальное обсуждаемо. |
@egorikas Назначил задачу, |
Исследовал что есть.
|
Если нет возражений, я сделаю на готовой либе, а потом будем смотреть, если чего-то не хватает, допилим ручками. @AnatolyKulakov @Sergey-Buyanov есть возражения? |
По поводу кода и библиотек забыли указать, что нужна поддержка .NET Core Также можешь указать, что нам надо хранить на стороне сервера для аутентификации пользователя? + что нужно для уникальной идентифицировать пользователя (userId, Phone?) в Telegram, чтобы можно было на этой основе выдавать права |
Нам не нужна вся функционально, можно куски выдрать из той TLSharp, потому что она под MIT. Либо взять https://github.com/OpenTl/OpenTl.ClientApi, чтобы не изобретать велосипед. egram.tel построен на Rx, поэтому что-то позаимствовать будет проблематично. Поэтому я наверное настроен попробовать OpenTl.ClientApi, если нет, выдрать куски классов из TLSharp, потому что пул-реквесты в него не мержатся с мая и это очень странно. Хранить надо:
При реализации станет понятно, но скорее всего, можно будет хранить access hash |
Да,давай, как ты говоришь попробуем использовать OpenTi.ClientApi. Т.е например, такой use case возможен? Например, пользователь логинится, через vk. Формируем информацию для публикации и отправляем её в telegram. |
Да, возможны, только переодически нужно будет перелогиниваться в систему, для этого, пользователь должен будет ввести код, который приедет ему на телефон, чтобы мы смогли его использовать в запросах |
А нет ли возможности AutoRefreshToken? Кажется что обязательное переодическое перелогиневание - это довольно странная ситуация. Я не хочу внезапно потерять возможность писать анонсы в Канал, только потому что нашей библиотеке понадобилось снова ввести код подтверждения. У меня может с собой рядом не быть телефона, или не быть окна для ввода нового кода или вообще я буду в необитаемом отпуске. Процесс должен работать и без моего вмешательстава. Я хочу один раз дать ей "бесконечный токен", "админский доступ", "вечную жизнь" или "права на автоматическое обновление токена" и всё! |
Вроде возможно также постить новости в группу через бота |
@AnatolyKulakov авторефреш и прочее, только через бота. Тогда надо будет сделать бота, дать ему админские права к каналу и писать через него. Это конечно добавление уровень сложности, но тоже прекрасно решаемо |
P.s. мне тогда надо будет что-то такое сделать https://medium.com/@xabaras/sending-a-message-to-a-telegram-channel-the-easy-way-eb0a0b32968 |
Звучит, аки то что нам надо. У использования бота для этих целей есть минусы? |
|
@egorikas а что с точки с зрения безопасности? Отсылать сообщение к боту (делать post) сможет любой? При request-е используется какой-то токен? |
При реквесте надо будет знать уникальный идентификатор бота и токен авторизации, при каждом запросе используется их связка @Sergey-Buyanov |
Давайте сделаем тогда какой-нибудь прототип на основе bot-a, чтобы он делал post в тестовую группу и посмотрим как-это будет работать. |
@AnatolyKulakov @Sergey-Buyanov
P.s. |
Если рассмотреть вариант, что ключи от бота утекли. Можно ли как-то оперативно забрать у него доступ ко всему? Отозвать ключ? |
Пара вопросов |
|
@Sergey-Buyanov , думаю, во время интеграции снова встанет вопрос про Key Chain (который мы затрагивали при обсуждении VK интеграции). Нам нужно обеспечить общий механизм хранения, раздачи, создания и перевыпуска ключей для всех внешних сервисов. |
Да, согласен, и это отдельная тема. Ещё, @AnatolyKulakov в рамках текущей задачи, хотим делать аутентификацию пользователя у нас на сервере через Telegram? |
Думаю на первом этапе можно просто описать в wiki как это сделать вручную. Всё-таки авторизация новых интеграций это не самая частая операция. А автоматизироваться подобные задачи могут сложно.
В рамках этой точно не надо. Да и домен управления пользователями у нас ещё не придуман. Надо заняться этой задачей на ближайшем собрании. |
Я считаю, что токен в конфиге - это оптимальный выбор. Чтобы совсем это автоматизировать - это путь с вводом кода из приложения, как я уже говорил. + он бессрочный и если его особо не раскрывать, вероятность того, что он утечет не особо большая + бота можно ограничить только постингом сообщений в канал. |
Да, думаю сделаем пока в конфиге appsettings.json. Для тестовых целей выделим access token тестового бота и тестовый канал @egorikas давая тогда сделаем интерфейс для компонента(фасада) работы с Telegram и позволяющего пока только постить сообщения в канал и который будем использовать в проекте |
Я вечером сегодня или завтра набросаю интерфейс и обсудим |
Для тестов да. Но всё же хотелось бы начать пользоваться Сервером как только в нём появится минимальный функционал (Публикация). Поэтому предлагаю создать таску по написанию нормального «Секретного хранилища» и начать там его обсуждение. И хотелось бы чтобы уже сейчас Телеграмная интеграция просто попросила зависимостью |
Да, надо подумать |
Так что в итоге, откуда и как мне брать токены для бота? Есть какое-то окончательно понимание? |
Для компонента должно быть без разницы, а так пока из appsettings.json сервиса |
Я скорее про то, если ли какой-то интерфейс для секретов. Или сделать по классике, через инекцию Options в компонент? |
Можно завести в компоненте нужный тебе интерфейс, также IOptions вполне подойдет |
Если что, буду доступен только в понедельник |
Хорошо, я как раз думаю к нему сделаю. |
@AnatolyKulakov в каком формате обычно сообщения в канал? Просто текст? |
Обычно это просто текст и ссылка (на регистрацию или материалы). |
Необходимо найти или разработать компонент, который предоставит возможность взаимодействовать с чат-сервисом Telegram.
Обязательные требования:
The text was updated successfully, but these errors were encountered: