From dad001389fe12d5e49c076914ddb6bf1c43447fb Mon Sep 17 00:00:00 2001 From: JamesChenX Date: Mon, 13 Mar 2023 17:26:17 +0800 Subject: [PATCH] Fix NPE in `im.turms.plugin.rasa.RasaResponser#notify` #1175 + Trivial code improvements --- .../java/im/turms/plugin/rasa/RasaResponser.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/turms-plugins/turms-plugin-rasa/src/main/java/im/turms/plugin/rasa/RasaResponser.java b/turms-plugins/turms-plugin-rasa/src/main/java/im/turms/plugin/rasa/RasaResponser.java index f391ab15a1..a310d8a42a 100644 --- a/turms-plugins/turms-plugin-rasa/src/main/java/im/turms/plugin/rasa/RasaResponser.java +++ b/turms-plugins/turms-plugin-rasa/src/main/java/im/turms/plugin/rasa/RasaResponser.java @@ -110,7 +110,7 @@ public Mono notify(@NotNull RequestHandlerResult result, @NotNull DeviceType requesterDevice) { // 1. Validate TurmsRequest request = result.dataForRecipients(); - if (request.getKindCase() != TurmsRequest.KindCase.CREATE_MESSAGE_REQUEST) { + if (request == null || request.getKindCase() != TurmsRequest.KindCase.CREATE_MESSAGE_REQUEST) { return Mono.just(result); } CreateMessageRequest createMessageRequest = request.getCreateMessageRequest(); @@ -122,9 +122,9 @@ public Mono notify(@NotNull RequestHandlerResult result, if (CollectionUtil.isEmpty(recipients)) { return Mono.just(result); } - Set currentChatbotUserIds = CollectionUtil + Set specifiedChatbotUserIds = CollectionUtil .intersection(recipients, chatbotUserIds); - if (currentChatbotUserIds.isEmpty()) { + if (specifiedChatbotUserIds.isEmpty()) { return Mono.just(result); } // 2. Send requests @@ -132,8 +132,8 @@ public Mono notify(@NotNull RequestHandlerResult result, long targetId = isGroupMessage ? createMessageRequest.getGroupId() : createMessageRequest.getRecipientId(); - List> sendRequests = new ArrayList<>(currentChatbotUserIds.size()); - for (Long chatbotUserId : currentChatbotUserIds) { + List> sendRequests = new ArrayList<>(specifiedChatbotUserIds.size()); + for (Long chatbotUserId : specifiedChatbotUserIds) { RasaClientInfo clientInfo = idToClientInfo.get(chatbotUserId); Mono sendRequest = clientInfo.client .sendRequest(new RasaRequest(requesterId, text)) @@ -141,6 +141,7 @@ public Mono notify(@NotNull RequestHandlerResult result, if (responses.isEmpty()) { return Mono.empty(); } + // 3. Send rasa responses to the requester String responseText = formatResponse(clientInfo.properties.getResponse(), responses); return messageService.authAndSaveAndSendMessage(true, chatbotUserId, @@ -166,8 +167,8 @@ public Mono notify(@NotNull RequestHandlerResult result, LOGGER.error("Caught an error while sending requests to Rasa servers", t); } }); - // 3. Return final handler result - Set recipientIds = CollectionUtil.remove(recipients, currentChatbotUserIds); + // 4. Return final handler result + Set recipientIds = CollectionUtil.remove(recipients, specifiedChatbotUserIds); return Mono.just(result.withRecipients(recipientIds)); }); }