in libraries/botbuilder-adapters-slack/botbuilder/adapters/slack/slack_helper.py [0:0]
def activity_to_slack(activity: Activity) -> SlackMessage:
"""
Formats a BotBuilder Activity into an outgoing Slack message.
:param activity: A BotBuilder Activity object.
:type activity: :class:`botbuilder.schema.Activity`
:return: A Slack message object with {text, attachments, channel, thread ts} and any fields found in
activity.channelData.
:rtype: :class:`SlackMessage`
"""
if not activity:
raise Exception("Activity required")
# use ChannelData if available
if activity.channel_data:
message = activity.channel_data
else:
message = SlackMessage(
ts=activity.timestamp,
text=activity.text,
channel=activity.conversation.id,
)
if activity.attachments:
attachments = []
for att in activity.attachments:
if att.name == "blocks":
message.blocks = att.content
else:
new_attachment = Attachment(
author_name=att.name, thumb_url=att.thumbnail_url, text="",
)
attachments.append(new_attachment)
if attachments:
message.attachments = attachments
if (
activity.conversation.properties
and "thread_ts" in activity.conversation.properties
):
message.thread_ts = activity.conversation.properties["thread_ts"]
if message.ephemeral:
message.user = activity.recipient.id
if (
message.icon_url
or not (message.icons and message.icons.status_emoji)
or not message.username
):
message.as_user = False
return message