钉钉独立类型消息推送ActionCard

钉钉设置:

1.建立一个钉钉群聊:钉钉右上角发起群聊,选择群成员,创建

2.群智能助手设置

 添加机器人:选自定义机器人,设置名称,会有一个webhook地址,这个要保密,不然会有安全问题

进行安全设置,这里选择ip地址段设置,只有允许的ip可以发钉钉消息

 配置完成。

项目目录结构:

 

依赖配置:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>dingTalk</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>com.taobao.top</groupId>
            <artifactId>taobao-sdk-java-auto</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${pom.basedir}/src/lib/taobao-sdk-java-auto-1.0.0.jar</systemPath>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
public static void main(String[] args) {
		sendActionCard();
	}
// 独立跳转ActionCard类型

	public static void sendActionCard() {
		DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=xxx");
		//参数	类型	必选	说明
		//msgtype	string	true	此消息类型为固定actionCard
		//title	string	true	首屏会话透出的展示内容
		//text	string	true	markdown格式的消息
		//btns	array	true	按钮的信息:title-按钮方案,actionURL-点击按钮触发的URL
		//btnOrientation	string	false	0-按钮竖直排列,1-按钮横向排列
		//hideAvatar	string	false	0-正常发消息者头像,1-隐藏发消息者头像
		OapiRobotSendRequest.Actioncard actionCard = new OapiRobotSendRequest.Actioncard();
		actionCard.setTitle("杭州天气");
		actionCard.setText("#### 杭州天气 @156xxxx8827\n" +
				"> 9度,西北风1级,空气良89,相对温度73%\n\n" +
				"> ![screenshot](https://gw.alicdn.com/tfs/TB1ut3xxbsrBKNjSZFpXXcXhFXa-846-786.png)\n"  +
				"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");
		// 此处默认为0
		actionCard.setBtnOrientation("0");
		// 此处默认为0
		actionCard.setHideAvatar("0");
		OapiRobotSendRequest request = new OapiRobotSendRequest();
		request.setMsgtype("actionCard");
		request.setActionCard(actionCard);
		try {
			client.execute(request);
		} catch (ApiException e) {
			e.printStackTrace();
		}
	}
<think>好的,用户想实现通过MySQL数据库触发钉钉推送卡片消息的功能。我需要分步骤思考如何解决这个问题。 首先,用户的需求是从MySQL读取数据,然后通过钉钉API发送卡片消息。这涉及到数据库操作和API调用。需要确定触发时机,比如定时任务还是数据库事件触发。MySQL本身没有直接触发外部API的功能,所以可能需要外部程序来轮询或监听数据库变化。 接下来,用户可能需要一个脚本来定期检查数据库中的数据变化。比如使用Python的schedule库设置定时任务,每隔一段时间查询MySQL,如果有新数据或符合条件的数据,就调用钉钉的API。 然后是钉钉机器人的配置。用户需要在钉钉群组中添加自定义机器人,获取Webhook地址。这个地址用于发送POST请求,数据格式需要符合钉钉的卡片消息规范。卡片消息的JSON结构可能比较复杂,需要参考钉钉的文档来构建。 另外,数据安全方面要注意,确保数据库连接信息和钉钉的Webhook地址不被泄露。可以在代码中使用环境变量来保存这些敏感信息。 还需要考虑错误处理,比如数据库连接失败或API调用失败的情况,是否有重试机制或日志记录。用户可能希望收到通知的稳定性,所以这部分需要加强。 最后,可能需要整合已有的引用内容。比如引用[2]中提到监控业务数据并发送钉钉告警,用户的需求类似,可以借鉴其中的方法。使用Python脚本定时查询MySQL,发现异常数据后触发钉钉消息,和引用[2]的做法一致。 总结步骤:配置钉钉机器人、编写查询MySQL的脚本、定时执行脚本并处理数据、构建卡片消息并发送。需要确保代码的健壮性和安全性,同时处理可能出现的异常情况。</think>要实现通过MySQL数据库触发钉钉推送卡片消息的功能,可以按照以下步骤实施: ### 一、技术实现流程 1. **配置钉钉机器人** 在钉钉群组中添加自定义机器人,获取Webhook地址(格式如:`https://oapi.dingtalk.com/robot/send?access_token=xxxxxx`) 2. **创建消息触发器** ```sql CREATE EVENT dd_notification_event ON SCHEDULE EVERY 1 MINUTE DO BEGIN -- 查询需要推送的数据 SELECT * FROM alert_table WHERE is_sent = 0 LIMIT 10; END ``` *注:MySQL事件调度器需开启(SET GLOBAL event_scheduler = ON;)* 3. **编写Python处理脚本** ```python import pymysql import requests import os from datetime import datetime def send_dingtalk_card(data): webhook_url = os.getenv('DINGTALK_WEBHOOK') headers = {'Content-Type': 'application/json'} card_msg = { "msgtype": "actionCard", "actionCard": { "title": "数据库告警通知", "text": f"**异常数据**\n时间:{datetime.now()}\n内容:{data['content']}", "btns": [{"title": "查看详情", "actionURL": "https://your_domain.com/detail"}] } } requests.post(webhook_url, json=card_msg, headers=headers) def check_alerts(): conn = pymysql.connect(host='localhost', user='user', password='pass', db='db') with conn.cursor() as cursor: cursor.execute("SELECT * FROM alert_table WHERE is_sent = 0") results = cursor.fetchall() for row in results: send_dingtalk_card(row) cursor.execute("UPDATE alert_table SET is_sent = 1 WHERE id = %s", (row[0],)) conn.commit() conn.close() if __name__ == "__main__": check_alerts() ``` ### 二、关键配置说明 1. **安全增强** - 使用环境变量存储数据库凭证和Webhook地址 - 在钉钉机器人设置中开启加签验证 - 限制数据库账号权限为SELECT/UPDATE 2. **消息模板优化** 可通过钉钉开放平台的[互动卡片搭建工具](https://open.dingtalk.com/document/orgapp-client/construct-card)设计更复杂的消息模板,支持图片、按钮组、表单等元素[^3] ### 三、部署方案 1. **定时任务配置** ```bash # 每5分钟执行一次 */5 * * * * /usr/bin/python3 /path/to/script.py >> /var/log/db_dingtalk.log 2>&1 ``` 2. **异常监控** 建议增加失败重试机制,并记录发送日志到独立表`notification_log`,可参考业务数据监控方案[^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值