详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户
文章目录
- 前言
- 准备工作
- 1、在钉钉开发者后台创建一个钉钉企业内部应用;
- 2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;
- 3、了解AI助理主动发送消息API:
- 4、应用中配置好所需权限:
- 4.1、权限点
- 4.2、配置方式
- 5、配置消息卡片
- 5.1、新建卡片
- 6、应用中新建AI助理
- 接口调用流程
- Maven依赖
- 封装一个工具类
- 查询用户信息
- 查看响应参数
- 调用代码示例:
- 调用AI助理发送消息API
- postman调用:
- 效果:
前言
本文针对现在钉钉提供的AI助理能力,带你学会如何调用钉钉的AI助理主动发送消息API去发送一个自己配置的钉钉消息卡片给指定钉钉用户,可以设想一下,实现了后台对接钉钉AI助理的能力,那对于你公司的行政来说,就可以实现更多更灵活的工作场景,比如定时给某些员工发送指定的钉钉消息卡片。AI助理API调用场景的文章CSDN目前鲜有介绍,看完本文读者会明白钉钉的AI助理怎么对接。
准备工作
1、在钉钉开发者后台创建一个钉钉企业内部应用;

2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;
3、了解AI助理主动发送消息API:
文档地址:AI 助理预备发消息(主动发送模式)

4、应用中配置好所需权限:
4.1、权限点
智能交互卡片写权限;
4.2、配置方式
在应用管理的权限中搜索添加:

5、配置消息卡片
钉钉的消息卡片模板可以配置更丰富的组件和更个性化的布局,所以实际场景中,一般发送使用消息卡片承载消息内容,先带大家把消息卡片配好。
5.1、新建卡片
我们登录开发者后台后从“开放能力”导航栏进入“卡片平台”,并且点击新建模板:

填写模板创建信息:包括模板名称、卡片类型(这里以普通的消息卡片举例)、模板场景(以普通卡片举例)、关联应用(你创建的企业内部应用,创建后就能选到):

信息填好后点创建我们就进入了模板编辑页面,我们可以从左边选择与拖拽自己想要的组件到卡片模板里,比如按钮、文本栏、甚至表格等复杂组件,像按钮这些组件还支持配置点击事件与跳转链接:

我带大家配置一个包含卡片头、文本栏、点击按钮的简单卡片,首先从左边拖一个卡片头过来,并设置卡片头展示的内容:

再拖一个文本栏过来放消息介绍描述:

最后放置个按钮在最下面,并且属性中填写按钮文案,事件中配置点击后跳转的流程链接(比如审批流程):

配置完成点右上角保存即可使用(注意,调试期间不要点发布,点发布后模板不可编辑),然后在模板列表查看自己新建的模板可以得到模板ID信息,后面调接口会用到:

6、应用中新建AI助理
消息是通过API控制AI助理发送的,需要在应用中创建一个AI助理,并绑定到魔法棒应用,最后发布就可以调用接口测试了:

接口调用流程
Maven依赖
<dependency><groupId>com.aliyun</groupId><artifactId>dingtalk</artifactId><version>2.0.14</version>
</dependency>
封装一个工具类
工具类包含流程所需配置的读取以及token生成方法:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.dingtalkstorage_1_0.Client;
import com.aliyun.dingtalkstorage_1_0.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.remo.pms.entity.ding.FileInfoEntity;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;@Component
@Data
@Slf4j
public class DingDingUtils {@Value("${ding-ding.clientId}")private String appKey;@Value("${ding-ding.clientSecret}")private String appSecret;@Value("${ding-ding.space-id}")private String spaceId;@Value("${ding-ding.union-id}")private String unionId;public Map<String, Object> getDingDingAccessToken() {Map<String, Object> result = new HashMap<>();String url = "https://oapi.dingtalk.com/gettoken?appkey=" + appKey + "&appsecret=" + appSecret;String resultStr = HttpUtils.get(url, null);JSONObject jsonObject = JSON.parseObject(resultStr);result.put("access_token", jsonObject.getString("access_token"));result.put("expires_in", jsonObject.getLongValue("expires_in"));return result;}
}
查询用户信息
调用AI助理发送消息接口前我们需要先获得发送用户的unionid(我以单聊场景举例)。
查看响应参数
我们先看postman调用结果,返回值有我们需要的unionid(每个钉钉用户有个对应的):

调用代码示例:
String accessToken = dingDingUtils.getDingDingAccessToken().get("access_token").toString();
String url = "https://oapi.dingtalk.com/topapi/v2/user/get?language=zh_CN";
url = url + "&access_token=" + accessToken ;
url = url + "&userid=" + "用户ID";String resultStr = HttpUtils.get(url, null);
JSONObject jsonObject = JSON.parseObject(resultStr);
String unionId = jsonObject.getJSONObject("result").getString("unionid");
log.info("unionid:{}", unionId);
调用AI助理发送消息API
postman调用:
我们先看postman调用结果,参数就只有三个,unionid、content(模板ID)、contentType(给ai_card即可),注意header中还需要传入accessToken,返回值有conversationToken就成功了:

效果:
调用完立马能看到钉钉收到消息卡片通知:

相关文章:
详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户
文章目录 前言准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用;2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;3、了解AI助理主动发送消息API:4、应用中配置好所需权限:4.1、权限点4.…...
57 长短期记忆网络(LSTM)_by《李沐:动手学深度学习v2》pytorch版
系列文章目录 文章目录 系列文章目录长短期记忆网络(LSTM)门控记忆元输入门、忘记门和输出门候选记忆元 (相当于RNN中计算 H t H_t Ht)记忆元隐状态 从零开始实现初始化模型参数定义模型训练和预测 简洁实现小结练习 长短期记忆网络(LSTM&a…...
Linux系统安装教程
Linux安装流程 一、前置准备工作二、开始安装Linux 一、前置准备工作 安装好VMWare虚拟机,并下载Linux系统的安装包; Linux安装包路径为:安装包链接 , 提取码为:4tiM 二、开始安装Linux...
Redis: Sentinel工作原理和故障迁移流程
Sentinel 哨兵几个核心概念 1 ) 定时任务 Sentinel 它是如何工作的,是如何感知到其他的 Sentinel 节点以及 Master/Slave节点的就是通过它的一系列定时任务来做到的,它内部有三个定时任务 第一个就是每一秒每个 Sentinel 对其他 Sentinel 和 Redis 节点…...
通信工程学习:什么是IGMP因特网组管理协议
IGMP:因特网组管理协议 IGMP(Internet Group Management Protocol,因特网组管理协议)是TCP/IP协议簇中负责组播成员管理的协议。它主要用于在用户主机和与其直接相连的组播路由器之间建立和维护组播组成员关系。以下是关于IGMP协议…...
高效批量导入多个SQL文件至SQL Server数据库的实用方法
当需要批量导入多个SQL文件到SQL Server数据库时,可以通过以下几种方法来实现: 方法一:使用SQLCMD命令行工具(亲测可用) 准备SQL文件:确保所有的SQL文件都位于同一个文件夹内,并且文件扩展名为…...
【树莓派系列】树莓派wiringPi库详解,官方外设开发
树莓派wiringPi库详解,官方外设开发 文章目录 树莓派wiringPi库详解,官方外设开发一、安装wiringPi库二、wiringPi库API大全1.硬件初始化函数2.通用GPIO控制函数3.时间控制函数4.串口通信串口API串口通信配置多串口通信配置串口自发自收测试串口间通信测…...
前端模块化CommonJs、ESM、AMD总结
前端开发模式进化史 前端工程化正是为了应对这些演化中出现的挑战和需求而发展起来的: 前后端混合:服务端渲染,javascript仅实现交互前后端分离:借助 ajax 实现前后端分离、单页应用(SPA)等新模式模块化开发:npm 管理…...
JavaWeb - 8 - 请求响应 分层解耦
请求响应 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程…...
1G,2G,3G,4G,5G各代通信技术的关键技术,联系和区别
目录 1G2G3G4G5G各代通信技术的联系和区别联系区别 1G 1G的主要特点是无线移动化。关键技术为蜂窝组网,支持频率复用和移动切换,可以实现个人和个人移动状态下不间断的语音通信。 1G通信系统现已关闭,其主要缺点是串好和盗号。 2G 数字化…...
【宽搜】2. leetcode 102 二叉树的层序遍历
题目描述 题目链接:二叉树的层序遍历 根据上一篇文章的模板可以直接写代码,需要改变的就是将N叉树的child改为二叉树的left和right。 代码 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector&…...
Go语言实现长连接并发框架 - 请求分发器
文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,我们上篇博客实现了任务管理器的功能,接下来这篇博客我们将要实现请求分发模块的开发 接口 trait/dispatcher.go type Dispatcher interface {Start()Dispatch(conn…...
Redis: 集群测试和集群原理
集群测试 1 ) SET/GET 命令 测试 set 和 get 因为其他命令也基本相似,我们在 101 节点上尝试连接 103 $ /usr/local/redis/bin/redis-cli -c -a 123456 -h 192.168.10.103 -p 6376我们在插入或读取一个 key的时候,会对这个key做一个hash运算,…...
问题解决实录 | bash 中 tmux 颜色显示不全
点我进入博客 如下图,tmux 中颜色显示不全: echo $TERM输出的是 screen 但在 bash 里面输出的是 xterm-256 color 在 bash 里面输入: touch ~/.tmux.conf vim ~/.tmux.conf set -g default-terminal "xterm-256color"使之生效 source …...
古典舞在线交流平台:SpringBoot设计与实现详解
摘 要 随着互联网技术的发展,各类网站应运而生,网站具有新颖、展现全面的特点。因此,为了满足用户古典舞在线交流的需求,特开发了本古典舞在线交流平台。 本古典舞在线交流平台应用Java技术,MYSQL数据库存储数据&#…...
五子棋双人对战项目(6)——对战模块(解读代码)
目录 一、约定前后端交互接口的参数 1、房间准备就绪 (1)配置 websocket 连接路径 (2)构造 游戏就绪 的 响应对象 2、“落子” 的请求和响应 (1)“落子” 请求对象 (2)“落子…...
查缺补漏----I/O中断处理过程
中断优先级包括响应优先级和处理优先级,响应优先级由硬件线路或查询程序的查询顺序决定,不可动态改变。处理优先级可利用中断屏蔽技术动态调整,以实现多重中断。下面来看他们如何运用在中断处理过程中: 中断控制器位于CPU和外设之…...
Java API接口开发规范
文章目录 一、命名规范1.1 接口命名1.2 变量命名 二、接收参数规范2.1 请求体(Body)2.2 查询参数(Query Parameters) 三、参数检验四、接收方式规范五、异常类处理六、统一返回格式的定义七、API接口的幂等性(Idempote…...
Go语言实现长连接并发框架 - 任务管理器
文章目录 前言接口结构体接口实现项目地址最后 前言 你好,我是醉墨居士,我们上篇博客实现了路由分组的功能,接下来这篇博客我们将要实现任务管理模块 接口 trait/task_mgr.go type TaskMgr interface {RouterGroupStart()StartWorker(tas…...
【大数据】深入解析分布式数据库:架构、技术与未来
目录 1. 分布式数据库的定义2. 架构类型2.1 主从架构2.2 同步与异步复制2.3 分片架构 3. 技术实现3.1 一致性模型3.2 CAP理论3.3 数据存储引擎 4. 应用场景5. 选择分布式数据库的因素5.1 数据一致性需求5.2 读写负载5.3 成本5.4 技术栈兼容性 6. 未来发展趋势总结 分布式数据库…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
