diff --git a/json-logs/samples/events/LinkSharedPayload.json b/json-logs/samples/events/LinkSharedPayload.json index 9643c2e1f..9209d4493 100644 --- a/json-logs/samples/events/LinkSharedPayload.json +++ b/json-logs/samples/events/LinkSharedPayload.json @@ -27,6 +27,8 @@ } ], "is_bot_user_member": false, + "unfurl_id": "", + "source": "", "event_ts": "" } } \ No newline at end of file diff --git a/json-logs/samples/rtm/LinkSharedEvent.json b/json-logs/samples/rtm/LinkSharedEvent.json index c4d6d118c..00d53f38c 100644 --- a/json-logs/samples/rtm/LinkSharedEvent.json +++ b/json-logs/samples/rtm/LinkSharedEvent.json @@ -11,5 +11,7 @@ } ], "is_bot_user_member": false, + "unfurl_id": "", + "source": "", "event_ts": "" } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java index 4f8b72b37..dea6037b3 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java @@ -1198,6 +1198,7 @@ public static FormBody.Builder toForm(ChatUnfurlRequest req) { setIfNotNull("user_auth_message", req.getUserAuthMessage(), form); setIfNotNull("user_auth_blocks", req.getUserAuthBlocks(), form); setIfNotNull("user_auth_url", req.getUserAuthUrl(), form); + setIfNotNull("unfurl_id", req.getUnfurlId(), form); return form; } diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/chat/ChatUnfurlRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/chat/ChatUnfurlRequest.java index 40aefd849..b887cf044 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/chat/ChatUnfurlRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/chat/ChatUnfurlRequest.java @@ -62,6 +62,8 @@ public class ChatUnfurlRequest implements SlackApiRequest { */ private String channel; + // https://api.slack.com/changelog/2021-08-changes-to-unfurls + private String unfurlId; // https://api.slack.com/docs/message-link-unfurling#unfurls_parameter @Data diff --git a/slack-api-model/src/main/java/com/slack/api/model/event/LinkSharedEvent.java b/slack-api-model/src/main/java/com/slack/api/model/event/LinkSharedEvent.java index 0966516e3..aa6fc34c8 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/event/LinkSharedEvent.java +++ b/slack-api-model/src/main/java/com/slack/api/model/event/LinkSharedEvent.java @@ -16,13 +16,19 @@ public class LinkSharedEvent implements Event { public static final String TYPE_NAME = "link_shared"; private final String type = TYPE_NAME; - private String channel; + private String channel; // This can be "COMPOSER" private String user; private String messageTs; private String threadTs; private List links; @SerializedName("is_bot_user_member") private boolean botUserMember; + + // https://api.slack.com/changelog/2021-08-changes-to-unfurls + private String unfurlId; + // https://api.slack.com/changelog/2021-08-changes-to-unfurls + private String source; // "composer" / "conversations_history" + private String eventTs; @Data diff --git a/slack-api-model/src/test/java/test_locally/api/model/event/LinkSharedEventTest.java b/slack-api-model/src/test/java/test_locally/api/model/event/LinkSharedEventTest.java index 73b03f1ac..ae4746539 100644 --- a/slack-api-model/src/test/java/test_locally/api/model/event/LinkSharedEventTest.java +++ b/slack-api-model/src/test/java/test_locally/api/model/event/LinkSharedEventTest.java @@ -56,4 +56,34 @@ public void serialize() { assertThat(generatedJson, is(expectedJson)); } + @Test + public void newUnfurls_2021_08() { + // https://api.slack.com/changelog/2021-08-changes-to-unfurls + String json = "{\n" + + " \"type\": \"link_shared\",\n" + + " \"channel\": \"COMPOSER\",\n" + + " \"is_bot_user_member\": true,\n" + + " \"user\": \"Uxxxxxxx\",\n" + + " \"message_ts\": \"Uxxxxxxx-909b5454-75f8-4ac4-b325-1b40e230bbd8-gryl3kb80b3wm49ihzoo35fyqoq08n2y\",\n" + + " \"unfurl_id\": \"Uxxxxxxx-909b5454-75f8-4ac4-b325-1b40e230bbd8-gryl3kb80b3wm49ihzoo35fyqoq08n2y\",\n" + + " \"source\": \"composer\",\n" + + " \"links\": [\n" + + " {\n" + + " \"domain\": \"example.com\",\n" + + " \"url\": \"https://example.com/12345\"\n" + + " },\n" + + " {\n" + + " \"domain\": \"example.com\",\n" + + " \"url\": \"https://example.com/67890\"\n" + + " },\n" + + " {\n" + + " \"domain\": \"another-example.com\",\n" + + " \"url\": \"https://yet.another-example.com/v/abcde\"\n" + + " }\n" + + " ]\n" + + "}\n"; + LinkSharedEvent event = GsonFactory.createSnakeCase().fromJson(json, LinkSharedEvent.class); + assertThat(event.getType(), is("link_shared")); + } + }