def activity_to_slack()

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