This is an automated email from the ASF dual-hosted git repository.

pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new cd228eea91 NIFI-14257: Adding additional scopes for ListenSlack on 
Message Events and new WritesAttribute
cd228eea91 is described below

commit cd228eea91fe0ff023ccb9060a4928858c1fd2a1
Author: Noah Cover <[email protected]>
AuthorDate: Tue Feb 11 10:57:05 2025 -0800

    NIFI-14257: Adding additional scopes for ListenSlack on Message Events and 
new WritesAttribute
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #9713.
---
 .../apache/nifi/processors/slack/ListenSlack.java  | 26 +++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git 
a/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/ListenSlack.java
 
b/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/ListenSlack.java
index 6a456ec5c3..22c905eeba 100644
--- 
a/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/ListenSlack.java
+++ 
b/nifi-extension-bundles/nifi-slack-bundle/nifi-slack-processors/src/main/java/org/apache/nifi/processors/slack/ListenSlack.java
@@ -31,11 +31,20 @@ import com.slack.api.bolt.response.Response;
 import com.slack.api.bolt.socket_mode.SocketModeApp;
 import com.slack.api.model.User;
 import com.slack.api.model.event.AppMentionEvent;
+import com.slack.api.model.event.FileChangeEvent;
+import com.slack.api.model.event.FileCreatedEvent;
+import com.slack.api.model.event.FileDeletedEvent;
+import com.slack.api.model.event.FilePublicEvent;
 import com.slack.api.model.event.FileSharedEvent;
+import com.slack.api.model.event.FileUnsharedEvent;
 import com.slack.api.model.event.MemberJoinedChannelEvent;
+import com.slack.api.model.event.MessageChangedEvent;
 import com.slack.api.model.event.MessageChannelJoinEvent;
+import com.slack.api.model.event.MessageDeletedEvent;
 import com.slack.api.model.event.MessageEvent;
 import com.slack.api.model.event.MessageFileShareEvent;
+import com.slack.api.model.event.ReactionAddedEvent;
+import com.slack.api.model.event.ReactionRemovedEvent;
 import org.apache.nifi.annotation.behavior.InputRequirement;
 import org.apache.nifi.annotation.behavior.PrimaryNodeOnly;
 import org.apache.nifi.annotation.behavior.WritesAttribute;
@@ -74,7 +83,8 @@ import java.util.regex.Pattern;
 @DefaultSettings(yieldDuration = "250 millis")
 @InputRequirement(InputRequirement.Requirement.INPUT_FORBIDDEN)
 @WritesAttributes({
-    @WritesAttribute(attribute = "mime.type", description = "Set to 
application/json, as the output will always be in JSON format")
+    @WritesAttribute(attribute = "mime.type", description = "Set to 
application/json, as the output will always be in JSON format"),
+    @WritesAttribute(attribute = "slack.event.type", description = "Set to the 
type of Slack event that occurred")
 })
 @SeeAlso({ConsumeSlack.class})
 @Tags({"slack", "real-time", "event", "message", "command", "listen", 
"receive", "social media", "team", "text", "unstructured"})
@@ -182,9 +192,21 @@ public class ListenSlack extends AbstractProcessor {
 
         // Register the event types that make sense
         if 
(context.getProperty(EVENT_TYPE).getValue().equals(RECEIVE_MESSAGE_EVENTS.getValue()))
 {
+            // Handle basic message events
             slackApp.event(MessageEvent.class, this::handleEvent);
+            slackApp.event(MessageChangedEvent.class, this::handleEvent);
+            slackApp.event(MessageDeletedEvent.class, this::handleEvent);
             slackApp.event(MessageFileShareEvent.class, this::handleEvent);
+            // Handle file events
             slackApp.event(FileSharedEvent.class, this::handleEvent);
+            slackApp.event(FileChangeEvent.class, this::handleEvent);
+            slackApp.event(FileCreatedEvent.class, this::handleEvent);
+            slackApp.event(FileDeletedEvent.class, this::handleEvent);
+            slackApp.event(FilePublicEvent.class, this::handleEvent);
+            slackApp.event(FileUnsharedEvent.class, this::handleEvent);
+            // Handle message reaction events
+            slackApp.event(ReactionAddedEvent.class, this::handleEvent);
+            slackApp.event(ReactionRemovedEvent.class, this::handleEvent);
         } else if 
(context.getProperty(EVENT_TYPE).getValue().equals(RECEIVE_MENTION_EVENTS.getValue()))
 {
             slackApp.event(AppMentionEvent.class, this::handleEvent);
             // When there's an AppMention, we'll also get a MessageEvent. We 
need to handle this event, or we'll get warnings in the logs
@@ -249,6 +271,7 @@ public class ListenSlack extends AbstractProcessor {
         }
 
         final Object messageEvent = eventWrapper.getEvent();
+        final String eventType = messageEvent.getClass().getSimpleName();
 
         FlowFile flowFile = session.create();
         try (final OutputStream out = session.write(flowFile);
@@ -281,6 +304,7 @@ public class ListenSlack extends AbstractProcessor {
         }
 
         flowFile = session.putAttribute(flowFile, 
CoreAttributes.MIME_TYPE.key(), "application/json");
+        flowFile = session.putAttribute(flowFile, "slack.event.type", 
eventType);
         session.getProvenanceReporter().receive(flowFile, 
socketModeApp.getClient().getWssUri().toString());
         session.transfer(flowFile, REL_SUCCESS);
 

Reply via email to