Skip to content

Commit 40e765d

Browse files
authored
Fix #968 Message metadata support (#980)
1 parent 2beb278 commit 40e765d

File tree

42 files changed

+544343
-24720
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+544343
-24720
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package samples;
2+
3+
import com.slack.api.bolt.App;
4+
import com.slack.api.bolt.AppConfig;
5+
import com.slack.api.methods.MethodsClient;
6+
import com.slack.api.methods.response.chat.ChatPostMessageResponse;
7+
import com.slack.api.model.Message;
8+
import com.slack.api.model.event.*;
9+
import lombok.extern.slf4j.Slf4j;
10+
import util.ResourceLoader;
11+
import util.TestSlackAppServer;
12+
13+
import java.util.HashMap;
14+
import java.util.Map;
15+
16+
@Slf4j
17+
public class MessageMetadataSample {
18+
/*
19+
settings:
20+
event_subscriptions:
21+
request_url: https://{your domain}/slack/events
22+
bot_events:
23+
- message_metadata_deleted
24+
- message_metadata_posted
25+
- message_metadata_updated
26+
metadata_subscriptions:
27+
- app_id: "*"
28+
event_type: java-sdk-test-example
29+
*/
30+
31+
public static void main(String[] args) throws Exception {
32+
AppConfig config = ResourceLoader.loadAppConfig();
33+
App app = new App(config);
34+
35+
app.event(MessageMetadataPostedEvent.class, (event, ctx) -> {
36+
ctx.logger.info("MessageMetadataPostedEvent - {}", event);
37+
return ctx.ack();
38+
});
39+
app.event(MessageMetadataUpdatedEvent.class, (event, ctx) -> {
40+
ctx.logger.info("MessageMetadataUpdatedEvent - {}", event);
41+
return ctx.ack();
42+
});
43+
app.event(MessageMetadataDeletedEvent.class, (event, ctx) -> {
44+
ctx.logger.info("MessageMetadataDeletedEvent - {}", event);
45+
return ctx.ack();
46+
});
47+
48+
app.event(AppHomeOpenedEvent.class, (event, ctx) -> ctx.ack());
49+
app.event(AppMentionEvent.class, (event, ctx) -> ctx.ack());
50+
app.event(MessageEvent.class, (event, ctx) -> ctx.ack());
51+
app.event(MessageChangedEvent.class, (event, ctx) -> ctx.ack());
52+
app.event(MessageDeletedEvent.class, (event, ctx) -> ctx.ack());
53+
54+
app.executorService().submit(() -> {
55+
Map<String, Object> metadataPayload = new HashMap<>();
56+
metadataPayload.put("state", "initial");
57+
try {
58+
Thread.sleep(5000L);
59+
MethodsClient client = app.client();
60+
ChatPostMessageResponse newMessage = client.chatPostMessage(r -> r
61+
.channel("#random")
62+
.text("message with metadata")
63+
.metadata(Message.Metadata.builder()
64+
.eventType("java-sdk-test-example")
65+
.eventPayload(metadataPayload)
66+
.build())
67+
);
68+
69+
Thread.sleep(3000L);
70+
metadataPayload.put("state", "modified");
71+
client.chatUpdate(r -> r
72+
.channel(newMessage.getChannel())
73+
.ts(newMessage.getTs())
74+
.text("message with metadata (modified)")
75+
.metadata(Message.Metadata.builder()
76+
.eventType("java-sdk-test-example")
77+
.eventPayload(metadataPayload)
78+
.build())
79+
);
80+
81+
Thread.sleep(3000L);
82+
client.chatDelete(r -> r.channel(newMessage.getChannel()).ts(newMessage.getTs()));
83+
84+
} catch (Exception e) {
85+
log.error("Failed", e);
86+
}
87+
});
88+
89+
TestSlackAppServer server = new TestSlackAppServer(app);
90+
server.start();
91+
}
92+
93+
}

json-logs/samples/api/chat.postMessage.json

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,12 @@
6565
"type": "",
6666
"image_url": "https://www.example.com/",
6767
"alt_text": "",
68-
"action_id": "",
69-
"initial_time": "",
70-
"placeholder": {
71-
"type": "",
72-
"text": "",
73-
"emoji": false
74-
},
7568
"text": {
7669
"type": "",
7770
"text": "",
7871
"emoji": false
7972
},
73+
"action_id": "",
8074
"url": "",
8175
"value": "",
8276
"style": "",
@@ -151,6 +145,11 @@
151145
},
152146
"url": ""
153147
},
148+
"placeholder": {
149+
"type": "",
150+
"text": "",
151+
"emoji": false
152+
},
154153
"initial_channel": "",
155154
"response_url_enabled": false,
156155
"initial_channels": [
@@ -170,6 +169,7 @@
170169
""
171170
],
172171
"initial_date": "",
172+
"initial_time": "",
173173
"min_query_length": 12345,
174174
"fallback": "",
175175
"image_width": 12345,
@@ -215,8 +215,8 @@
215215
"emoji": false
216216
},
217217
"value": "",
218-
"verbatim": false,
219218
"emoji": false,
219+
"verbatim": false,
220220
"url": "",
221221
"style": "",
222222
"confirm": {
@@ -528,10 +528,10 @@
528528
"date_start": 12345,
529529
"active_participants": [
530530
{
531-
"slack_id": "U00000000",
532531
"external_id": "",
533532
"avatar_url": "https://www.example.com/",
534-
"display_name": ""
533+
"display_name": "",
534+
"slack_id": "U00000000"
535535
},
536536
{
537537
"slack_id": "",
@@ -542,10 +542,10 @@
542542
],
543543
"all_participants": [
544544
{
545-
"slack_id": "U00000000",
546545
"external_id": "",
547546
"avatar_url": "https://www.example.com/",
548-
"display_name": ""
547+
"display_name": "",
548+
"slack_id": "U00000000"
549549
},
550550
{
551551
"slack_id": "",
@@ -9259,18 +9259,22 @@
92599259
"thumb_64": false,
92609260
"thumb_80": false,
92619261
"thumb_160": false,
9262-
"original_w": 12345,
9263-
"original_h": 12345,
9264-
"thumb_360_w": 12345,
9265-
"thumb_360_h": 12345,
9262+
"original_w": 123,
9263+
"original_h": 123,
9264+
"thumb_360_w": 123,
9265+
"thumb_360_h": 123,
92669266
"format": "",
92679267
"extension": "",
9268-
"rotation": 12345,
9268+
"rotation": 123,
92699269
"thumb_tiny": ""
92709270
}
92719271
}
92729272
],
9273-
"app_id": "A00000000"
9273+
"app_id": "A00000000",
9274+
"metadata": {
9275+
"event_payload": {},
9276+
"event_type": ""
9277+
}
92749278
},
92759279
"error": "",
92769280
"deprecated_argument": "",

0 commit comments

Comments
 (0)