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

Откуда: Екатеринбург
Сообщений: 18324
есть ли пример кода для сабжа?
гугл что-то не помог найти
27 окт 20, 12:21    [22221330]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
by-pass
Member

Откуда: Москва, Зеленоград
Сообщений: 547
тынц Правда это python

Сообщение было отредактировано: 27 окт 20, 13:19
27 окт 20, 13:21    [22221376]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
by-pass
тынц Правда это python
в этом и проблема
27 окт 20, 14:07    [22221421]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
bubucha
Member

Откуда:
Сообщений: 5636
в этом и проблема

вадя, не ссы, буть мужиком!
27 окт 20, 14:12    [22221425]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
bubucha
вадя, не ссы, буть мужиком!
лень разбираться...
а ведь с полгода назад было в первых строках поиска
27 окт 20, 14:22    [22221432]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
вадя,
у меня бот написан на вебхуке,но не могу открыть целиком ,так как проект коммерческий.
Какие конткретно тебе нужны сервисы или конфиги скажи я сюда запощу
27 окт 20, 15:32    [22221501]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
[youtube=&feature=youtu.be&ab_channel=%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B9%D0%92%D1%8F%D1%87%D0%B5%D1%81%D0%BB%D0%B0%D0%B5%D0%B2]
27 окт 20, 15:51    [22221520]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
воды много,но про вебхук есть подробно,как зарегать,как настроить и помоему ссылка на его репу там тоже имеется
27 окт 20, 15:52    [22221521]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Zzz79
Какие конткретно тебе нужны сервисы или конфиги скажи я сюда запощу
просто как его использовать, мне надо заменить поллинг .
с поллингом всё работает.
как подключить самоподписанный сертификат.
можно на почту.

Сообщение было отредактировано: 27 окт 20, 18:08
27 окт 20, 18:11    [22221622]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
вадя,

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

посмотри этот видос
27 окт 20, 18:32    [22221641]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Zzz79
посмотри этот видос
посмотрел, скачал -- фигвам.
всё устаревшее, не компилируется.
1 ноя 20, 12:05    [22224275]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
ЗЫ
я не уверен что у него проверена работа с webhook....
1 ноя 20, 12:59    [22224291]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
удалось заставить работать с webhook

но вот как теперь его остановить при андеплое вара?
13 ноя 20, 21:51    [22231744]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Zzz79
Member

Откуда:
Сообщений: 1005
вадя
удалось заставить работать с webhook

но вот как теперь его остановить при андеплое вара?

зарегай левый вебхук со своим токеном,старый будет недействителен тогда хз) если я понял что тебе нужно
13 ноя 20, 22:47    [22231771]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Zzz79
зарегай левый вебхук со своим токеном,старый будет недействителен тогда хз) если я понял что тебе нужно
не это
мне нужно на моём сервере остановить работающий webhook
13 ноя 20, 23:00    [22231783]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
при андеплое вара

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:
13 ноя 20, 23:12    [22231788]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
webhook запускает сервер grizzly-http-server-7 на 192.168.1.2:8443
как остановить этот процесс?
14 ноя 20, 20:36    [22232152]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
может у кого другой, более правильный инет, помогите найти как остановить сабж....
15 ноя 20, 15:42    [22232378]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя,
Че остановить то?
Kill process linux?
15 ноя 20, 22:05    [22232506]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
вадя,
Че остановить то?
Kill process linux?
killall java
мне нужно из кода остановить сервер grizzly-http-server-7 , когда делаю редеплой(к примеру)

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

Откуда: Екатеринбург
Сообщений: 18324
куча примеров про ботов на java, но при детальном рассмотрении - все на лонгполлинг
15 ноя 20, 22:52    [22232532]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
мне нужно из кода остановить сервер grizzly-http-server-7 , когда делаю редеплой(к примеру)
У тебя сообразилки не хватило чтобы расписать вопрос подробнее? Ты это уже писал.

вадя
все на лонгполлинг
а ты искал на сокетах?))))
16 ноя 20, 07:28    [22232581]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
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 запускается примерно так
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_());
это для варианта с использованием самоподписанных сертификатов
а вот как его остановить нигде не пишется ( не нашёл)
16 ноя 20, 10:11    [22232649]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
когда делаю остановку томкэта , он останавливается (как и положено) а вот сервер grizzly-http-server продолжает работать.
уверен что это поток а непроцесс?
Дай скрины доказательства
16 ноя 20, 10:49    [22232679]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
томкэтовского вара.
почему томкэтовский?
*.war не относятся к токэту. Это архив с файлами.
Где скачать?
Что внутри?
16 ноя 20, 10:51    [22232682]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя,
Дерево процессов
ps axf
Дай скрин
16 ноя 20, 10:54    [22232685]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
почему томкэтовский?
потому что вар работает под кошкой
PetroNotC Sharp
Где скачать?
мой сервер,
PetroNotC Sharp
Что внутри?
"обыкновенное сервлетное приложение"
плюс запуск телеграм бота в варианте webhook
16 ноя 20, 11:41    [22232721]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
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"

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"
tcp        0      0 192.168.3.88:8443       0.0.0.0:*               LISTEN      1799/java
16 ноя 20, 12:04    [22232751]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
потому что вар работает под кошкой
я тоже пишу свой вар, но не называю его кошкиным.
вадя
мой сервер,
не понял.
Отвечай на остальные вопросы
16 ноя 20, 12:05    [22232753]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
всё что связано с java
скрин нужен. Не догадался что табуляцию не видно?
16 ноя 20, 12:09    [22232761]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
И выдели интересующий процесс поток красным
16 ноя 20, 12:10    [22232763]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
конфликт между старым и новым grizzly-http-server серверами.

У меня было в Glassfish различие версий либы grizzly.
Проверь у себя и замени jar либы.
16 ноя 20, 12:21    [22232770]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
скрин нужен. Не догадался что табуляцию не видно?


К сообщению приложен файл. Размер - 72Kb
16 ноя 20, 12:28    [22232777]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя,
Теперь уточни.
- порт 8443 занят если погасить Новый чистый томкат?
16 ноя 20, 12:33    [22232783]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Теперь уточни.
- порт 8443 занят если погасить Новый чистый томкат?
8443 занят именно гризли
если убрать запуск webhook - то он будет свободен
16 ноя 20, 12:48    [22232801]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
если убрать запуск webhook - то он будет свободен
пиши запуск по шагам
16 ноя 20, 12:54    [22232805]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
есть
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);
 }

}

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();
        }

}

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

ну и обработка от клиентов
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;
    }
}
16 ноя 20, 13:05    [22232822]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
вот и все связанное с запуском
либу пропустил. Или на голом работает?
16 ноя 20, 13:15    [22232838]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Дай
lsof -i
16 ноя 20, 13:16    [22232844]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
вадя
есть
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() ?
16 ноя 20, 13:21    [22232856]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
всё что связано с java
540 ?

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

Почему сменился PID процесса
16 ноя 20, 13:26    [22232864]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
lsof -i

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
16 ноя 20, 13:34    [22232876]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Почему сменился PID процесса
разные запуски
16 ноя 20, 13:35    [22232877]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
TelegramBotsApi telegramBotsApi =  new TelegramBotsApi(

Получается весь вопрос - сделать обратное действие для new.
Если на этой строке вешается на порт что либо.
Так?
Стопить томкат это как бы радикальный метод.
16 ноя 20, 13:37    [22232878]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
А где doFilter() и destroy() ?


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

  @Override
    public void destroy() {        
    }


@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);
        }
    }
16 ноя 20, 13:41    [22232882]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
вадя
Alexander A. Sak
А где doFilter() и destroy() ?


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

  @Override
    public void destroy() {        
    }



То есть при инициализации фильтра запускаем бота, а при завершении работы фильтра бота не останавливаем.
16 ноя 20, 13:44    [22232888]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Получается весь вопрос - сделать обратное действие для new.
Если на этой строке вешается на порт что либо.
Так?
да

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

проблема в том что этот висяк мешает при деплое новой версии, процесс отладки...
приходится делать killall java
что в продакшене не камильфо
16 ноя 20, 13:46    [22232891]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
То есть при инициализации фильтра запускаем бота, а при завершении работы фильтра бота не останавливаем.

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

я пробовал много вариантов (методом научного тыка)
даже после
 );

            telegramBotsApi.registerBot(wh);

единственно что удавалось - остановить бота на стороне telegram
16 ноя 20, 13:50    [22232894]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Джавадоки хотя бы есть к этой библиотеке? Вот это оно: https://github.com/rubenlagus/TelegramBots ?
16 ноя 20, 14:20    [22232927]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Вообще все это мазохизмом каким-то отдает. Зачем какие-то гризли, либы, кони, люди? Один раз регистрируешь свой эндпойнт (https://core.telegram.org/bots/api#setwebhook) и обрабатываешь входящие запросы.
16 ноя 20, 14:30    [22232939]     Ответить | Цитировать Сообщить модератору
 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]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
и тут ещё
приходит на https://xxx.ru:8443/bon/ppp c ip telegram xx.xx.xx.xx
ф отправить надо "https://api.telegram.org/botxxx:ddddd_rrrrr/"
19 ноя 20, 22:49    [22235782]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
Wireshark тож много не даёт https
он или другие работают с таким протоколом. Кому счас легко?

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

Да. Работа программиста). А как они узнают что ты правильно сформировал у себя как не по json?
20 ноя 20, 07:21    [22235841]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
и тут ещё
приходит на https://xxx.ru:8443/bon/ppp c ip telegram xx.xx.xx.xx
ф отправить надо " (подозрительная ссылка!) https://api.telegram.org/botxxx:ddddd_rrrrr/"
ну, воспроизведи ровно то что у них.
Отправь мальчик по их адресу))))
20 ноя 20, 07:22    [22235843]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
А как они узнают что ты правильно сформировал у себя как не по json?
для начала надо самому убедиться что что-то правильно формируется - есть данные из одного слова
PetroNotC Sharp
ну, воспроизведи ровно то что у них.
Отправь мальчик по их адресу))))
вместо язвенных слов, лучше достоверный вариант привел бы.
20 ноя 20, 09:15    [22235866]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя,
Я съязвил на твой текст мол нужно отправить по другому адресу и адрес ты написал.
И....?
Где скрины сниффера?
Где демка hello world из сети?
20 ноя 20, 10:11    [22235891]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
вот есть такой код

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
в чем может быть причина?
20 ноя 20, 13:08    [22235995]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Где демка hello world из сети?
ты зарегистрируешь бота и всё прочее?
20 ноя 20, 13:10    [22235996]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
XEugene
Member

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

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.
20 ноя 20, 13:26    [22236004]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
XEugene
Причина в том, что ты стринговую переменную назвал stringBuilder.
от того как её назовёшь -что-то должно измениться?
20 ноя 20, 13:33    [22236011]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
PetroNotC Sharp
Где демка hello world из сети?
ты зарегистрируешь бота и всё прочее?
причем тут я?
Я озвучил то что 99 человек тебе не сказали и прошли мимо.
Демка это: "Ребята! Я делаю вот по этой ссылке буква в букву но у меня не работает!".
Гляньте своим взглядом 15 сек!!!
))))
20 ноя 20, 14:03    [22236034]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
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".
20 ноя 20, 14:07    [22236037]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
Я озвучил то что 99 человек тебе не сказали и прошли мимо.
Демка это: "Ребята! Я делаю вот по этой ссылке буква в букву но у меня не работает!".
Гляньте своим взглядом 15 сек!!!
Я выложил код, который работает/не работает
что бы протестировать - необходимы сделать кучу действий. как минимум зарегистрировать бота, иметь сервер с http...

оказалось - нет достаточной информации о ом что такое json для телеграмм... что есть что
20 ноя 20, 15:19    [22236085]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
Что-то я не наблюдаю ничего после "botxxxx".
вот именно, это одна из ошибок
20 ноя 20, 15:21    [22236087]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
вадя
bubucha
вадя, не ссы, буть мужиком!
лень разбираться...
а ведь с полгода назад было в первых строках поиска
я понял тебя. Примеров в сети нету. Пишешь по памяти.
20 ноя 20, 15:31    [22236096]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
PetroNotC Sharp
я понял тебя. Примеров в сети нету. Пишешь по памяти.
методы отправки есть, пробовал, но итога нет, вопрос - сам метод с ошибкой? или что-то с данными не так?
22235995 тор оказался рабочий,

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

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

Hi выводит а вот кнопку нет....
помогите разобраться с логикой этих json
20 ноя 20, 16:00    [22236119]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Читаем описание метода 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?
20 ноя 20, 18:03    [22236176]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Продолжаем. inline_keyboard - это массив массивов. То есть reply_markup должен выглядеть как-то так:
reply_markup: {
   inline_keyboard: [
      [ ... ], [ ... ], [ ... ], ...
   ]
}


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

reply_markup: {
   inline_keyboard: [
      [{text: "A"}, {text: "B"}, ...],
      [ ... ], ...
   ]
}


Disclaimer.
Я просто почитал доку.
20 ноя 20, 18:11    [22236182]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak,
я правильно понял и отформатировал?
{
  "chat_id": 555555,
  "text": "Hi",
  "reply_markup": {
    "inline_keyboard": [
      [
        {
          "text": "A"
        },
        {
          "text": "B"
        }
      ]
    ]
  }
}

Disclaimer.
Я просто проверил
не работает, telegram не понимает , выдаёт 400
20 ноя 20, 18:54    [22236189]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Выглядит как просит документация. В описании ответа 400 ничего не говорит?
Давай код. Не удивлюсь, если какие-нибудь запятые пропустил или кавычки.

И я такое начинаю тестировать через curl. После понимания уже пишу код.
20 ноя 20, 19:04    [22236190]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
Хе. А в документации еще такое есть:
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.


Сообщение было отредактировано: 20 ноя 20, 19:03
20 ноя 20, 19:06    [22236191]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak,

{
  "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
20 ноя 20, 19:18    [22236192]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
И я такое начинаю тестировать через curl.
приведи пример, я тоже хочу
20 ноя 20, 19:19    [22236195]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1128
вадя
Alexander A. Sak
И я такое начинаю тестировать через curl.
приведи пример, я тоже хочу


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


Ну вот тот код в начале страницы можно вызвать как-то так:
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"}]
   }
}'
20 ноя 20, 19:42    [22236200]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
- А вы что, и пальцы за меня загибать будете?
- Ага!
просто голова уже поехала....
20 ноя 20, 20:11    [22236216]     Ответить | Цитировать Сообщить модератору
 Re: telegram webhook  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18324
Alexander A. Sak
То есть тебе надо будет сделать только обработку входящих HTTP POST

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

Сообщение было отредактировано: вчера, 19:50
вчера, 19:55    [22239527]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3 4      [все]
Все форумы / Java Ответить