釘釘運算子

先決條件任務

要使用這些運算子,您必須執行以下幾件事
  • 將自訂機器人新增至您要傳送訊息的聊天群組。

  • 取得 釘釘自訂機器人 Webhook 權杖

  • 將存取權杖放入 dingding_default 連線的密碼欄位中。 注意:您只需要權杖值,而不是整個 webhook 字串。

基本用法

使用 DingdingOperator 透過 釘釘自訂機器人 傳送訊息

tests/system/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/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/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.dev.org.tw/_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/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 請求,如果您需要變更使用的主機,您可以設定連線的主機欄位。

這個條目有幫助嗎?