Integrated the ResponderContext#sendNotFoundReply to send messages that could not be identified
This commit is contained in:
parent
f754b87b73
commit
09bdf731f2
@ -2,19 +2,26 @@ package de.gnmyt.autoresponder.http.contexts;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||||
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||||
import de.gnmyt.autoresponder.SimpleAutoResponder;
|
import de.gnmyt.autoresponder.SimpleAutoResponder;
|
||||||
import de.gnmyt.autoresponder.event.chat.ChatMessageReceivedEvent;
|
import de.gnmyt.autoresponder.event.chat.ChatMessageReceivedEvent;
|
||||||
import de.gnmyt.autoresponder.event.group.GroupMessageReceivedEvent;
|
import de.gnmyt.autoresponder.event.group.GroupMessageReceivedEvent;
|
||||||
import de.gnmyt.autoresponder.http.controller.HttpResponseController;
|
import de.gnmyt.autoresponder.http.controller.HttpResponseController;
|
||||||
import de.gnmyt.autoresponder.http.handler.SimpleHttpHandler;
|
import de.gnmyt.autoresponder.http.handler.SimpleHttpHandler;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class ResponderContext extends SimpleHttpHandler {
|
public class ResponderContext extends SimpleHttpHandler {
|
||||||
|
|
||||||
private final ObjectMapper mapper = new ObjectMapper();
|
private final ObjectMapper mapper = new ObjectMapper();
|
||||||
private final SimpleAutoResponder responder;
|
private final SimpleAutoResponder responder;
|
||||||
|
|
||||||
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor of the {@link ResponderContext}
|
* Constructor of the {@link ResponderContext}
|
||||||
|
*
|
||||||
* @param responder Your current {@link SimpleAutoResponder} instance
|
* @param responder Your current {@link SimpleAutoResponder} instance
|
||||||
*/
|
*/
|
||||||
public ResponderContext(SimpleAutoResponder responder) {
|
public ResponderContext(SimpleAutoResponder responder) {
|
||||||
@ -27,9 +34,13 @@ public class ResponderContext extends SimpleHttpHandler {
|
|||||||
|
|
||||||
JsonNode query = rootNode.get("query");
|
JsonNode query = rootNode.get("query");
|
||||||
|
|
||||||
|
CompletableFuture.runAsync(() -> {
|
||||||
triggerEvent(rootNode.get("appPackageName").asText(), rootNode.get("messengerPackageName").asText(),
|
triggerEvent(rootNode.get("appPackageName").asText(), rootNode.get("messengerPackageName").asText(),
|
||||||
query.get("sender").asText(), query.get("message").asText(), query.get("isGroup").asBoolean(),
|
query.get("sender").asText(), query.get("message").asText(), query.get("isGroup").asBoolean(),
|
||||||
query.get("groupParticipant").asText(), query.get("ruleId").asInt(), controller);
|
query.get("groupParticipant").asText(), query.get("ruleId").asInt(), controller);
|
||||||
|
|
||||||
|
if (!controller.isResponseSent()) sendNotFoundReply(query, controller);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,4 +64,21 @@ public class ResponderContext extends SimpleHttpHandler {
|
|||||||
new ChatMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender, message).call();
|
new ChatMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender, message).call();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sends the "not found"-reply
|
||||||
|
*
|
||||||
|
* @param query The query that the responder sent
|
||||||
|
* @param controller The response controller from the request
|
||||||
|
*/
|
||||||
|
public void sendNotFoundReply(JsonNode query, HttpResponseController controller) {
|
||||||
|
ObjectNode object = objectMapper.createObjectNode();
|
||||||
|
ArrayNode replies = object.withArray("replies");
|
||||||
|
|
||||||
|
responder.getNotFoundHandler().handleRequest(query.get("isGroup").asBoolean() ? query.get("groupParticipant").asText()
|
||||||
|
: query.get("sender").asText(), query.get("message").asText()).forEach(message ->
|
||||||
|
replies.add(mapper.createObjectNode().put("message", message)));
|
||||||
|
|
||||||
|
controller.text(object.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user