From d0c435b9bdca005d7f2818e273e8893329617cc5 Mon Sep 17 00:00:00 2001 From: Matthew Skinner Date: Sat, 11 Sep 2021 21:34:23 +1000 Subject: [PATCH] [telegram] Fixes exceptions that stop rules/actions from finishing (#11215) * reorder channel updates. Signed-off-by: Matthew Skinner * catch exceptions. Signed-off-by: Matthew Skinner * Spotless fixed Signed-off-by: Matthew Skinner * increase timeout. Signed-off-by: Matthew Skinner * Fix NPE in action from causing issues. Signed-off-by: Matthew Skinner * fix logger. Signed-off-by: Matthew Skinner --- .../telegram/internal/TelegramHandler.java | 16 ++++++++-------- .../internal/action/TelegramActions.java | 11 ++++++++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/TelegramHandler.java b/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/TelegramHandler.java index c47df21ddce..5126d1c253a 100644 --- a/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/TelegramHandler.java +++ b/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/TelegramHandler.java @@ -156,7 +156,7 @@ public class TelegramHandler extends BaseThingHandler { } OkHttpClient.Builder prepareConnection = new OkHttpClient.Builder().connectTimeout(75, TimeUnit.SECONDS) - .readTimeout(75, TimeUnit.SECONDS); + .writeTimeout(75, TimeUnit.SECONDS).readTimeout(75, TimeUnit.SECONDS); String proxyHost = config.getProxyHost(); Integer proxyPort = config.getProxyPort(); @@ -324,20 +324,20 @@ public class TelegramHandler extends BaseThingHandler { update.callbackQuery().data()); } } - updateChannel(LASTMESSAGETEXT, lastMessageText != null ? new StringType(lastMessageText) : UnDefType.NULL); + updateChannel(CHATID, chatId != null ? new StringType(chatId.toString()) : UnDefType.NULL); + updateChannel(REPLYID, replyId != null ? new StringType(replyId) : UnDefType.NULL); updateChannel(LASTMESSAGEURL, lastMessageURL != null ? new StringType(lastMessageURL) : UnDefType.NULL); - updateChannel(LASTMESSAGEDATE, lastMessageDate != null - ? new DateTimeType( - ZonedDateTime.ofInstant(Instant.ofEpochSecond(lastMessageDate.intValue()), ZoneOffset.UTC)) - : UnDefType.NULL); updateChannel(LASTMESSAGENAME, (lastMessageFirstName != null || lastMessageLastName != null) ? new StringType((lastMessageFirstName != null ? lastMessageFirstName + " " : "") + (lastMessageLastName != null ? lastMessageLastName : "")) : UnDefType.NULL); updateChannel(LASTMESSAGEUSERNAME, lastMessageUsername != null ? new StringType(lastMessageUsername) : UnDefType.NULL); - updateChannel(CHATID, chatId != null ? new StringType(chatId.toString()) : UnDefType.NULL); - updateChannel(REPLYID, replyId != null ? new StringType(replyId) : UnDefType.NULL); + updateChannel(LASTMESSAGETEXT, lastMessageText != null ? new StringType(lastMessageText) : UnDefType.NULL); + updateChannel(LASTMESSAGEDATE, lastMessageDate != null + ? new DateTimeType( + ZonedDateTime.ofInstant(Instant.ofEpochSecond(lastMessageDate.intValue()), ZoneOffset.UTC)) + : UnDefType.NULL); } return UpdatesListener.CONFIRMED_UPDATES_ALL; } diff --git a/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/action/TelegramActions.java b/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/action/TelegramActions.java index f25c42eb8fb..e1a19e3560b 100644 --- a/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/action/TelegramActions.java +++ b/bundles/org.openhab.binding.telegram/src/main/java/org/openhab/binding/telegram/internal/action/TelegramActions.java @@ -134,6 +134,10 @@ public class TelegramActions implements ThingActions { } } Integer messageId = localHandler.removeMessageId(chatId, replyId); + if (messageId == null) { + logger.warn("messageId could not be found for chatId {} and replyId {}", chatId, replyId); + return false; + } logger.debug("remove messageId {} for chatId {} and replyId {}", messageId, chatId, replyId); EditMessageReplyMarkup editReplyMarkup = new EditMessageReplyMarkup(chatId, messageId.intValue()) @@ -239,7 +243,12 @@ public class TelegramActions implements ThingActions { logger.warn("replyId {} must not contain spaces. ReplyMarkup will be ignored.", replyId); } } - SendResponse retMessage = localHandler.execute(sendMessage); + SendResponse retMessage = null; + try { + retMessage = localHandler.execute(sendMessage); + } catch (Exception e) { + logger.warn("Exception occured whilst sending message:{}", e.getMessage()); + } if (!evaluateResponse(retMessage)) { return false; }