Skip to content

Commit 4da09fb

Browse files
committed
Add metadata to respond method
1 parent 9f0602f commit 4da09fb

File tree

6 files changed

+38
-2
lines changed

6 files changed

+38
-2
lines changed

slack_bolt/context/respond/async_respond.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Optional, Union, Sequence
1+
from typing import Optional, Union, Sequence, Dict, Any
22
from ssl import SSLContext
33

44
from slack_sdk.models.attachments import Attachment
@@ -35,6 +35,7 @@ async def __call__(
3535
unfurl_links: Optional[bool] = None,
3636
unfurl_media: Optional[bool] = None,
3737
thread_ts: Optional[str] = None,
38+
metadata: Dict[str, Any] = None,
3839
) -> WebhookResponse:
3940
if self.response_url is not None:
4041
client = AsyncWebhookClient(
@@ -54,6 +55,7 @@ async def __call__(
5455
unfurl_links=unfurl_links,
5556
unfurl_media=unfurl_media,
5657
thread_ts=thread_ts,
58+
metadata=metadata,
5759
)
5860
return await client.send_dict(message)
5961
elif isinstance(text_or_whole_response, dict):

slack_bolt/context/respond/internals.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def _build_message(
1616
unfurl_links: Optional[bool] = None,
1717
unfurl_media: Optional[bool] = None,
1818
thread_ts: Optional[str] = None,
19+
metadata: Dict[str, Any] = None,
1920
) -> Dict[str, Any]:
2021
message = {"text": text}
2122
if blocks is not None and len(blocks) > 0:
@@ -34,4 +35,6 @@ def _build_message(
3435
message["unfurl_media"] = unfurl_media
3536
if thread_ts is not None:
3637
message["thread_ts"] = thread_ts
38+
if metadata is not None:
39+
message["metadata"] = metadata
3740
return message

slack_bolt/context/respond/respond.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Optional, Union, Sequence
1+
from typing import Optional, Union, Sequence, Any, Dict
22
from ssl import SSLContext
33

44
from slack_sdk.models.attachments import Attachment
@@ -35,6 +35,7 @@ def __call__(
3535
unfurl_links: Optional[bool] = None,
3636
unfurl_media: Optional[bool] = None,
3737
thread_ts: Optional[str] = None,
38+
metadata: Dict[str, Any] = None,
3839
) -> WebhookResponse:
3940
if self.response_url is not None:
4041
client = WebhookClient(
@@ -55,6 +56,7 @@ def __call__(
5556
unfurl_links=unfurl_links,
5657
unfurl_media=unfurl_media,
5758
thread_ts=thread_ts,
59+
metadata=metadata,
5860
)
5961
return client.send_dict(message)
6062
elif isinstance(text_or_whole_response, dict):

tests/slack_bolt/context/test_respond.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,13 @@ def test_unfurl_options(self):
2929
respond = Respond(response_url=response_url)
3030
response = respond(text="Hi there!", unfurl_media=True, unfurl_links=True)
3131
assert response.status_code == 200
32+
33+
def test_metadata(self):
34+
response_url = "http://localhost:8888"
35+
respond = Respond(response_url=response_url)
36+
response = respond(
37+
text="Hi there!",
38+
response_type="in_channel",
39+
metadata={"event_type": "foo", "event_payload": {"foo": "bar"}},
40+
)
41+
assert response.status_code == 200

tests/slack_bolt/context/test_respond_internals.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,11 @@ def test_build_message_unfurl_options(self):
4949
assert message is not None
5050
assert message.get("unfurl_links") is True
5151
assert message.get("unfurl_media") is True
52+
53+
def test_metadata(self):
54+
message = _build_message(
55+
text="Hi there!", response_type="in_channel", metadata={"event_type": "foo", "event_payload": {"foo": "bar"}}
56+
)
57+
assert message is not None
58+
assert message.get("metadata").get("event_type") == "foo"
59+
assert message.get("metadata").get("event_payload") == {"foo": "bar"}

tests/slack_bolt_async/context/test_async_respond.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,14 @@ async def test_respond_unfurl_options(self):
3838
respond = AsyncRespond(response_url=response_url)
3939
response = await respond(text="Hi there!", unfurl_media=True, unfurl_links=True)
4040
assert response.status_code == 200
41+
42+
@pytest.mark.asyncio
43+
async def test_metadata(self):
44+
response_url = "http://localhost:8888"
45+
respond = AsyncRespond(response_url=response_url)
46+
response = await respond(
47+
text="Hi there!",
48+
response_type="in_channel",
49+
metadata={"event_type": "foo", "event_payload": {"foo": "bar"}},
50+
)
51+
assert response.status_code == 200

0 commit comments

Comments
 (0)