powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / telegram webhook
112 сообщений из 112, показаны все 5 страниц
telegram webhook
    #40012147
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ли пример кода для сабжа?
гугл что-то не помог найти
...
Рейтинг: 0 / 0
telegram webhook
    #40012170
Фотография by-pass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынц Правда это python
...
Рейтинг: 0 / 0
telegram webhook
    #40012196
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
by-pass
тынц Правда это python
в этом и проблема
...
Рейтинг: 0 / 0
telegram webhook
    #40012199
bubucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этом и проблема
вадя, не ссы, буть мужиком!
...
Рейтинг: 0 / 0
telegram webhook
    #40012203
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bubucha
вадя, не ссы, буть мужиком!
лень разбираться...
а ведь с полгода назад было в первых строках поиска
...
Рейтинг: 0 / 0
telegram webhook
    #40012310
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
Какие конткретно тебе нужны сервисы или конфиги скажи я сюда запощу
просто как его использовать, мне надо заменить поллинг .
с поллингом всё работает.
как подключить самоподписанный сертификат.
можно на почту.
...
Рейтинг: 0 / 0
telegram webhook
    #40013905
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
посмотри этот видос
посмотрел, скачал -- фигвам.
всё устаревшее, не компилируется.
...
Рейтинг: 0 / 0
telegram webhook
    #40013916
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ
я не уверен что у него проверена работа с webhook....
...
Рейтинг: 0 / 0
telegram webhook
    #40018128
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалось заставить работать с webhook

но вот как теперь его остановить при андеплое вара?
...
Рейтинг: 0 / 0
telegram webhook
    #40018150
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
зарегай левый вебхук со своим токеном,старый будет недействителен тогда хз) если я понял что тебе нужно
не это
мне нужно на моём сервере остановить работающий webhook
...
Рейтинг: 0 / 0
telegram webhook
    #40018155
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при андеплое вара

WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [bota] appears to have started a thread named [grizzly-http-server-7] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
...
Рейтинг: 0 / 0
telegram webhook
    #40018384
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webhook запускает сервер grizzly-http-server-7 на 192.168.1.2:8443
как остановить этот процесс?
...
Рейтинг: 0 / 0
telegram webhook
    #40018519
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может у кого другой, более правильный инет, помогите найти как остановить сабж....
...
Рейтинг: 0 / 0
telegram webhook
    #40018602
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Че остановить то?
Kill process linux?
...
Рейтинг: 0 / 0
telegram webhook
    #40018614
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
вадя,
Че остановить то?
Kill process linux?
killall java
мне нужно из кода остановить сервер grizzly-http-server-7 , когда делаю редеплой(к примеру)
...
Рейтинг: 0 / 0
telegram webhook
    #40018615
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
куча примеров про ботов на java, но при детальном рассмотрении - все на лонгполлинг
...
Рейтинг: 0 / 0
telegram webhook
    #40018648
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
мне нужно из кода остановить сервер grizzly-http-server-7 , когда делаю редеплой(к примеру)
У тебя сообразилки не хватило чтобы расписать вопрос подробнее? Ты это уже писал.

вадя
все на лонгполлинг
а ты искал на сокетах?))))
...
Рейтинг: 0 / 0
telegram webhook
    #40018681
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
а ты искал на сокетах?))))
на webhook
PetroNotC Sharp
У тебя сообразилки не хватило чтобы расписать вопрос подробнее? Ты это уже писал.
дак куда еще подробнее

webhook для телеграм бота - это сервер grizzly-http-server который запускается отдельным потоком на сервере из томкэтовского вара.
получается что работает 2 "сервера" tomcat и grizzly-http-server
они имеют межу собой связь . томкэтовский вар передаёт через grizzly-http-server сообщения на сервер telegram cсообщения и через него же сообщения от клиентов .
когда делаю остановку томкэта , он останавливается (как и положено) а вот сервер grizzly-http-server продолжает работать.
соответственно, когда деплоишь вар - возникает конфликт между старым и новым grizzly-http-server серверами.
grizzly-http-server запускается примерно так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
TelegramBotsApi telegramBotsApi = new TelegramBotsApi(
                    PATH_TO_CERTIFICATE_STORE,
                    CERTIFICATE_STORE_PASSWORD,
                    EXTERNAL_WEBHOOK_URL,
                    INTERNAL_WEBHOOK_URL,
                    PATH_TO_CERTIFICATE_PUBLIC_KEY
            );
telegramBotsApi.registerBot(new WebHook_());

это для варианта с использованием самоподписанных сертификатов
а вот как его остановить нигде не пишется ( не нашёл)
...
Рейтинг: 0 / 0
telegram webhook
    #40018699
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
когда делаю остановку томкэта , он останавливается (как и положено) а вот сервер grizzly-http-server продолжает работать.
уверен что это поток а непроцесс?
Дай скрины доказательства
...
Рейтинг: 0 / 0
telegram webhook
    #40018701
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
томкэтовского вара.
почему томкэтовский?
*.war не относятся к токэту. Это архив с файлами.
Где скачать?
Что внутри?
...
Рейтинг: 0 / 0
telegram webhook
    #40018703
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Дерево процессов
ps axf
Дай скрин
...
Рейтинг: 0 / 0
telegram webhook
    #40018720
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
почему томкэтовский?
потому что вар работает под кошкой
PetroNotC Sharp
Где скачать?
мой сервер,
PetroNotC Sharp
Что внутри?
"обыкновенное сервлетное приложение"
плюс запуск телеграм бота в варианте webhook
...
Рейтинг: 0 / 0
telegram webhook
    #40018732
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
ps axf

всё что связано с java
540 ? Sl 0:09 /usr/lib/jvm/java-14-openjdk-amd64/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

netstat -lntup | grep "java"

Код: plaintext
1.
2.
3.
tcp        0      0 127.0.0.1:8009          0.0.0.0:*               LISTEN      540/java            
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      540/java            
tcp        0      0 192.168.3.88:8443       0.0.0.0:*               LISTEN      540/java            
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN      540/java      
вот это и надо остановить
192.168.3.88:8443

после tomcat stop
1799 pts/1 Sl 0:07 /usr/lib/jvm/java-14-openjdk-amd64/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
netstat -lntup | grep "java"
Код: plaintext
tcp        0      0 192.168.3.88:8443       0.0.0.0:*               LISTEN      1799/java
...
Рейтинг: 0 / 0
telegram webhook
    #40018734
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
потому что вар работает под кошкой
я тоже пишу свой вар, но не называю его кошкиным.
вадя
мой сервер,
не понял.
Отвечай на остальные вопросы
...
Рейтинг: 0 / 0
telegram webhook
    #40018740
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
всё что связано с java
скрин нужен. Не догадался что табуляцию не видно?
...
Рейтинг: 0 / 0
telegram webhook
    #40018742
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И выдели интересующий процесс поток красным
...
Рейтинг: 0 / 0
telegram webhook
    #40018747
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
конфликт между старым и новым grizzly-http-server серверами.

У меня было в Glassfish различие версий либы grizzly.
Проверь у себя и замени jar либы.
...
Рейтинг: 0 / 0
telegram webhook
    #40018753
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
скрин нужен. Не догадался что табуляцию не видно?
...
Рейтинг: 0 / 0
telegram webhook
    #40018756
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Теперь уточни.
- порт 8443 занят если погасить Новый чистый томкат?
...
Рейтинг: 0 / 0
telegram webhook
    #40018763
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Теперь уточни.
- порт 8443 занят если погасить Новый чистый томкат?
8443 занят именно гризли
если убрать запуск webhook - то он будет свободен
...
Рейтинг: 0 / 0
telegram webhook
    #40018765
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
если убрать запуск webhook - то он будет свободен
пиши запуск по шагам
...
Рейтинг: 0 / 0
telegram webhook
    #40018777
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Filterq implements Filter{


  public void init(FilterConfig filterConfig) {        
        this.filterConfig = filterConfig;
        
        String ss=filterConfig.getServletContext().getRealPath("/")+"WEB-INF/";
   
       org.telegram.Main.main(ss);
 }

}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class Main {

 try {
            ApiContextInitializer.init();
            
            wh = new WebHook_();

           TelegramBotsApi telegramBotsApi =  new TelegramBotsApi(
                    PATH_TO_CERTIFICATE_STORE,
                    CERTIFICATE_STORE_PASSWORD,
                    "https://xxx.ru:8443",
                    "https://xxx.ru:8443",
                    PATH_TO_CERTIFICATE_PUBLIC_KEY
            );

            telegramBotsApi.registerBot(wh);
           
        } catch (TelegramApiException ex) {
            ex.printStackTrace();
        }

}


вот и все связанное с запуском

ну и обработка от клиентов
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class WebHook_ extends TelegramWebhookBot {

    @Override
    public BotApiMethod onWebhookUpdateReceived(Update update) {
        
        System.out.println("--- " + update.getMessage().getText());
       
        if (update.hasMessage() && update.getMessage().hasText()) {

            SendMessage sendMessage = new SendMessage();

            sendMessage.setChatId(update.getMessage().getChatId().toString());
            sendMessage.setText("Well, all information looks like noise until you break the code.");
            return sendMessage;
        }
        return null;
    }
}
...
Рейтинг: 0 / 0
telegram webhook
    #40018786
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вот и все связанное с запуском
либу пропустил. Или на голом работает?
...
Рейтинг: 0 / 0
telegram webhook
    #40018790
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай
lsof -i
...
Рейтинг: 0 / 0
telegram webhook
    #40018798
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
есть
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Filterq implements Filter{


  public void init(FilterConfig filterConfig) {        
        this.filterConfig = filterConfig;
        
        String ss=filterConfig.getServletContext().getRealPath("/")+"WEB-INF/";
   
       org.telegram.Main.main(ss);
 }

}




А где doFilter() и destroy() ?
...
Рейтинг: 0 / 0
telegram webhook
    #40018803
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
всё что связано с java
540 ?

вадя
после tomcat stop
1799

Почему сменился PID процесса
...
Рейтинг: 0 / 0
telegram webhook
    #40018809
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
lsof -i

Код: plaintext
1.
2.
3.
4.
5.
java      4500       root   47u  IPv4  42901      0t0  TCP *:http-alt (LISTEN)
java      4500       root   52u  IPv4  42903      0t0  TCP localhost:8009 (LISTEN)
java      4500       root   65u  IPv4  42923      0t0  TCP localhost:8005 (LISTEN)
java      4500       root  114u  IPv4  42909      0t0  TCP xxxx.ru:8443 (LISTEN)
java      4500       root  131u  IPv4  42917      0t0  TCP xxxx.ru:48172->149.154.167.220:https (ESTABLISHED)



CIDR: 149.154.164.0/22
Название провайдера: Telegram Messenger Network
...
Рейтинг: 0 / 0
telegram webhook
    #40018810
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Почему сменился PID процесса
разные запуски
...
Рейтинг: 0 / 0
telegram webhook
    #40018811
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: java
1.
TelegramBotsApi telegramBotsApi =  new TelegramBotsApi(


Получается весь вопрос - сделать обратное действие для new.
Если на этой строке вешается на порт что либо.
Так?
Стопить томкат это как бы радикальный метод.
...
Рейтинг: 0 / 0
telegram webhook
    #40018814
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
А где doFilter() и destroy() ?


там пока всё что ide вставляет автоматом - в тестовой версии те используется

Код: java
1.
2.
3.
  @Override
    public void destroy() {        
    }



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
@Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
        
        if (debug) {
            log("Filter:doFilter()");
        }
        
        doBeforeProcessing(request, response);
        
        Throwable problem = null;
        try {
            chain.doFilter(request, response);
        } catch (IOException | ServletException t) {
            // If an exception is thrown somewhere down the filter chain,
            // we still want to execute our after processing, and then
            // rethrow the problem after that.
            problem = t;
            t.printStackTrace();
        }
        
        doAfterProcessing(request, response);

        // If there was a problem, we want to rethrow it if it is
        // a known type, otherwise log it.
        if (problem != null) {
            if (problem instanceof ServletException) {
                throw (ServletException) problem;
            }
            if (problem instanceof IOException) {
                throw (IOException) problem;
            }
            sendProcessingError(problem, response);
        }
    }
...
Рейтинг: 0 / 0
telegram webhook
    #40018819
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Alexander A. Sak
А где doFilter() и destroy() ?


там пока всё что ide вставляет автоматом - в тестовой версии те используется

Код: java
1.
2.
3.
  @Override
    public void destroy() {        
    }




То есть при инициализации фильтра запускаем бота, а при завершении работы фильтра бота не останавливаем.
...
Рейтинг: 0 / 0
telegram webhook
    #40018822
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Получается весь вопрос - сделать обратное действие для new.
Если на этой строке вешается на порт что либо.
Так?
да

PetroNotC Sharp
Стопить томкат это как бы радикальный метод.
конечно,
но томкат стопится пока только для индикации , что что-то осталось висеть.

проблема в том что этот висяк мешает при деплое новой версии, процесс отладки...
приходится делать killall java
что в продакшене не камильфо
...
Рейтинг: 0 / 0
telegram webhook
    #40018823
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
То есть при инициализации фильтра запускаем бота, а при завершении работы фильтра бота не останавливаем.

в этом то и проблема как его остановить...

я пробовал много вариантов (методом научного тыка)
даже после
Код: java
1.
2.
3.
 );

            telegramBotsApi.registerBot(wh);


единственно что удавалось - остановить бота на стороне telegram
...
Рейтинг: 0 / 0
telegram webhook
    #40018841
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джавадоки хотя бы есть к этой библиотеке? Вот это оно: https://github.com/rubenlagus/TelegramBots ?
...
Рейтинг: 0 / 0
telegram webhook
    #40018847
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще все это мазохизмом каким-то отдает. Зачем какие-то гризли, либы, кони, люди? Один раз регистрируешь свой эндпойнт ( https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
...
Рейтинг: 0 / 0
telegram webhook
    #40018870
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Джавадоки хотя бы есть к этой библиотеке? Вот это оно: https://github.com/rubenlagus/TelegramBots ?
смотрел это
но там вообще нет ничего про использовании webhook с сертификатами (тем более самоподписанными)
такое впечатление что у людей наличие класса implements WebhookBot означает что они его и используют. там стоит версия 5+, а примеры с версией 4.9.+

Alexander A. Sak
Один раз регистрируешь свой эндпойнт ( https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
т.е. создавать с нуля? как бы не плохо, но еслиб это использовалось в локалке - можно было б.
но в инет светить...
...
Рейтинг: 0 / 0
telegram webhook
    #40018893
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
там стоит версия 5+, а примеры с версией 4.9.+
тебе нужно сделать любую рабочую версию. Демку.
Вопрос свелся к поиску демки.
...
Рейтинг: 0 / 0
telegram webhook
    #40018902
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Alexander A. Sak
Один раз регистрируешь свой эндпойнт ( https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
т.е. создавать с нуля? как бы не плохо, но еслиб это использовалось в локалке - можно было б.
но в инет светить...

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

Судя по коду из https://github.com/rubenlagus/TelegramBots метод registerBot() возвращает объект BotSession, у которого есть метод stop().
Вполне возможно, он делает что надо. Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.
...
Рейтинг: 0 / 0
telegram webhook
    #40018908
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Вопрос свелся к поиску демки.
уже потратил кучу времени на поиск
вот что использую это моя демка
выложить для пробы - там и сертификаты от letsencrypt , и параметры бота - мало вероятно что кто-то будет это поднимать у себя

ну вот при остановке кошки выдает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
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)
...
Рейтинг: 0 / 0
telegram webhook
    #40018917
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.
возможно, но это надо изучать все протоколы общения телеграм
...
Рейтинг: 0 / 0
telegram webhook
    #40018918
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Но я все равно считаю лишняя прослойка для общения с Телеграмом лишняя.
возможно, но это надо изучать все протоколы общения телеграм
...
Рейтинг: 0 / 0
telegram webhook
    #40018939
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://github.com/rubenlagus/TelegramBots
https://github.com/rubenlagus/TelegramBots#webhooks-vs-getupdates
отказ от ответственности
Код: plaintext
Both ways are supported, but I recommend long polling method.
...
Рейтинг: 0 / 0
telegram webhook
    #40018940
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как убить из кода процесс прослушивающий порт?
так грубо
...
Рейтинг: 0 / 0
telegram webhook
    #40018942
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты открыл тему 27 октября. За это время можно было почитать API Телеграма и разобраться с протоколом. Там обычный JSON.

Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
...
Рейтинг: 0 / 0
telegram webhook
    #40018950
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если есть кто по-способнее,
может тут разберётся https://github.com/rubenlagus/TelegramBotsExample/tree/master/src/main/java/org/telegram как остановить?
на основании этого сделан вариант
вот конкретно
переделано это
Код: java
1.
2.
3.
 private static TelegramBotsApi createSelfSignedTelegramBotsApi() throws TelegramApiException {
        return new TelegramBotsApi(BuildVars.pathToCertificateStore, BuildVars.certificateStorePassword, BuildVars.EXTERNALWEBHOOKURL, BuildVars.INTERNALWEBHOOKURL, BuildVars.pathToCertificatePublicKey);
    } 
...
Рейтинг: 0 / 0
telegram webhook
    #40018954
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Ты открыл тему 27 октября. За это время можно было почитать API Телеграма и разобраться с протоколом. Там обычный JSON.
ну не всё время этой проблемой занимался..
Alexander A. Sak
Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
вот когда я делаю своё - мне тычат - что это не правильно (хороший пример с шаблоизаторами был)
а тут совет сделать своё....
н наверное придётся...
...
Рейтинг: 0 / 0
telegram webhook
    #40018956
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как убить из кода процесс прослушивающий порт?
так грубо
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
...
Рейтинг: 0 / 0
telegram webhook
    #40018960
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
ну да
как?
...
Рейтинг: 0 / 0
telegram webhook
    #40018961
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вот когда я делаю своё - мне тычат - что это не правильно

Рубена Бермудеза
это у нас системный код что ли?
...
Рейтинг: 0 / 0
telegram webhook
    #40018963
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
у тебя выходит что это javaпроцесс сам либой открыл порт.
Нужно /можно только его.
ну да
как?
kill pid
...
Рейтинг: 0 / 0
telegram webhook
    #40018965
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kill -TERM 12345678
...
Рейтинг: 0 / 0
telegram webhook
    #40018967
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pidof java даст его PID
...
Рейтинг: 0 / 0
telegram webhook
    #40018975
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя

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


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

Кстати, у Рубена можно попробовать использовать только маппинги JSON => POJO. Там вполне знакомый Jackson в импортах мелькал. То есть тебе надо будет сделать только обработку входящих HTTP POST, в которых брать тело и десериализовывать в Рубеновские объекты. Вопрос "как мне остановить HTTP-сервер, запущенный в HTTP-сервере" сразу отпадет.
...
Рейтинг: 0 / 0
telegram webhook
    #40018986
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST, в которых брать тело и десериализовывать в Рубеновские объекты. Вопрос "как мне остановить HTTP-сервер, запущенный в HTTP-сервере" сразу отпадет.
идея хорошая, надо обдумать
...
Рейтинг: 0 / 0
telegram webhook
    #40018989
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
pidof java даст его PID
там у всех java один pid
тогда уж killall java
...
Рейтинг: 0 / 0
telegram webhook
    #40018994
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
pidof java даст его PID
там у всех java один pid
тогда уж killall java
это 3 строки показывают один процесс трижды.
...
Рейтинг: 0 / 0
telegram webhook
    #40019685
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST,
в действительности всё просто оказывается
спасибо, что подтолкнул.
сервлет прекрасно справляется
...
Рейтинг: 0 / 0
telegram webhook
    #40020585
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто , да не совсем...
продолжу тут , дабы все в одном месте было

посылаю так
Код: java
1.
2.
3.
4.
5.
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(но. взял в инее рабочий)
не правильный адрес ответа - как увидеть?
не правильно отправляю

пока самое простое - как правильно отправить, желательно более подробном виде
...
Рейтинг: 0 / 0
telegram webhook
    #40020610
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Бери сниффер и изучай как отправлять. F12?
JSON нет стандарта.
Грубо тебе либа по формированию любого json нужна или их формат?
...
Рейтинг: 0 / 0
telegram webhook
    #40020635
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Бери сниффер и изучай как отправлять. F12?
это не браузер , F12 не поможет
Wireshark тож много не даёт https

PetroNotC Sharp
JSON нет стандарта.
на этом этапе важно не содержимое json, а правильно всё сформировать для передачи json....
мест для ошибки много - надо вычислить конкретное мест
...
Рейтинг: 0 / 0
telegram webhook
    #40020637
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и тут ещё
приходит на https://xxx.ru:8443/bon/ppp c ip telegram xx.xx.xx.xx
ф отправить надо " https://api.telegram.org/botxxx:ddddd_rrrrr/"
...
Рейтинг: 0 / 0
telegram webhook
    #40020669
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Wireshark тож много не даёт https
он или другие работают с таким протоколом. Кому счас легко?

вадя
на этом этапе важно не содержимое json, а правильно всё сформировать для передачи json....
мест для ошибки много - надо вычислить конкретное мест

Да. Работа программиста). А как они узнают что ты правильно сформировал у себя как не по json?
...
Рейтинг: 0 / 0
telegram webhook
    #40020671
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
и тут ещё
приходит на https://xxx.ru:8443/bon/ppp c ip telegram xx.xx.xx.xx
ф отправить надо " (подозрительная ссылка!) https://api.telegram.org/botxxx:ddddd_rrrrr/"
ну, воспроизведи ровно то что у них.
Отправь мальчик по их адресу))))
...
Рейтинг: 0 / 0
telegram webhook
    #40020680
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А как они узнают что ты правильно сформировал у себя как не по json?
для начала надо самому убедиться что что-то правильно формируется - есть данные из одного слова
PetroNotC Sharp
ну, воспроизведи ровно то что у них.
Отправь мальчик по их адресу))))
вместо язвенных слов, лучше достоверный вариант привел бы.
...
Рейтинг: 0 / 0
telegram webhook
    #40020697
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Я съязвил на твой текст мол нужно отправить по другому адресу и адрес ты написал.
И....?
Где скрины сниффера?
Где демка hello world из сети?
...
Рейтинг: 0 / 0
telegram webhook
    #40020759
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот есть такой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
try (CloseableHttpClient client = HttpClients.createDefault()) {
            String stringBuilder = "https://api.telegram.org/botxxxxxxx";
            String str = "{\"chat_id\":"+ss+",\"text\":\"Hi\",\"reply_markup\":{\"inline_keyboard\":[{\"text\":\"A\",\"callback_data\":\"A1\"},{\"text\":\"B\",\"callback_data\":\"C1\"}]}}";
            HttpPost httpPost = new HttpPost(stringBuilder);

            StringEntity entity = new StringEntity(str);
            httpPost.setEntity(entity);
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("Accept-Charset", "UTF-8");

            CloseableHttpResponse respons = client.execute(httpPost);

            System.out.println("  respons.getStatusLine().getStatusCode()  " + respons.getStatusLine().getStatusCode());
        }


возвращает 404
в чем может быть причина?
...
Рейтинг: 0 / 0
telegram webhook
    #40020760
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Где демка hello world из сети?
ты зарегистрируешь бота и всё прочее?
...
Рейтинг: 0 / 0
telegram webhook
    #40020765
XEugene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вот есть такой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
try (CloseableHttpClient client = HttpClients.createDefault()) {
            String stringBuilder = "https://api.telegram.org/botxxxxxxx";
            String str = "{\"chat_id\":"+ss+",\"text\":\"Hi\",\"reply_markup\":{\"inline_keyboard\":[{\"text\":\"A\",\"callback_data\":\"A1\"},{\"text\":\"B\",\"callback_data\":\"C1\"}]}}";
            HttpPost httpPost = new HttpPost(stringBuilder);

            StringEntity entity = new StringEntity(str);
            httpPost.setEntity(entity);
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("Accept-Charset", "UTF-8");

            CloseableHttpResponse respons = client.execute(httpPost);

            System.out.println("  respons.getStatusLine().getStatusCode()  " + respons.getStatusLine().getStatusCode());
        }


возвращает 404
в чем может быть причина?

Причина в том, что ты стринговую переменную назвал stringBuilder.
...
Рейтинг: 0 / 0
telegram webhook
    #40020769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XEugene
Причина в том, что ты стринговую переменную назвал stringBuilder.
от того как её назовёшь -что-то должно измениться?
...
Рейтинг: 0 / 0
telegram webhook
    #40020778
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
Где демка hello world из сети?
ты зарегистрируешь бота и всё прочее?
причем тут я?
Я озвучил то что 99 человек тебе не сказали и прошли мимо.
Демка это: "Ребята! Я делаю вот по этой ссылке буква в букву но у меня не работает!".
Гляньте своим взглядом 15 сек!!!
))))
...
Рейтинг: 0 / 0
telegram webhook
    #40020781
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://core.telegram.org/bots/api#making-requests Making requests
All queries to the Telegram Bot API must be served over HTTPS and need to be presented in this form: https://api.telegram.org/bot<token>/METHOD_NAME. Like this for example:

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe

Что-то я не наблюдаю ничего после "botxxxx".
...
Рейтинг: 0 / 0
telegram webhook
    #40020801
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Я озвучил то что 99 человек тебе не сказали и прошли мимо.
Демка это: "Ребята! Я делаю вот по этой ссылке буква в букву но у меня не работает!".
Гляньте своим взглядом 15 сек!!!
Я выложил код, который работает/не работает
что бы протестировать - необходимы сделать кучу действий. как минимум зарегистрировать бота, иметь сервер с http...

оказалось - нет достаточной информации о ом что такое json для телеграмм... что есть что
...
Рейтинг: 0 / 0
telegram webhook
    #40020803
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Что-то я не наблюдаю ничего после "botxxxx".
вот именно, это одна из ошибок
...
Рейтинг: 0 / 0
telegram webhook
    #40020809
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
bubucha
вадя, не ссы, буть мужиком!
лень разбираться...
а ведь с полгода назад было в первых строках поиска
я понял тебя. Примеров в сети нету. Пишешь по памяти.
...
Рейтинг: 0 / 0
telegram webhook
    #40020826
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
я понял тебя. Примеров в сети нету. Пишешь по памяти.
методы отправки есть, пробовал, но итога нет, вопрос - сам метод с ошибкой? или что-то с данными не так?
22235995 тор оказался рабочий,

Alexander A. Sak
Что-то я не наблюдаю ничего после "botxxxx".
вот первая ошибка.
исправил.
беру метод sendMessage https://core.telegram.org/bots/api#sendmessage
для него json
Код: java
1.
"{\"chat_id\":\"" + c_id+ "\",\"text\":\"Hi\"}";


Hi telegram выводит
пытаюсь вывести кнопку
Код: java
1.
{"chat_id":555555,"text":"Hi","reply_markup":{"InlineKeyboardButton":[{"text":"A"}]}}


Hi выводит а вот кнопку нет....
помогите разобраться с логикой этих json
...
Рейтинг: 0 / 0
telegram webhook
    #40020862
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем описание метода sendMessage. Параметр reply_markup в частности.
Он должен быть одного из типов: InlineKeyboardMarkup or ReplyKeyboardMarkup or ReplyKeyboardRemove or ForceReply.
Судя по попытке вызова метода, ты пытаешься передать InlineKeyboardMarkup. Читаем что такое InlineKeyboardMarkup:

https://core.telegram.org/bots/api#inlinekeyboardmarkup This object represents an inline keyboard that appears right next to the message it belongs to.
Field inline_keyboard
Type Array of Array of InlineKeyboardButton
Description Array of button rows, each represented by an Array of InlineKeyboardButton objects

То есть ты должен передать объект с полем inline_keyboard . Откуда у тебя появилось поле InlineKeyboardButton ?
...
Рейтинг: 0 / 0
telegram webhook
    #40020866
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаем. inline_keyboard - это массив массивов. То есть reply_markup должен выглядеть как-то так:
Код: javascript
1.
2.
3.
4.
5.
reply_markup: {
   inline_keyboard: [
      [ ... ], [ ... ], [ ... ], ...
   ]
}



Теперь вопрос что там в этих многоточиях. А там уже объекты типа InlineKeyboardButton, у которых одно обязательное поле text . И опять, нигде слово "InlineKeyboardButton" не фигурирует. Указываем поля, относящиеся к этому типу. Получается что-то типа такого:

Код: javascript
1.
2.
3.
4.
5.
6.
reply_markup: {
   inline_keyboard: [
      [{text: "A"}, {text: "B"}, ...],
      [ ... ], ...
   ]
}



Disclaimer.
Я просто почитал доку.
...
Рейтинг: 0 / 0
telegram webhook
    #40020871
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
я правильно понял и отформатировал?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
{
  "chat_id": 555555,
  "text": "Hi",
  "reply_markup": {
    "inline_keyboard": [
      [
        {
          "text": "A"
        },
        {
          "text": "B"
        }
      ]
    ]
  }
}


Disclaimer.
Я просто проверил
не работает, telegram не понимает , выдаёт 400
...
Рейтинг: 0 / 0
telegram webhook
    #40020872
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выглядит как просит документация. В описании ответа 400 ничего не говорит?
Давай код. Не удивлюсь, если какие-нибудь запятые пропустил или кавычки.

И я такое начинаю тестировать через curl. После понимания уже пишу код.
...
Рейтинг: 0 / 0
telegram webhook
    #40020873
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе. А в документации еще такое есть:
https://core.telegram.org/bots/api#inlinekeyboardbutton This object represents one button of an inline keyboard. You must use exactly one of the optional fields .
...
Рейтинг: 0 / 0
telegram webhook
    #40020874
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
{
  "chat_id": 555555,
  "text": "Hi",
  "reply_markup": {
    "inline_keyboard": [
      [
        {
          "text": "A",
          "callback_data": "A1"
        },
        {
          "text": "B",
          "callback_data": "C1"
        }
      ]
    ]
  }
}

вот такое работает
You must use exactly one of the optional fields
...
Рейтинг: 0 / 0
telegram webhook
    #40020876
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
И я такое начинаю тестировать через curl.
приведи пример, я тоже хочу
...
Рейтинг: 0 / 0
telegram webhook
    #40020881
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Alexander A. Sak
И я такое начинаю тестировать через curl.
приведи пример, я тоже хочу


- А вы что, и пальцы за меня загибать будете?
- Ага!


Ну вот тот код в начале страницы можно вызвать как-то так:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
curl --location --request POST 'https://api.telegram.org/botxxxxxxx' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Accept-Charset: UTF-8' \
--data-raw '{
   "chat_id":12345,
   "text":"Hi",
   "reply_markup":{
      "inline_keyboard":[{"text":"A","callback_data":"A1"},{"text":"B","callback_data":"C1"}]
   }
}'
...
Рейтинг: 0 / 0
telegram webhook
    #40020891
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
- А вы что, и пальцы за меня загибать будете?
- Ага!
просто голова уже поехала....
...
Рейтинг: 0 / 0
telegram webhook
    #40022888
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST

Alexander A. Sak
Я бы между работой напрямую с API и библиотекой какого-то Рубена Бермудеза даже не выбирал.
хорошее предложение - время на разбирательство с либой и время с разбирательством апи равны, а возможностей больше при использовании этих апи. ну и размер вара раза в 3-4 меньше
...
Рейтинг: 0 / 0
telegram webhook
    #40024872
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

а как сделать webhook без домена? т.е. с самоподписанным сертификатом.
тут https://core.telegram.org/bots/api#setwebhook
написано. но с доменом....
...
Рейтинг: 0 / 0
telegram webhook
    #40024922
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХЗ. Деле бота давно, и даже не с хуками, а простым поллингом.

В доке есть ip_address. Разве не оно? Делаешь сертификат на IP-адрес, указываешь URL, раз он обязательный, и ip_address на всякий случай.
...
Рейтинг: 0 / 0
telegram webhook
    #40024923
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Alexander A. Sak,

а как сделать webhook без домена? т.е. с самоподписанным сертификатом.
тут https://core.telegram.org/bots/api#setwebhook
написано. но с доменом....
в смысле?
Я так понял что ты им отправляешь
setВотВамМойАдрес(myhost.ru/987654321)
Они пришлют тебе привет туда.
Верно?
...
Рейтинг: 0 / 0
telegram webhook
    #40024927
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
в смысле?
Я так понял что ты им отправляешь
setВотВамМойАдрес(myhost.ru/987654321)
Они пришлют тебе привет туда.
Верно?
это всё не то
Alexander A. Sak
доке есть ip_address. Разве не оно? Делаешь сертификат на IP-адрес, указываешь URL, раз он обязательный, и ip_address на всякий случай.
вопрос в том, что какой url указывать? если его нет.

Код: plaintext
The fixed IP address which will be used to send webhook requests instead of the IP address resolved through DNS
указать вообще левый типа xxx.fff ?
...
Рейтинг: 0 / 0
telegram webhook
    #40024932
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю
я должен отправить
левый url https://xx.xx:8443
реальный ip_address
самоподписанный сертификат ccc.pem
на эту отправку он мне отвечает
Код: plaintext
 {"ok":true,"result":true,"description":"Webhook was set"} 

т.е. телега приняла
теперь она должна запросить сам сертификат? как файл.
...
Рейтинг: 0 / 0
telegram webhook
    #40024934
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дальше проверяю getWebhookInfo

получаю
Код: plaintext
{"ok":true,"result":{"url":" https://xx.xx:8443/test/pagebot","has_custom_certificate":false,"pending_update_count":0,"last_error_date":1607191491,"last_error_message":"SSL  error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}","max_connections":40,"ip_address":"........."}}

он пытается получить сертификат?
...
Рейтинг: 0 / 0
telegram webhook
    #40024943
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда сертификат создавал, какой-то домен же указывал? Вот этот домен при регистрации и указывать.
Я бы сделал сертификат на IP-адрес, и при регистрации хука указывал бы URL в виде IP-адреса.

вадят.е. телега приняла
теперь она должна запросить сам сертификат? как файл.
Ты уже должен был отдать сертификат при регистрации вебхука. Никакого сертификата отдельно запрашивать не должно. Это я так пытаюсь логически рассуждать.
Сертификат как отдаешь? Там какие-то замечания насчет того, как его отдавать.

Ну и наверное HTTPS на твоей стороне должен быть с этим сертификатом. Иначе становится не понятно зачем вся эта байда.
...
Рейтинг: 0 / 0
telegram webhook
    #40024960
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Ты уже должен был отдать сертификат при регистрации вебхука. Никакого сертификата отдельно запрашивать не должно. Это я так пытаюсь логически рассуждать.
Сертификат как отдаешь? Там какие-то замечания насчет того, как его отдавать.

Ну и наверное HTTPS на твоей стороне должен быть с этим сертификатом. Иначе становится не понятно зачем вся эта байда.
всё так , вот только не могу понять, что не так....
вот нашёл
Код: plaintext
если генерировать сертификат openssl'ем, то при указании названия организации указываем IP адрес и тогда все ок

но только
Код: plaintext
routines:SSL_CTX_check_private_key:no certificate assigned
openssl одного не достаточно...
типа этого https://coderoad.ru/33932007/Telegram-бота-API-веб-перехватчиков-самоподписанный-сертификат
...
Рейтинг: 0 / 0
telegram webhook
    #40025064
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделал сертификаты как написано
https://core.telegram.org/bots/self-signed#openssl
https://core.telegram.org/bots/self-signed#java-keystore
открываю страницу в мозиле (ругается что-то сертификат левый) -но сертификат просматривает

но вот телеграм ругается
Код: plaintext
"SSL error {error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed}"

что ему надо?
...
Рейтинг: 0 / 0
telegram webhook
    #40025079
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как такое
curl -F "url=https://xxx.xxx.xxx.xxx:8443/test/pagebot" -F "certificate=@xcv.pem" " https://api.telegram.org/botTOKEN/setwebhook"

заменить эквивалентом на java
ключ -F Данный параметр позволяет curl эмулировать заполненной формы, в которой пользователь нажал кнопку "отправить". Программа вызывает метод POST, используя Content-Type multipart/form-data в соответствии с RFC 2388, что дает возможность в том чисел и загрузить бинарные файлы.
Для принудительного использования части содержимого из файла перед именем файла используйте префикс '@'. Для загрузки поля из файла нужно использовать префикс '<'. Отличие '@' от '<' в том, что '@' делает присоединение файла (attachment), а '<' берет содержимое файла и вставляет его в поле.
...
Рейтинг: 0 / 0
telegram webhook
    #40025096
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это
curl -F "url=https://xxx.xxx.xxx.xxx:8443/test/pagebot" -F "certificate=@xcv.pem" " https://api.telegram.org/botTOKEN/setwebhook"
работает в консоли (т.е с сертификатами разобрался)

пытаюсь сделать в коде

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            String[] commands =  new String[] {"curl", "-X", "POST", "-F", "\"url=https://xxx.xxx.xxx.xxx:8443/test/pagebot\"", "-F", "\"certificate=@xcv.pem\"", "\"https://api.telegram.org/botTOKEN/setwebhook\""};
            System.out.println(Arrays.toString(commands));
            Process process = Runtime.getRuntime().exec(commands);
            System.out.println( process.info().toString());
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }


отрабатывает, и даже выводит process.info().toString()...
но response - пустой, т.е. что и куда - вопрос открытый...
...
Рейтинг: 0 / 0
telegram webhook
    #40025103
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши шелловый скрипт для регистрации бота и не насилуй джаву.
...
Рейтинг: 0 / 0
telegram webhook
    #40025107
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak
Напиши шелловый скрипт для регистрации бота и не насилуй джаву.
это будет велосипед с квадратными колёсами
а это и так шеллл
Runtime.getRuntime().exec(commands);

отрабатывает вроде
Код: plaintext
[user: Optional[root], cmd: /usr/bin/curl, args: [-X, POST, -F "url=https://xx.xx.xx.xx:8443/test/pagebot", -F "certificate=/etc/apache2/ssl/@xcv.pem", " https://api.telegram.org/botNOKEN/setwebhook%22%5D]https://api.telegram.org/botNOKEN/setwebhook"],  startTime: Optional[2020-12-06T20:26:27.560Z], totalTime: Optional[PT0S]]
...
Рейтинг: 0 / 0
telegram webhook
    #40025120
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под 10 окнами
curl из java отправляет и получает ответ (в отличии от debean)
при проверке
Код: plaintext
"SSL error {error:14095044:SSL routines:ssl3_read_n:internal error}"
...
Рейтинг: 0 / 0
telegram webhook
    #40025162
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такое работает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            String[] commands =  new String[] {"curl",  "-F", "url=https://xx.xx.xx.xx:8443/test/pagebot", "-F", "certificate=@/etc/apache2/ssl/xcv.pem", "-F" ,"ip_address=xx.xx.xx.xx", "https://api.telegram.org/botTOKEN/setwebhook"};
            Process process = Runtime.getRuntime().exec(commands);
            System.out.println(process.info().toString());
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            StringBuilder response = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
            System.out.println(response.toString());


надо обратить внимание на кавычки и @

и в сертификате надо прописать в параметре CN=xx.xx.xx.xx
...
Рейтинг: 0 / 0
telegram webhook
    #40025207
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя curl есть, по умолчанию, и в окнах , хочется решения и на чистой java.
к сожалению я не нашел...
такого что б понятно было ...
...
Рейтинг: 0 / 0
telegram webhook
    #40025278
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
try {
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpPost uploadFile = new HttpPost("https://api.telegram.org/botTOKEN/setwebhook");
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addTextBody("url", "https://xx.xx.xx.xx:8443/test/pagebot", ContentType.TEXT_PLAIN);
            builder.addTextBody("ip_address", "xx.xx.xx.xx", ContentType.TEXT_PLAIN);

// This attaches the file to the POST:
            File f = new File(ph+"config/xcv.pem");
            builder.addBinaryBody("certificate", new FileInputStream(f), ContentType.APPLICATION_OCTET_STREAM, f.getName());
            HttpEntity multipart = builder.build();
            uploadFile.setEntity(multipart);
            CloseableHttpResponse response = httpClient.execute(uploadFile);
            HttpEntity responseEntity = response.getEntity();

            int ch;
            StringBuilder sb = new StringBuilder();
            while ((ch = responseEntity.getContent().read()) != -1) {
                sb.append((char) ch);
            }
            System.out.println(sb.toString());
        } catch (FileNotFoundException ex) {
            Logger.getLogger(sendFile.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(sendFile.class.getName()).log(Level.SEVERE, null, ex);
        }


для работы с telegram подойдёт
...
Рейтинг: 0 / 0
112 сообщений из 112, показаны все 5 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / telegram webhook
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]