airflow.providers.slack.hooks.slack

FileUploadTypeDef

表示文件上传数据的结构。

SlackHook

创建一个用于调用的 Slack API 连接。

模块内容

class airflow.providers.slack.hooks.slack.FileUploadTypeDef[source]

基类: TypedDict

表示文件上传数据的结构。

变量:
  • file – 可选。需要发送的文件的路径。

  • content – 可选。文件内容。如果省略此参数,则必须提供一个文件。

  • filename – 可选。显示的文件名。

  • title – 可选。上传文件的标题。

  • alt_txt – 可选。供屏幕阅读器使用的图片描述。

  • snippet_type – 可选。正在上传的代码片段的语法类型。

file: typing_extensions.NotRequired[str | None][source]
content: typing_extensions.NotRequired[str | None][source]
filename: typing_extensions.NotRequired[str | None][source]
title: typing_extensions.NotRequired[str | None][source]
alt_txt: typing_extensions.NotRequired[str | None][source]
snippet_type: typing_extensions.NotRequired[str | None][source]
class airflow.providers.slack.hooks.slack.SlackHook(*, slack_conn_id=default_conn_name, base_url=None, timeout=None, proxy=None, retry_handlers=None, **extra_client_args)[source]

基类: airflow.hooks.base.BaseHook

创建一个用于调用的 Slack API 连接。

此类提供了围绕 slack_sdk.WebClient 的轻量级封装。

警告

此 Hook 旨在用于 Slack API 连接,可能无法与 Slack Incoming WebhookHTTP 连接正常工作。

示例
# Create hook
slack_hook = SlackHook(slack_conn_id="slack_api_default")

# Call generic API with parameters (errors are handled by hook)
#  For more details check https://api.slack.com/methods/chat.postMessage
slack_hook.call("chat.postMessage", json={"channel": "#random", "text": "Hello world!"})

# Call method from Slack SDK (you have to handle errors yourself)
#  For more details check https://slack.dev/python-slack-sdk/web/index.html#messaging
slack_hook.client.chat_postMessage(channel="#random", text="Hello world!")

未列入 slack.WebClient 构造函数其余参数中的额外参数。

参数:
  • slack_conn_id (str) – Slack 连接 ID,其密码字段中包含 Slack API 令牌。

  • timeout (int | None) – 客户端等待连接并接收 Slack 响应的最长秒数。如果未设置,将使用 WebClient 的默认值。

  • base_url (str | None) – 表示 Slack API 基础 URL 的字符串。如果未设置,将使用默认的 WebClient BASE_URL (https://www.slack.com/api/)。

  • proxy (str | None) – 用于进行 Slack API 调用的代理。

  • retry_handlers (list[slack_sdk.http_retry.RetryHandler] | None) – 用于自定义 slack_sdk.WebClient 中重试逻辑的处理程序列表。

conn_name_attr = 'slack_conn_id'[source]
default_conn_name = 'slack_api_default'[source]
conn_type = 'slack'[source]
hook_name = 'Slack API'[source]
slack_conn_id = 'slack_api_default'[source]
base_url = None[source]
timeout = None[source]
proxy = None[source]
retry_handlers = None[source]
extra_client_args[source]
property client: slack_sdk.WebClient[source]

获取底层 slack_sdk.WebClient(已缓存)。

get_conn()[source]

获取底层 slack_sdk.WebClient(已缓存)。

call(api_method, **kwargs)[source]

使用给定参数调用 Slack WebClient 的 WebClient.api_call 方法。

参数:
  • api_method (str) – 目标 Slack API 方法。例如 'chat.postMessage'。必需。

  • http_verb – HTTP 动词。可选(默认为 'POST')

  • files – 需要分块上传的文件。例如 {imageORfile: file_objectORfile_path}

  • data – 需要附加到请求体的数据。如果提供字典,将进行表单编码。可选。

  • params – 需要附加到 URL 的 URL 参数。可选。

  • json – 需要附加到请求体的 JSON 数据。可选。

返回:

服务器对 HTTP 请求的响应。可以通过类似字典的方式访问响应中的数据。如果响应包含 'next_cursor',则可以对其进行迭代以执行后续请求。

返回类型:

slack_sdk.web.slack_response.SlackResponse

send_file_v2(*, channel_id=None, file_uploads, initial_comment=None)[source]

使用 Slack SDK 客户端方法 files_upload_v2 向 Slack 频道发送一个或多个文件。

参数:
  • channel_id (str | None) – 需要发送文件到的频道 ID。如果省略此参数,文件将发送到工作区。

  • file_uploads (FileUploadTypeDef | list[FileUploadTypeDef]) – 需要上传的文件规范。

  • initial_comment (str | None) – 在指定 channel 中介绍文件的消息文本。

send_file_v1_to_v2(*, channels=None, file=None, content=None, filename=None, initial_comment=None, title=None, snippet_type=None, **kwargs)[source]

send_filesend_file_v2 方法之间平滑过渡。

参数:
  • channels (str | collections.abc.Sequence[str] | None) – 文件将被分享到的频道名称或 ID 的逗号分隔列表。如果省略此参数,文件将发送到工作区。文件将为每个频道单独上传。

  • file (str | pathlib.Path | None) – 需要发送的文件的路径。

  • content (str | None) – 文件内容。如果省略此参数,则必须提供一个文件。

  • filename (str | None) – 显示的文件名。

  • initial_comment (str | None) – 在指定 channels 中介绍文件的消息文本。

  • title (str | None) – 文件标题。

  • snippet_type (str | None) – 正在上传的内容的语法类型。

get_channel_id(channel_name)[source]

通过频道名称检索 Slack 频道 ID。

它持续迭代所有 Slack 频道(公开和私有),直到找到所需的频道名称,并缓存结果供将来使用。

参数:

channel_name (str) – 需要查找 ID 的 Slack 频道名称。

test_connection()[source]

测试 Slack API 连接。

classmethod get_connection_form_widgets()[source]

返回应为 Hook 添加以处理额外值的 Widget 字典。

classmethod get_ui_field_behaviour()[source]

返回自定义字段行为。

此条目有帮助吗?