Доброго времени суток.Я создаю телеграм бота на java с помощью rubengulas api. И у меня никак не получается настроить webhook.
Я знаю что для вебхука существуют следующие правила,указанные в официальной документации телеграма:
*Supports IPv4, IPv6 is currently not supported for Webhooks.
*Accepts incoming POSTs from 149.154.167.197-233 on port 443,80,88 or 8443.
*Is able to handle TLS1.0+ HTTPS-traffic.
*Provides a supported, non-wildcard, verified or self-signed certificate.
*Uses a CN or SAN that matches the domain you’ve supplied on setup.
*Supplies all intermediate certificates to complete a verification chain.
У меня есть домен с верифицированным сертификатом.Сервер прослушивает 443 порт и принимает post запросы с адресов 149.154.167.197-233.
Я использую вот этот метод rubengulas api для создания Telegram api
private static TelegramBotsApi createNoSelfSignedTelegramBotsApi() throws TelegramApiException {
return new TelegramBotsApi(
"src/main/resources/server.jks",//path to KeyStore for the server
"myPassword", //Key store password for the serve
"https://example.com:443", //External url
"https://localhost:443"); //Internal url
}
я получил .jks файл с помощью следующих команд из Pem файлов действующего на сервере сертификата:
openssl pkcs12 -export -in mydomain.net.crt -inkey mydomain.key > keypair.p12
keytool -importkeystore -srckeystore keypair.p12 -destkeystore server.jks -srcstoretype pkcs12
Бота я запускал следующим образом:
ApiContextInitializer.init();
TelegramBotsApi botsApi = new TelegramBotsApi(
"src/main/resources/server.jks",
"mypassword",
"https://example.com:443",
"https://localhost:443");
BotHook webhookBot = new BotHook(options);
botsApi.registerBot(webhookBot)
Телеграм api создает http сервер гризли, который при старте бота пишет следующее:
Jul 28, 2018 3:27:59 PM org.glassfish.grizzly.http.server.NetworkListener start
INFO: Started listener bound to [localhost:443]
Jul 28, 2018 3:27:59 PM org.glassfish.grizzly.http.server.HttpServer start
INFO: [HttpServer] Started.
При самом запуске программы больше ошибок нет. А вот в логах сервера я увидел следующую ошибку
2018/07/29 15:08:43 [error] 1166#1166: *453 openat() "/var/www/www-root/data/www/mydomain.net/callback/WebhookClass failed (2: No such file or directory),
client: 149.154.167.227, server: mydomain.net request:
"POST /callback/WebhookClass HTTP/1.1", host: "mydomain.net"
Выглядит так что мой post запрос не может обработаться из-за неправильно указанного url к вебхуку. Но я не понимаю какой url нужно указать, поскольку бот собирается в jar архив ,
и класс обрабатывающий вебхук находится в нем.Пожалйста подскажите.