脚本能自动发送钉钉消息吗?

wen 实用脚本 2

本文目录导读:

脚本能自动发送钉钉消息吗?

  1. 方法一:使用钉钉群机器人(最简单,最常用)
  2. 方法二:使用钉钉开放平台API(更强大,更复杂)
  3. 方法三:使用自动化工具/低代码平台
  4. 安全与限制

是的,脚本可以自动发送钉钉消息,这通常通过钉钉官方提供的开放平台API(应用程序编程接口)或机器人功能来实现。

你可以根据具体需求选择以下几种主流方法:

使用钉钉群机器人(最简单,最常用)

这是最快捷的方式,适合发送通知、告警等场景。

  1. 创建机器人

    • 在钉钉群聊中,点击群设置 -> 智能群助手 -> 添加机器人 -> 选择“自定义”(通过Webhook接入)。
    • 填写机器人名称,完成安全设置(建议使用“加签”方式,更安全)。
    • 获取 Webhook 地址(一个URL长链接)。
  2. 编写脚本

    • 你只需要用任意编程语言(Python、JS、Shell等)向这个Webhook地址发送一个HTTP POST请求,并在请求体中包含特定格式的JSON(JavaScript对象表示法)数据即可。

    Python 示例(使用 requests 库):

    import requests
    import json
    import time
    import hmac
    import hashlib
    import base64
    import urllib.parse
    # 你的Webhook地址(不含签名部分)
    webhook_url = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
    # 如果设置了加签,需要以下代码计算签名
    timestamp = str(round(time.time() * 1000))
    secret = "YOUR_SECRET"  # 创建机器人时获取的加签秘钥
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    # 拼接最终URL
    webhook_url_with_sign = webhook_url + f"×tamp={timestamp}&sign={sign}"
    # 消息内容(支持文本、Markdown、链接等类型)
    data = {
        "msgtype": "text",
        "text": {
            "content": "这是来自脚本的自动消息:系统监控报警!"
        }
    }
    headers = {'Content-Type': 'application/json'}
    response = requests.post(webhook_url_with_sign, data=json.dumps(data), headers=headers)
    print(response.json())

    Shell 示例(使用 curl):

    #!/bin/bash
    # 如果你的机器人没有加签,直接使用
    # curl 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN' -H 'Content-Type: application/json' -d '{"msgtype":"text","text":{"content":"Shell脚本消息"}}'
    # 有加签的情况(建议使用)
    WEBHOOK_URL="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
    SECRET="YOUR_SECRET"
    TIMESTAMP=$(date +%s%3N)
    STRING_TO_SIGN="${TIMESTAMP}\n${SECRET}"
    SIGN=$(echo -n "$STRING_TO_SIGN" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64 | tr -d '\n' | xxd -plain | sed 's/\(..\)/%/g; s/%$//')
    curl "${WEBHOOK_URL}×tamp=${TIMESTAMP}&sign=${SIGN}" \
       -H 'Content-Type: application/json' \
       -d '{"msgtype":"text","text":{"content":"Shell脚本消息(含签名)"}}'

使用钉钉开放平台API(更强大,更复杂)

如果你需要发送给指定用户、创建群聊、发送工作通知、实现OA(办公自动化)审批流等高级功能,就需要使用钉钉开放平台的API,这通常需要一个企业内部应用。

  1. 创建应用:登录 钉钉开放平台,创建一个企业内部应用,获取 AppKeyAppSecret
  2. 获取权限:在应用中开通“机器人”或“消息通知”等权限。
  3. 获取Access Token:通过 AppKeyAppSecret 调用API获取 access_token
  4. 调用API发送消息:使用 access_token 调用 https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2 等接口,可以指定接收者的用户ID。

适用场景:需要精准触达特定员工,或者需要发送更复杂的消息卡片(如审批、任务卡片)。

使用自动化工具/低代码平台

如果你不想写代码,可以考虑使用:

  • Python 脚本配合定时任务(如Windows的任务计划、Linux的crontab)。
  • Zapier / Make (Integromat) 等自动化平台,它们通常有钉钉的集成模块。
  • 低代码平台(如简道云、明道云等),它们也提供了钉钉消息推送的触发器。

安全与限制

  1. 频率限制:钉钉对机器人和API的调用有频率限制(一个群机器人每分钟最多20条消息),请避免在短时间内发送大量消息。
  2. 安全设置强烈建议启用Webhook机器人的“加签”功能,防止恶意调用。
  3. 内容规范:不要发送垃圾信息或违反法律法规的内容,否则机器人可能会被禁言或封禁。
  4. IP白名单(对于企业内部应用):可以设置IP白名单,只允许特定服务器调用API。
场景 推荐方法 是否需要编程 复杂度
群内通知、监控告警 群机器人 (Webhook) 较少(简单脚本)
发给特定用户、复杂消息 开放平台 API 较多(需要OAuth2.0认证) ⭐⭐⭐
非技术人员、快速集成 Zapier等平台 无需

脚本完全可以自动发送钉钉消息,对于大多数个人使用或简单通知场景,使用群机器人Webhook是最简单、最有效的方案。

抱歉,评论功能暂时关闭!