diff --git a/src/main/java/de/gnmyt/autoresponder/http/contexts/ResponderContext.java b/src/main/java/de/gnmyt/autoresponder/http/contexts/ResponderContext.java
new file mode 100644
index 0000000..bca879b
--- /dev/null
+++ b/src/main/java/de/gnmyt/autoresponder/http/contexts/ResponderContext.java
@@ -0,0 +1,56 @@
+package de.gnmyt.autoresponder.http.contexts;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import de.gnmyt.autoresponder.SimpleAutoResponder;
+import de.gnmyt.autoresponder.event.chat.ChatMessageReceivedEvent;
+import de.gnmyt.autoresponder.event.group.GroupMessageReceivedEvent;
+import de.gnmyt.autoresponder.http.controller.HttpResponseController;
+import de.gnmyt.autoresponder.http.handler.SimpleHttpHandler;
+
+public class ResponderContext extends SimpleHttpHandler {
+
+ private final ObjectMapper mapper = new ObjectMapper();
+ private final SimpleAutoResponder responder;
+
+ /**
+ * Constructor of the {@link ResponderContext}
+ * @param responder Your current {@link SimpleAutoResponder} instance
+ */
+ public ResponderContext(SimpleAutoResponder responder) {
+ this.responder = responder;
+ }
+
+ @Override
+ public void execute(String body, HttpResponseController controller) throws Exception {
+ JsonNode rootNode = mapper.readTree(body);
+
+ JsonNode query = rootNode.get("query");
+
+ triggerEvent(rootNode.get("appPackageName").asText(), rootNode.get("messengerPackageName").asText(),
+ query.get("sender").asText(), query.get("message").asText(), query.get("isGroup").asBoolean(),
+ query.get("groupParticipant").asText(), query.get("ruleId").asInt(), controller);
+ }
+
+ /**
+ * Triggers the correct event
+ *
+ * @param appPackageName The package name of the responder app
+ * @param messengerPackageName The package name of your whatsapp instance
+ * @param sender The sender of the message
+ * @param message The message itself
+ * @param isGroup true
if the provided message has been sent in a group, otherwise false
+ * @param groupParticipant (Optional) The group participant
+ * @param ruleId The id of the rule that has been executed
+ * @param controller The response controller of the executed request
+ */
+ public void triggerEvent(String appPackageName, String messengerPackageName, String sender, String message, boolean isGroup,
+ String groupParticipant, int ruleId, HttpResponseController controller) {
+ if (isGroup) {
+ new GroupMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender,
+ message, groupParticipant).call();
+ } else {
+ new ChatMessageReceivedEvent(responder, appPackageName, messengerPackageName, ruleId, controller, sender, message).call();
+ }
+ }
+}