钉钉小程序生态5—钉钉群机器人消息通知和钉钉工作通知

文章导航

钉钉小程序生态1—区分企业内部应用、第三方企业应用、第三方个人应用
钉钉小程序生态2—区分小程序和H5微应用
钉钉小程序生态3—钉钉扫码登录PC端网站
钉钉小程序生态4—钉钉小程序三方企业应用事件与回调
钉钉小程序生态5—钉钉群机器人消息通知和钉钉工作通知

前言

在消息通知这块,钉钉可谓是玩出了花,比如工作通知、群机器人通知,还有那万恶的Ding一下。钉钉的通知不仅花样多,而且大部分渠道都支持自定义,也即可以自定义设置发送时间、发送内容,并且还支持多种样式的消息如文本、卡片、Markdown等。
这篇文章我主要介绍一下常用的两类:钉钉群机器人通知和钉钉工作通知。

钉钉群机器人通知效果图

钉钉工作通知效果图

具体的区别和对比我就不写了,机器人统治发在群里,工作通知发在工作通知栏目。简单来说钉钉群机器人消息通知发的消息所有人都可以看到,钉钉工作通知只有选择到的人才可以看到,所以钉钉群机器人消息通知适合发公告通知所有人,钉钉工作通知适合发工作安排通知到具体人,不过具体怎么用还得看业务的需要。

钉钉群机器人通知实现

官方文档链接

自定义机器人接入:https://open.dingtalk.com/document/robots/custom-robot-access

自定义机器人安全设置:https://open.dingtalk.com/document/robots/customize-robot-security-settings

配置流程

1. 选择需要添加机器人的群聊,然后依次单击群设置 > 机器人。

2. 点击添加机器人,然后找到自定义机器人

3. 输入配置,安全设置需要注意一下

由于创建自定义机器人必须选择安全设置,这里注意不要乱输,如果明白安全设置是啥最好,如果不懂建议选择加签的方式,然后看一下说明文档,不然测试的时候有可能会发送不成功。

4. 点击完成,会生成Webhook

开发机器人

1. 保存好安全设置的token和Webhook

2. 导入maven旧版依赖

    <!-- 使用旧版钉钉开放api --><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency></dependencies>

3. 编写测试类

package com.example.dingtalkmsg.service;import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiRobotSendRequest;
import com.dingtalk.api.request.OapiRobotSendRequest.Links;
import com.dingtalk.api.response.OapiRobotSendResponse;
import org.apache.tomcat.util.codec.binary.Base64;public class DingTalkRobotSendService {public static void main(String[] args) throws Exception {//安全设置加签Long timestamp = System.currentTimeMillis();String secret = "xxx ";String stringToSign = timestamp + "\n" + secret;Mac mac = Mac.getInstance("HmacSHA256");mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");//构建消息发送ClientDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk"+ ".com/robot/send?access_token=xxx"+ "&timestamp="+ timestamp + "&sign=" + sign);//创建发送请求体OapiRobotSendRequest request = new OapiRobotSendRequest();request.setMsgtype("text");//文本消息OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();text.setContent("测试文本消息");request.setText(text);OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();at.setAtMobiles(Arrays.asList("xxxxx"));// isAtAll类型如果不为Boolean,请升级至最新SDK//at.setIsAtAll(true);//at.setAtUserIds(Arrays.asList("109929","32099"));request.setMsgtype("link");OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();link.setMessageUrl("https://www.dingtalk.com/");link.setPicUrl("");link.setTitle("时代的火车向前开");link.setText("这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林");request.setLink(link);request.setMsgtype("markdown");OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();markdown.setTitle("杭州天气");markdown.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");request.setMarkdown(markdown);request.setMsgtype("feedCard");OapiRobotSendRequest.Feedcard feedcard = new OapiRobotSendRequest.Feedcard();OapiRobotSendRequest.Links links1 = new OapiRobotSendRequest.Links();links1.setTitle("时代的火车向前开1");links1.setMessageURL("https://www.dingtalk.com/");links1.setPicURL("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");OapiRobotSendRequest.Links links2 = new OapiRobotSendRequest.Links();links2.setTitle("时代的火车向前开2");links2.setMessageURL("https://www.dingtalk.com/");links2.setPicURL("https://img.alicdn.com/tfs/TB1NwmBEL9TBuNjy1zbXXXpepXa-2400-1218.png");List<Links> links = new ArrayList<>();links.add(links1);links.add(links2);feedcard.setLinks(links);request.setFeedCard(feedcard);OapiRobotSendResponse response = client.execute(request);System.out.println(response);}
}

总体来说,钉钉机器人推送消息的开发没有那些弯弯绕绕的设置,基本上能看懂文档就可以开发出来,也不需要什么特殊的环境支持。

钉钉工作通知实现

官方文档链接

第三方企业应用开发:https://open.dingtalk.com/document/isvapp/send-job-notification

配置流程

1. 创建一个第三方企业应用

我本来以为企业内应用和第三方企业应用一样,创建应用之后都有一个工作通知。创建应用后发现,确实都有一个,但是区别非常大。企业内应用通知就是机器人群消息,而第三方企业应用则是模板消息。

2. 依次点击应用功能—>消息推送—>新增

3. 选择Markdown模板进行创建—>发送测试消息

4. 保存好消息模板后点击提交审核,审核一般半天左右会通过

开发工作通知

1. 导入maven旧版依赖

    <!-- 使用旧版钉钉开放api --><dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>2.0.0</version></dependency></dependencies>

2. 编写测试类

package com.example.dingtalkmsg.service;import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
import com.dingtalk.api.request.OapiServiceGetCorpTokenRequest;
import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
import com.dingtalk.api.response.OapiServiceGetCorpTokenResponse;public class DingTalkWorkNoticeSendService {public static void main(String[] args) throws Exception {//获取小程序的accessTokenDefaultDingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/service/get_corp_token");OapiServiceGetCorpTokenRequest req = new OapiServiceGetCorpTokenRequest();req.setAuthCorpid("dingxxxx");//suiteTicket获取比较麻烦,后续我会单独写文章说明OapiServiceGetCorpTokenResponse execute = client1.execute(req, "xxx", "xxx", "xxx");//构建工作通知推送ClientDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");OapiMessageCorpconversationAsyncsendV2Request request = new OapiMessageCorpconversationAsyncsendV2Request();request.setAgentId(836390886L);request.setUseridList("user123");request.setToAllUser(false);//构建消息模板OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();msg.setMsgtype("text");msg.setText(new OapiMessageCorpconversationAsyncsendV2Request.Text());msg.getText().setContent("test123");request.setMsg(msg);msg.setMsgtype("image");msg.setImage(new OapiMessageCorpconversationAsyncsendV2Request.Image());msg.getImage().setMediaId("@lADOdvRYes0CbM0CbA");request.setMsg(msg);msg.setMsgtype("file");msg.setFile(new OapiMessageCorpconversationAsyncsendV2Request.File());msg.getFile().setMediaId("@lADOdvRYes0CbM0CbA");request.setMsg(msg);msg.setMsgtype("link");msg.setLink(new OapiMessageCorpconversationAsyncsendV2Request.Link());msg.getLink().setTitle("test");msg.getLink().setText("test");msg.getLink().setMessageUrl("test");msg.getLink().setPicUrl("test");request.setMsg(msg);msg.setMsgtype("markdown");msg.setMarkdown(new OapiMessageCorpconversationAsyncsendV2Request.Markdown());msg.getMarkdown().setText("##### text");msg.getMarkdown().setTitle("### Title");request.setMsg(msg);msg.setOa(new OapiMessageCorpconversationAsyncsendV2Request.OA());msg.getOa().setHead(new OapiMessageCorpconversationAsyncsendV2Request.Head());msg.getOa().getHead().setText("head");msg.getOa().setBody(new OapiMessageCorpconversationAsyncsendV2Request.Body());msg.getOa().getBody().setContent("xxx");msg.setMsgtype("oa");request.setMsg(msg);msg.setActionCard(new OapiMessageCorpconversationAsyncsendV2Request.ActionCard());msg.getActionCard().setTitle("xxx123411111");msg.getActionCard().setMarkdown("### 测试123111");msg.getActionCard().setSingleTitle("测试测试");msg.getActionCard().setSingleUrl("https://www.dingtalk.com");msg.setMsgtype("action_card");request.setMsg(msg);OapiMessageCorpconversationAsyncsendV2Response rsp = client2.execute(request, execute.getAccessToken());System.out.println(rsp.getBody());}
}

其实工作通知开发的难度也不高,但是由于这是个三方应用,所有三方应用的接口都需要一个accessToken。而这个accessToken也不是简单的拿ak/sk去获取就行了,钉钉那边还需要一个suiteTicket,这个suiteTicket才是开发的最大难点。
suiteTicket不是调用接口去获取的,而是钉钉主动推送过来的,所以我们还需要写一个回调接口供钉钉侧调用,详情请看这篇文章:添加链接描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工具使用之——钉钉添加自定义机器人

一 概述 钉钉有自定义机器人功能&#xff0c;开发者可以选择机器人类型(心知天气、代码托管平台&#xff0c;JIRA等)&#xff0c;也可以自定义通过Webhook接入自定义服务的机器人&#xff0c;本篇文章介绍的就是通过Webhook发送通知的机器人 二 添加机器人 点击左侧上方的用户…

利用钉钉接口往钉钉群推送信息

利用钉钉接口往钉钉群推送信息 如下图所示,往钉钉群推送关键信息 创建钉钉群 在群设置中选择智能群助手 选择添加机器人 选择自定义,通过Webhook接入自定义服务

钉钉里的钉一下怎么用 怎么使用钉钉里的钉一下

钉钉是很多公司比较依赖的办公工具&#xff0c;每天上班都要先打开钉钉。我们和同事交流工作内容的时候&#xff0c;主要也是通过钉钉。如果同事消息太多&#xff0c;或者有其他事情耽误了&#xff0c;就可能没有及时查看我们的消息。看着我们发送的消息久久都是“未读”状态&a…

钉钉群机器人消息通知

最近项目需要授权&#xff0c;需要及时通知授权失败的工单&#xff0c;所以就用到了钉钉机器人在群里实时通知&#xff0c;然后就写下了这篇文章。如果放到服务器出现域名错误修改hosts文件,在服务器执行vi /etc/hosts可直接修改&#xff0c;在文件中添加106.11.35.100 oapi.di…

自定义钉钉群机器人

文章目录 一.需求说明二.使用步骤1.打开钉钉&#xff0c;进入一个需要创建机器人的群。并点击群设置2.点击只能群助手&#xff0c;添加机器人3.输入自定义机器人相关信息4.点击确定&#xff0c;保存好webhook5.发送测试 三.官方相关文档 一.需求说明 在做项目的过程中&#xf…

文心源远流长久,百度千帆造万千

摘要 本文介绍了百度文心大模型作为产业级知识增强大模型的特点和应用。文心大模型是百度公司推出的一种技术领先的大型人工智能模型&#xff0c;旨在为千行百业的AI开发提供强大的基座。该模型具有全场景覆盖、技术领先、零门槛使用以及真实可落地的特点。它包括通用的基础大模…

mysql学习之数据系统概述

☀️马上要成为打工人&#xff0c;这几天把前面的知识都捡了捡&#xff0c;发现自己对关系数据库这块的学习还有所缺失&#xff0c;于是本章开始学习mysql 这里写目录标题 1. 数据库系统的发展1.1 人工管理阶段1.2 文件系统阶段1.3 数据库阶段1.4 大数据阶段 2 数据库系统的组…

GPT提示词系统学习-第三课-规范化提示让样本走在提示词前

开篇 本教程将为您提供有关不同类型提示的术语及如何描述它们。尽管提示工程中已经有一些方法来形式化术语,但这个领域仍在不断发展,我们在这篇教程中将给到大家展示一种基于QA形式的通用的、标准的提示语写法。 提示的组成部分 以下是在一个提示中经常会出现的一些组成部…

2023最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了

前言 鉴于目前测试就业越来越严峻&#xff0c;内卷也成了测试领域的代名词了。 所以现在还想从事软件测试行业的小伙伴们&#xff0c;想要心仪的工作&#xff0c;要多努力学习哟。小编给大家整理了2023最新软件测试八股文&#xff0c;大家刷起来哟 1.软件测试基础题&#xff…

【软件测试】8年资深测试说出来我们的心声......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 执着于手动的功能…

软件测试面试八股文有必要背吗?看完这份101问真的贼香

前言 2022秋招过半&#xff0c;很多同学会问软件测试面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。 国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的…

Qt-数据库开发-用户登录、后台管理用户

Qt-数据库开发-用户登录、后台管理用户 [1] Qt-数据库开发-用户登录、后台管理用户1、概述2、实现效果 [2] Qt使用SqlLite实现权限管理初始化数据库创建数据表插入数据可使用结构体对数据信息进行封装数据库查询函数为数据库更新数据函数为删除数据函数为 [3] 测试效果[4] sqli…

关于类的探索(2)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 关于类的探索&#xff08;2&#xff09; 前言前提两种学习方法先从一个例子开始稍微优化一下输出模块数据函数类类的继承关系类的内部解析收尾事项 前言 很久就想写一个关于python类…

web面试题记录之react

为什么使用hooks class 在组件之间复用状态逻辑很难&#xff0c;由高阶组件&#xff0c;render props 等其他抽象层组成的组件会形成“嵌套地狱”。&#xff5c; Hook 从组件中提取状态逻辑&#xff0c; 使得这些逻辑可以单独复用 【拆分】class 组件不好理解&#xff0c; 每个…

[streamlit]数据科学科研工作者的神器,必须要推荐一下

1. 前言 做科研当然要有过硬的专业知识&#xff0c;但是也少不了一些辅助&#xff0c;才能最大程度发挥我们的能力。因此&#xff0c;除去我们模型性能优秀&#xff0c;结果良好以外&#xff0c;如何进行一个好的展示&#xff0c;也是非常有必要的。那么今天&#xff0c;我们就…

大模型高效微调综述上:Adapter Tuning、AdaMix、PET、Prefix-Tuning、Prompt Tuning、P-tuning、P-tuning v2

文章目录 一、背景1.1 Tansformer1.1.1 模型结构1.1.2 注意力机制1.1.3 注意力在Transformer中的应用 1.2 BERT 二、PEFT综述2.1 PEFT的分类2.2 不同PEFT方法的对比 三、Additive methods3.1 Adapter Tuning3.1.1 Adapters&#xff08;2019.2.2&#xff09;3.1.2 AdaMix&#x…

AR眼镜——Vuzix Blade填坑笔记

这是市场给挖的坑&#xff01;&#xff01; 手里的一个项目&#xff0c;由于商务环节历时1年半的时间&#xff0c;到项目签合同的时候&#xff0c;公司的产品线布局变化极大&#xff0c;我已经很久没做过AR相关的项目了&#xff0c;一直在做VR的东西。合同签完拿给我过参数&…

【人脸识别】VGGFace2数据集介绍

论文题目&#xff1a;&#xff1a;《VGGFace2: A dataset for recognising faces across pose and age》 论文地址&#xff1a;https://arxiv.org/pdf/1710.08092.pdf 1. 简介 VGGFace2是一个大规模人脸识别数据集&#xff0c;包含331万图片&#xff0c;9131个ID&#xff0c;平…

window.postMessage()接收不到信息(失效)

问题描述 按照正常的代码逻辑&#xff0c;应该是这个样子&#xff0c;通过iframe打开子窗口&#xff0c;能够正常通信。 // 接收端&#xff08;父窗口&#xff09; window.onmessage function (e) {// 逻辑代码 }// 发送端&#xff08;子窗口&#xff09; window.parent.po…

什么是人工智能在金融领域的应用?

人工智能在金融领域有很多应用&#xff0c;下面是一些例子&#xff1a; 什么是人工智能在金融领域的应用 风险评估&#xff1a;人工智能可以帮助金融机构评估贷款和投资的风险&#xff0c;例如通过分析借款人或投资对象的信用历史、收入、资产等信息来判断其还款能力和投资回报…