Slack API 算子

简介

Slack API 算子可以向指定的 Slack 频道发布文本消息或发送文件。

SlackAPIPostOperator

使用 SlackAPIPostOperator 向 Slack 频道发布消息。

使用算子

你可以发送简单的文本消息

tests/system/providers/slack/example_slack.py[源代码]

slack_operator_post_text = SlackAPIPostOperator(
    task_id="slack_post_text",
    channel=SLACK_CHANNEL,
    text=(
        "Apache Airflow™ is an open-source platform for developing, "
        "scheduling, and monitoring batch-oriented workflows."
    ),
)

或者你可以使用 Block Kit 创建应用布局

tests/system/providers/slack/example_slack.py[源代码]

slack_operator_post_blocks = SlackAPIPostOperator(
    task_id="slack_post_blocks",
    channel=SLACK_CHANNEL,
    blocks=[
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": (
                    "*<https://github.com/apache/airflow|Apache Airflow™>* "
                    "is an open-source platform for developing, scheduling, "
                    "and monitoring batch-oriented workflows."
                ),
            },
            "accessory": {"type": "image", "image_url": IMAGE_URL, "alt_text": "Pinwheel"},
        }
    ],
    text="Fallback message",
)

SlackAPIFileOperator

使用 SlackAPIFileOperator 向 Slack 频道发送文件。

使用算子

注意

操作员支持两种上传文件的方法,由 method_version 控制,默认情况下它使用 Slack SDK 方法 upload_files_v2,可以通过将 v1 设置为 method_version 来使用旧版 upload_files 方法,但由于它可能会影响性能、导致随机 API 错误,并且将于 2025 年 3 月 11 日停止使用,因此不建议使用此方法,此外,从 2024 年 5 月 8 日开始,新创建的应用将无法使用此 API 方法。

如果您之前使用 v1,则应检查您的应用程序是否具有适当的范围

  • files:write - 用于写入文件。

  • files:read - 用于读取文件(如果您使用 Slack SDK >= 3.23.0,则不需要)。

  • channels:read - 获取公共频道的列表,用于将频道名称转换为频道 ID。

  • groups:read - 获取私有频道的列表,用于将频道名称转换为频道 ID

  • mpim:read - API 方法 conversations.list 的其他权限

  • im:read - API 方法 conversations.list 的其他权限

您可以通过指定文件路径发送文件附件

tests/system/providers/slack/example_slack.py[源代码]

    slack_operator_file = SlackAPIFileOperator(
        task_id="slack_file_upload_1",
        channels=SLACK_CHANNEL,
        filename="/files/dags/test.txt",
        filetype="txt",
    )

或通过直接提供文件内容

tests/system/providers/slack/example_slack.py[源代码]

    slack_operator_file_content = SlackAPIFileOperator(
        task_id="slack_file_upload_2",
        channels=SLACK_CHANNEL,
        content="file content in txt",
    )

此条目是否有用?