новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Создание telegram бота, управляющий интересующим другим ботом

    • #1
    • 07.09.2019 04:36
    0
    Требуется создать обработку 1С, которая позволит управлять telegram ботом @BSv2Bot. Обработка должна уметь "нажать" какую-нибудь кнопку (на главной странице), а по факту отправить команд...  Подробнее>>
    • #2
    • 07.09.2019 04:48
    0
    Обработка 1С не сможет напрямую общаться с "официальным API телеграм" - для данной задачи нужно использовать API TDLib. Т.е. Ваша задача - это: 1) Написать внешнюю компоненту для 1С, которая будет использовать API TDLib 2) Написать обработку 1С, которая будет обращаться к API данной внешней компоненты.
    • #3
    • 07.09.2019 09:23
    0
    Денис, поясните, пожалуйста, для чего необходим API TDLib? На сколько я знаю, например, в ЗУП 3 уже используется управление, правда не учетной записью, а просто созданным Ботом. Также есть черновик работы тут https://nizamov.studio/article-00031/, который, правда, не работает из-за того, что требуется авторизация при управлении учетной записью телеграмм.
    • #4
    • 07.09.2019 10:33
    • Отредактировано: 07.09.2019 11:29:40
    0
    Telegram Bot API, который реализован через протокол HTTP (благодаря чему обработка 1С может взаимодействовать с Bot-API напрямую) для Вашей задачи не подходит, как и само использование бота для управления другим ботом. Бот не может общаться с другим ботом по определению (https://tlgrm.ru/docs/bots/faq#why-doesn-39t-my-bot-see-messages-from-other-bots). Для Вашей задачи нужно делать телеграм-клиента, используя Telegram-API (без слова Bot), но он не работает по HTTP (т.е. напрямую из 1С к нему не обратиться). TDLib - просто как вариант взаимодействия с Telegram-API, поскольку он как бы официальный непосредственно от команды телеграм. Можно, конечно исхитриться и прописать непосредственно во внешнюю компоненту все методы для взаимодействия с Telegram-API, но смысла не вижу, когда есть готовые библиотеки. "Черновик" работы https://nizamov.studio/article-00031/ - он на самом деле не про Telegram-API, а про метод SendDocument из Telegram Bot API. Именно Bot, Низмаов не предельно корректно назвал его в банере "Интеграция с Telegram-API", пропустив слово "Bot" правильно назвать это "Интеграция с Telegram Bot API". Метод SendDocument из этого "черновика" описан в инструкции к бот-апи https://tlgrm.ru/docs/bots/api#senddocument
    • #5
    • 07.09.2019 10:43
    0
    Т.е. у телеграма есть два API, 1) Telegram Bot API, 2) просто Telegram API. С помощью первого API Вы можете сделать своего бота, но к чужому боту Ваш бот не может обратиться. К чужому боту можно обратиться от имени клиента, а это уже второй API. Цитата:
    Telegram APIs
    We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for an interface. The Telegram API and TDLib allow you to build your own customized Telegram clients.
    • #6
    • 07.09.2019 13:11
    • Отредактировано: 07.09.2019 13:44:12
    0
    Денис
    Обработка 1С не сможет напрямую общаться с "официальным API телеграм" - для данной задачи нужно использовать API TDLib. Т.е. Ваша задача - это: 1) Написать внешнюю компоненту для 1С, которая будет использовать API TDLib 2) Написать обработку 1С, которая будет обращаться к API данной внешней компоненты.


    Библиотек-клиентов telegram полно для разных языков, например Telethon для python, как одна из популярных.

    https://github.com/LonamiWebs/Telethon/

    Поэтому использование TDLib совершенно не обязательно, на сайте telegram так, собственно и написано, что эта библиотека облегчает работу с Telegram API, и только.

    Так что писать внешнюю компоненту и использовать TDLib совершенно не обязательно, достаточно с помощью любой из клиентских библиотек написать промежуточный http-сервер, который будет на входе принимать команды от 1С по http и отправлять их через свои клиентские методы в телеграмм.
    • #7
    • 07.09.2019 14:49
    • Отредактировано: 07.09.2019 14:49:44
    0
    badger
    Так что писать внешнюю компоненту и использовать TDLib совершенно не обязательно
    Наверно да, такая ВК уже вроде как написана, лежит в сети с открытым кодом - Native ВК для 1С под TDLib. И заказчик просил "Обработка не должна использовать сторонние api, кроме официальных telegram" - TDLib к этому вроде больше подходит.
    • #8
    • 07.09.2019 16:12
    0
    Денис
    Наверно да, такая ВК уже вроде как написана, лежит в сети с открытым кодом - Native ВК для 1С под TDLib


    Ну если уже написана, то другое дело, просто начинали вы разговор с:

    "Т.е. Ваша задача - это: 1) Написать внешнюю компоненту для 1С, которая будет использовать API TDLib"



    Денис
    И заказчик просил "Обработка не должна использовать сторонние api, кроме официальных telegram" - TDLib к этому вроде больше подходит.


    ОК, по этому вопросу вы правы, действительно, было про официальные. Хотя, в таком случае, та же внешняя компонента, которая "уже написана", по сути, представляет то самое "неофициальное API', которого заказчик просил не использовать :)
    • #9
    • 07.09.2019 16:52
    • Отредактировано: 07.09.2019 18:44:33
    0
    badger
    то самое "неофициальное API', которого заказчик просил не использовать
    100% официозом никак не обойтись. И да, если все равно будут подобные вкрапления - лучше использовать то, что удобней, в т.ч. Ваш вариант. А начинал я разговор - как бы ТЗ заказчика переформулировал, в попытке с минимальными отступлениями от исходного.
    • #10
    • 07.09.2019 22:43
    0
    Денис
    Бот не может общаться с другим ботом по определению


    Я наверное не совсем правильно выразился. Мне нужен не Бот, который управляет другим, аобработка 1С, которая имеет доступ к моей учетной записи Телеграм и которая от моего имени может управлять (на сколько позволяет клиентская часть) теми ботами, на которые я подписался.
    • #11
    • 07.09.2019 22:45
    0
    Денис
    100% официозом никак не обойтись. И да, если все равно будут подобные вкрапления - лучше использовать то, что удобней, в т.ч. Ваш вариант. А начинал я разговор - как бы ТЗ заказчика переформулировал, в попытке с минимальными отступлениями от исходного.


    ОК, Telethon подойдет как доверенный
    • #12
    • 08.09.2019 15:17
    0
    Денис
    100% официозом никак не обойтись.


    Ну так и я о том же, что официальным вариантом обойтись не получится в случае 1С (либо писать свой аналог, что явно дублирующая работа, зато только код разработчика и официальное).


    Денис

    И да, если все равно будут подобные вкрапления - лучше использовать то, что удобней, в т.ч. Ваш вариант.


    Ну, ваш вариант ничем не хуже...

    Что интересно - сам telegram в списке неофициальных клиентов даёт упоминание MadelineProto, ещё одной неофициальной библиотеки, на PHP:

    https://telegram.org/apps

    причём это единственная упоминаемая библиотека, остальные две позиции - Unigram и Telegram CLI for Linux это именно клиенты(причём линуксовский - клиент для командной строки).

    Так что если делать на MadelineProto - можно утверждать, что оно до некоторой степени одобряемое Telegram.


    Денис

    А начинал я разговор - как бы ТЗ заказчика переформулировал, в попытке с минимальными отступлениями от исходного.


    Понятно, отлично. А то, что такая внешняя компонента уже существует - ещё лучше.
    • #13
    • 08.09.2019 15:22
    • Отредактировано: 08.09.2019 15:29:15
    0
    nosov_sasha
    ОК, Telethon подойдет как доверенный


    внешняя компонента для 1С, о которой шла речь, ничем не менее доверенная, так как:

    https://infostart.ru/public/834836/

    https://github.com/Infactum/telegram-native

    она с открытым кодом, что позволяет провести и code review, и доработать компоненту, если это потребуется.

    Плюс, поскольку внешняя компонента напрямую вызывается 1С - это решение, как минимум теоретически, является более простым в эксплуатации, по сравнению с решением с промежуточным "транслирующим" HTTP-MTproto сервером, то есть "встроенное" в 1С, по сравнению с отдельно запускаемым компонентом системы (можно, конечно, предусмотреть автозапуск промежуточного сервера при старте обработки в 1С и так далее, но всё равно, для запуска внешней компоненты в 1С уже всё предусмотрено).
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться