Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
Джавадоки хотя бы есть к этой библиотеке? Вот это оно: https://github.com/rubenlagus/TelegramBots ?
смотрел это
но там вообще нет ничего про использовании webhook с сертификатами (тем более самоподписанными)
такое впечатление что у людей наличие класса implements WebhookBot означает что они его и используют. там стоит версия 5+, а примеры с версией 4.9.+

Alexander A. Sak
Один раз регистрируешь свой эндпойнт (https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
т.е. создавать с нуля? как бы не плохо, но еслиб это использовалось в локалке - можно было б.
но в инет светить...
16 ноя 20, 14:53    [22232970]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
там стоит версия 5+, а примеры с версией 4.9.+
тебе нужно сделать любую рабочую версию. Демку.
Вопрос свелся к поиску демки.
16 ноя 20, 15:11    [22232999]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
вадя
Alexander A. Sak
Один раз регистрируешь свой эндпойнт (https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
т.е. создавать с нуля? как бы не плохо, но еслиб это использовалось в локалке - можно было б.
но в инет светить...


Не понял. Вебхук - это по определению "в инет светить". Ты говоришь URL, на который сторонний сервер тебе выполняет запросы при возникновении событий. Просто ты выбрал вариант, когда этот URL боту сообщает какая-то прослойка.

Судя по коду из https://github.com/rubenlagus/TelegramBots метод registerBot() возвращает объект BotSession, у которого есть метод stop().
Вполне возможно, он делает что надо. Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.

Сообщение было отредактировано: 16 ноя 20, 15:18
16 ноя 20, 15:22    [22233010]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Вопрос свелся к поиску демки.
уже потратил кучу времени на поиск
вот что использую это моя демка
выложить для пробы - там и сертификаты от letsencrypt , и параметры бота - мало вероятно что кто-то будет это поднимать у себя

ну вот при остановке кошки выдает
A16-Nov-2020 17:20:36.877 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
16-Nov-2020 17:20:36.878 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
16-Nov-2020 17:20:36.884 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-127.0.0.1-8009"]
16-Nov-2020 17:20:36.890 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
16-Nov-2020 17:20:36.900 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [bota] appears to have started a thread named [HttpServer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@14.0.2/java.lang.Object.wait(Native Method)
org.glassfish.grizzly.utils.DelayedExecutor$DelayedRunnable.run(DelayedExecutor.java:148)
java.base@14.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
java.base@14.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
java.base@14.0.2/java.lang.Thread.run(Thread.java:832)
16-Nov-2020 17:20:36.902 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [bota] appears to have started a thread named [grizzly-nio-kernel(1) SelectorRunner] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@14.0.2/sun.nio.ch.EPoll.wait(Native Method)
java.base@14.0.2/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
java.base@14.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:129)
java.base@14.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:141)
org.glassfish.grizzly.nio.DefaultSelectorHandler.select(DefaultSelectorHandler.java:88)
org.glassfish.grizzly.nio.SelectorRunner.doSelect(SelectorRunner.java:308)
org.glassfish.grizzly.nio.SelectorRunner.run(SelectorRunner.java:248)
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
java.base@14.0.2/java.lang.Thread.run(Thread.java:832)
16-Nov-2020 17:20:36.902 WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [bota] appears to have started a thread named [grizzly-nio-kernel(2) SelectorRunner] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.base@14.0.2/sun.nio.ch.EPoll.wait(Native Method)
java.base@14.0.2/sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:120)
java.base@14.0.2/sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:129)
java.base@14.0.2/sun.nio.ch.SelectorImpl.select(SelectorImpl.java:141)
org.glassfish.grizzly.nio.DefaultSelectorHandler.select(DefaultSelectorHandler.java:88)
org.glassfish.grizzly.nio.SelectorRunner.doSelect(SelectorRunner.java:308)
org.glassfish.grizzly.nio.SelectorRunner.run(SelectorRunner.java:248)
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
java.base@14.0.2/java.lang.Thread.run(Thread.java:832)
16 ноя 20, 15:27    [22233017]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
Судя по коду из https://github.com/rubenlagus/TelegramBots метод registerBot() возвращает объект BotSession, у которого есть метод stop().
да так и работает
ечли использовать вариант TelegramLongPollingBot
https://github.com/rubenlagus/TelegramBots/blob/master/telegrambots/src/main/java/org/telegram/telegrambots/bots/TelegramLongPollingBot.java
но это метод когда свой сервер дёргает сервер telegram
но этот вариант стопится долго... секунд 20 , если не больше
Alexander A. Sak
Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.
возможно, но это надо изучать все протоколы общения телеграм
16 ноя 20, 15:35    [22233027]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
Судя по коду из https://github.com/rubenlagus/TelegramBots метод registerBot() возвращает объект BotSession, у которого есть метод stop().
да так и работает
ечли использовать вариант TelegramLongPollingBot
https://github.com/rubenlagus/TelegramBots/blob/master/telegrambots/src/main/java/org/telegram/telegrambots/bots/TelegramLongPollingBot.java
но это метод когда свой сервер дёргает сервер telegram
но этот вариант стопится долго... секунд 20 , если не больше
Alexander A. Sak
Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.
возможно, но это надо изучать все протоколы общения телеграм
16 ноя 20, 15:35    [22233028]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
https://github.com/rubenlagus/TelegramBots
https://github.com/rubenlagus/TelegramBots#webhooks-vs-getupdates
отказ от ответственности
Both ways are supported, but I recommend long polling method.
16 ноя 20, 16:19    [22233061]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
как убить из кода процесс прослушивающий порт?
так грубо
16 ноя 20, 16:20    [22233065]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Ты открыл тему 27 октября. За это время можно было почитать API Телеграма и разобраться с протоколом. Там обычный JSON.

Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
16 ноя 20, 16:23    [22233068]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
если есть кто по-способнее,
может тут разберётся https://github.com/rubenlagus/TelegramBotsExample/tree/master/src/main/java/org/telegram как остановить?
на основании этого сделан вариант
вот конкретно
переделано это
 private static TelegramBotsApi createSelfSignedTelegramBotsApi() throws TelegramApiException {
        return new TelegramBotsApi(BuildVars.pathToCertificateStore, BuildVars.certificateStorePassword, BuildVars.EXTERNALWEBHOOKURL, BuildVars.INTERNALWEBHOOKURL, BuildVars.pathToCertificatePublicKey);
    } 
16 ноя 20, 16:29    [22233079]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
Ты открыл тему 27 октября. За это время можно было почитать API Телеграма и разобраться с протоколом. Там обычный JSON.
ну не всё время этой проблемой занимался..
Alexander A. Sak
Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
вот когда я делаю своё - мне тычат - что это не правильно (хороший пример с шаблоизаторами был)
а тут совет сделать своё....
н наверное придётся...
16 ноя 20, 16:33    [22233083]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
как убить из кода процесс прослушивающий порт?
так грубо
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
16 ноя 20, 16:35    [22233085]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
ну да
как?

Сообщение было отредактировано: 16 ноя 20, 16:32
16 ноя 20, 16:37    [22233090]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
вот когда я делаю своё - мне тычат - что это не правильно

Рубена Бермудеза
это у нас системный код что ли?
16 ноя 20, 16:38    [22233091]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
PetroNotC Sharp
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
ну да
как?
kill pid
16 ноя 20, 16:39    [22233093]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
kill -TERM 12345678
16 ноя 20, 16:40    [22233095]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
pidof java даст его PID
16 ноя 20, 16:41    [22233098]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
вадя

Alexander A. Sak
Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
вот когда я делаю своё - мне тычат - что это не правильно (хороший пример с шаблоизаторами был)
а тут совет сделать своё....
н наверное придётся...


Просто в случае с шаблонизаторами, аналогом кода Рубена Бермудеза был твой код.

Кстати, у Рубена можно попробовать использовать только маппинги JSON => POJO. Там вполне знакомый Jackson в импортах мелькал. То есть тебе надо будет сделать только обработку входящих HTTP POST, в которых брать тело и десериализовывать в Рубеновские объекты. Вопрос "как мне остановить HTTP-сервер, запущенный в HTTP-сервере" сразу отпадет.
16 ноя 20, 16:48    [22233109]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST, в которых брать тело и десериализовывать в Рубеновские объекты. Вопрос "как мне остановить HTTP-сервер, запущенный в HTTP-сервере" сразу отпадет.
идея хорошая, надо обдумать
16 ноя 20, 17:07    [22233129]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
pidof java даст его PID
там у всех java один pid
тогда уж killall java
16 ноя 20, 17:09    [22233134]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
PetroNotC Sharp
pidof java даст его PID
там у всех java один pid
тогда уж killall java
это 3 строки показывают один процесс трижды.
16 ноя 20, 17:25    [22233148]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST,
в действительности всё просто оказывается
спасибо, что подтолкнул.
сервлет прекрасно справляется
17 ноя 20, 21:05    [22234176]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
просто , да не совсем...
продолжу тут , дабы все в одном месте было

посылаю так
String stringBuilder = "https://api.telegram.org/botxxx:ddddd_rrrrr/setwebhook?rl=https://vvvvv.ru:8443/yyy/page01";
System.out.println(stringBuilder);
URL url = new URL(stringBuilder);

HttpURLConnection con = (HttpURLConnection) url.openConnection();

ответ получаю. т.е. связь есть. сервлет получает данные
вопрос
как сервлете в ответ отправить json
в инете искал, находил, пробовал.
есть несколько мест для ошибки,
не правильный json(но. взял в инее рабочий)
не правильный адрес ответа - как увидеть?
не правильно отправляю

пока самое простое - как правильно отправить, желательно более подробном виде
19 ноя 20, 20:11    [22235674]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя,
Бери сниффер и изучай как отправлять. F12?
JSON нет стандарта.
Грубо тебе либа по формированию любого json нужна или их формат?
19 ноя 20, 21:37    [22235732]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Бери сниффер и изучай как отправлять. F12?
это не браузер , F12 не поможет
Wireshark тож много не даёт https

PetroNotC Sharp
JSON нет стандарта.
на этом этапе важно не содержимое json, а правильно всё сформировать для передачи json....
мест для ошибки много - надо вычислить конкретное мест
19 ноя 20, 22:44    [22235778]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4   вперед  Ctrl      все
Все форумы / Java Ответить