Skip to content

Commit 096b344

Browse files
authored
Fix a bug where parsing assistant thread message event fails for beta feature enabled apps (#1389)
1 parent de2b9e2 commit 096b344

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

bolt/src/main/java/com/slack/api/bolt/middleware/builtin/Assistant.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
import com.slack.api.bolt.service.AssistantThreadContextService;
1313
import com.slack.api.bolt.service.builtin.DefaultAssistantThreadContextService;
1414
import com.slack.api.model.assistant.AssistantThreadContext;
15-
import com.slack.api.model.event.*;
15+
import com.slack.api.model.event.AssistantThreadContextChangedEvent;
16+
import com.slack.api.model.event.AssistantThreadStartedEvent;
17+
import com.slack.api.model.event.MessageEvent;
18+
import com.slack.api.model.event.MessageFileShareEvent;
1619
import com.slack.api.util.thread.DaemonThreadExecutorServiceProvider;
1720
import lombok.Getter;
1821
import lombok.Setter;

bolt/src/main/java/com/slack/api/bolt/request/builtin/EventRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public EventRequest(
111111
this.getContext().setChannelId(event.get("channel_id").getAsString());
112112
}
113113
// assistant thread events
114-
if (event.get("assistant_thread") != null) {
114+
if (EventsApiPayloadParser.isAssistantThreadStartedOrContextChangedEvent(event)) {
115115
this.getContext().setAssistantThreadEvent(true);
116116
// assistant_thread_started, assistant_thread_context_changed events
117117
JsonObject thread = event.get("assistant_thread").getAsJsonObject();

bolt/src/main/java/com/slack/api/bolt/util/EventsApiPayloadParser.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ public static final <E extends Event> Class<E> getEventClass(String eventType) {
7171
return null;
7272
}
7373

74+
public static boolean isAssistantThreadStartedOrContextChangedEvent(JsonObject event) {
75+
return event.get("assistant_thread") != null
76+
&& event.get("assistant_thread").getAsJsonObject().get("channel_id") != null
77+
&& event.get("assistant_thread").getAsJsonObject().get("thread_ts") != null;
78+
}
79+
7480
public static boolean isMessageEventInAssistantThread(JsonObject event) {
7581
if (event.get("channel_type") != null && event.get("channel_type").getAsString().equals("im")) {
7682
if (event.get("thread_ts") != null) return true;

bolt/src/test/java/test_locally/app/EventAssistantTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,28 @@ public void test() throws Exception {
119119
response = app.run(new EventRequest(userMessage, new RequestHeaders(rawHeaders)));
120120
assertEquals(200L, response.getStatusCode().longValue());
121121

122+
String userMessageWithAssistantThread = buildPayload("{\n" +
123+
" \"user\": \"W222\",\n" +
124+
" \"type\": \"message\",\n" +
125+
" \"ts\": \"1726133700.887259\",\n" +
126+
" \"text\": \"When Slack was released?\",\n" +
127+
" \"team\": \"T111\",\n" +
128+
" \"user_team\": \"T111\",\n" +
129+
" \"source_team\": \"T222\",\n" +
130+
" \"user_profile\": {},\n" +
131+
" \"thread_ts\": \"1726133698.626339\",\n" +
132+
" \"parent_user_id\": \"W222\",\n" +
133+
" \"channel\": \"D111\",\n" +
134+
" \"event_ts\": \"1726133700.887259\",\n" +
135+
" \"assistant_thread\": {\"XXX\": \"YYY\"},\n" +
136+
" \"channel_type\": \"im\"\n" +
137+
"}");
138+
rawHeaders = new HashMap<>();
139+
timestamp = String.valueOf(System.currentTimeMillis() / 1000);
140+
setRequestHeaders(userMessageWithAssistantThread, rawHeaders, timestamp);
141+
response = app.run(new EventRequest(userMessageWithAssistantThread, new RequestHeaders(rawHeaders)));
142+
assertEquals(200L, response.getStatusCode().longValue());
143+
122144
String assistantMessageChanged = buildPayload("{\n" +
123145
" \"type\": \"message\",\n" +
124146
" \"subtype\": \"message_changed\",\n" +

0 commit comments

Comments
 (0)