钉钉操作器

前提任务

要使用此操作器,您必须执行以下操作
  • 将自定义机器人添加到您要发送消息的聊天群组。

  • 获取 钉钉自定义机器人 webhook 令牌

  • 将访问令牌放在 dingding_default 连接的密码字段中。注意:您只需要令牌值,而不需要整个 webhook 字符串。

基本用法

使用 DingdingOperator 通过 钉钉自定义机器人 发送消息

tests/system/providers/dingding/example_dingding.py[源代码]

text_msg_remind_none = DingdingOperator(
    task_id="text_msg_remind_none",
    message_type="text",
    message="Airflow dingding text message remind none",
    at_mobiles=None,
    at_all=False,
)

在消息中提醒用户

使用参数 at_mobilesat_all 在发送消息时提醒特定用户,当 at_all 设置为 True 时,at_mobiles 将被忽略

tests/system/providers/dingding/example_dingding.py[源代码]

text_msg_remind_all = DingdingOperator(
    task_id="text_msg_remind_all",
    message_type="text",
    message="Airflow dingding text message remind all users in group",
    # list of user phone/email here in the group
    # when at_all is specific will cover at_mobiles
    at_mobiles=["156XXXXXXXX", "130XXXXXXXX"],
    at_all=True,
)

发送富文本消息

DingdingOperator 可以通过 钉钉自定义机器人 发送富文本消息,包括链接、Markdown、actionCard 和 feedCard。除使用 Markdown 类型消息外,富文本消息无法提醒特定用户

tests/system/providers/dingding/example_dingding.py[源代码]

markdown_msg = DingdingOperator(
    task_id="markdown_msg",
    message_type="markdown",
    message={
        "title": "Airflow dingding markdown message",
        "text": "# Markdown message title\n"
        "content content .. \n"
        "### sub-title\n"
        "![logo](https://airflow.apache.org/_images/pin_large.png)",
    },
    at_mobiles=["156XXXXXXXX"],
    at_all=False,
)

从任务回调发送消息

DingdingHook 可以通过编写回调函数并将该函数传递给 sla_miss_callbackon_success_callbackon_failure_callbackon_retry_callback 来处理任务回调。这里我们以 on_failure_callback 为例

tests/system/providers/dingding/example_dingding.py[源代码]

def failure_callback(context):
    """
    The function that will be executed on failure.

    :param context: The context of the executed task.
    """
    message = f"The task {context['ti'].task_id} failed"
    DingdingHook(message_type="text", message=message, at_all=True).send()


如果需要,更改连接主机

DingdingOperator 操作器使用默认主机 https://oapi.dingtalk.com 发送 HTTP 请求,如果您需要更改使用的主机,可以设置连接的主机字段。

此条目有帮助吗?