in libraries/botbuilder-adapters-slack/botbuilder/adapters/slack/slack_helper.py [0:0]
def payload_to_activity(payload: SlackPayload) -> Activity:
"""
Creates an activity based on the Slack event payload.
:param payload: The payload of the Slack event.
:type payload: :class:`SlackPayload`
:return: An activity containing the event data.
:rtype: :class:`botbuilder.schema.Activity`
"""
if not payload:
raise Exception("payload is required")
activity = Activity(
channel_id="slack",
conversation=ConversationAccount(id=payload.channel["id"], properties={}),
from_property=ChannelAccount(
id=payload.message.bot_id
if payload.message.bot_id
else payload.user["id"]
),
recipient=ChannelAccount(),
channel_data=payload,
text=None,
type=ActivityTypes.event,
value=payload,
)
if payload.thread_ts:
activity.conversation.properties["thread_ts"] = payload.thread_ts
if payload.actions:
action = payload.actions[0]
if action["type"] == "button":
activity.text = action["value"]
elif action["type"] == "select":
selected_option = action["selected_options"]
activity.text = selected_option["value"] if selected_option else None
elif action["type"] == "static_select":
activity.text = action["selected_options"]["value"]
if activity.text:
activity.type = ActivityTypes.message
return activity