集成钉钉机器人消息通知

集成消息发送呢,还是比较常见的,比如说,异常的时候,发送钉钉通知,艾特到某个人,可以点击查看详情;还可以集成调度,在某个时间段,执行特定的操作,比如每天早上8点发送今日热点新闻,9点提醒你上班打卡啊,11点半提醒你点外卖啊。。。等等等,只要你能想到的固定场景,都可以让机器人帮你执行了。

集成步骤

添加机器人

打开群设置 -> 添加智能群助手 -> 添加机器人 -> 添加自定义机器人

设置安全方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T4NcYGD3-1626853019018)(https://s1.ax1x.com/2020/10/26/BnTOQx.png)]

java sdk 集成

引入maven
<dependency><groupId>com.aliyun</groupId><artifactId>alibaba-dingtalk-service-sdk</artifactId><version>1.0.1</version><exclusions><exclusion><groupId>javax.jms</groupId><artifactId>jms</artifactId></exclusion></exclusions>
</dependency><repositories><repository><id>sonatype-nexus-staging</id><name>Sonatype Nexus Staging</name><url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories>
请求封装

目前只封装了两种,大家可根据实际需求,自行添加

/*** @author Hou_fx* @date 2020.10.23 16:26* @description*/
public enum RobotType {/** Robot类型 */TEXT("text"),LINK("link"),;RobotType(String value){this.value = value;}private String value;public void setValue(String value) {this.value = value;}public String getValue() {return value;}
}
/*** @author Hou_fx* @date 2020.10.23 16:26* @description*/
public class RobotConfig {public static final String CHARSET_NAME = "UTF-8";public static final String ALGORITHM = "HmacSHA256";public static String SECRET = "安全设置里面的秘钥复制过来";public static String SERVER_URL = "安全设置里面的webhook复制过来";
}
/*** @author Hou_fx* @date 2020.10.23 16:25* @description*/
public class RobotNotice extends RobotConfig {public static RobotStruct getInstance(RobotType robotType) {return new RobotStruct(robotType);}public static class RobotStruct {protected OapiRobotSendRequest request;private RobotStruct(RobotType robotType) {OapiRobotSendRequest request = new OapiRobotSendRequest();request.setMsgtype(robotType.getValue());this.request = request;}private DingTalkClient init() throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException {Long timestamp = System.currentTimeMillis();StringBuilder serverUrl = new StringBuilder(SERVER_URL);serverUrl.append("&").append("timestamp=").append(timestamp);serverUrl.append("&").append("sign=").append(sign(timestamp));return new DefaultDingTalkClient(serverUrl.toString());}private String sign(Long timestamp) throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeyException {String stringToSign = timestamp + "\n" + SECRET;Mac mac = Mac.getInstance(ALGORITHM);mac.init(new SecretKeySpec(SECRET.getBytes(CHARSET_NAME), ALGORITHM));byte[] signData = mac.doFinal(stringToSign.getBytes(CHARSET_NAME));return URLEncoder.encode(new String(Base64.encodeBase64(signData)), CHARSET_NAME);}public RobotStruct setSendContent(String content){OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();text.setContent(content);request.setText(text);return this;}public RobotStruct setSendContent(OapiRobotSendRequest.Link link) {request.setLink(link);return this;}public RobotStruct setAt(List<String> phone) {if (phone.size() > 0) {OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();at.setAtMobiles(phone);request.setAt(at);}return this;}public Optional<OapiRobotSendResponse> execute(){try {return Optional.ofNullable(this.init().execute(request));} catch (ApiException | NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) {e.printStackTrace();}return Optional.empty();}}}

好了,下面测试下

/*** @author Hou_fx* @date 2020.10.23 19:41* @description*/
public class NoticeTest {public static void main(String[] args) {RobotNotice.getInstance(RobotType.TEXT).setSendContent("测试文本消息").setAt(Arrays.asList("17788889999")).execute();}
}

按照上面的步骤来的话,测试应该已经通过了。

优化点

通过看钉钉官方文档,可以看到,每个请求的实例,都需要几个步骤:设置发送类型初始化请求、设置发送内容、设置艾特的人、最后再执行。那么我们可以把上述代码改为工厂模式,根据不同的发送类型,构建不同的实例。

OK,先这样吧,等需求搞完了有时间再优化下(如果我还记得)

集成钉钉机器人消息通知相关推荐

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

    文章导航 钉钉小程序生态1-区分企业内部应用.第三方企业应用.第三方个人应用 钉钉小程序生态2-区分小程序和H5微应用 钉钉小程序生态3-钉钉扫码登录PC端网站 钉钉小程序生态4-钉钉小程序三方企业应 ...

  2. 钉钉群机器人消息通知

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

  3. 钉钉机器人发送图片 python_python封装钉钉Webhook机器人消息发送逻辑

    python封装钉钉Webhook机器人消息发送逻辑,目前仅支持python2. 安装 pip install dingmsgapi 初始化实例 from ding_msg_api import Ms ...

  4. GitLab cicd 流水线添加企业微信机器人消息通知

    GitLab cicd 流水线添加企业微信机器人消息通知 描述 公司部门需要我们在进行项目发布的时候,希望能通过企业微信机器人,来告诉测试,是发布还是项目出来了问题,因为项目没有做无感知处理,所以每次 ...

  5. python向钉钉发送本地文件_Python实现向钉钉群发送消息通知

    一 钉钉机器人使用场景 钉钉机器人是钉钉群的高级扩展功能,可以简单实现将第三方服务信息聚合到钉钉群中,实现信息的自动同步,常用场景如下:聚合Github.Gitlab等源码管理服务,实现源码更新同步: ...

  6. 调用钉钉API发送消息通知给个人或部门 ,钉钉后台

    https://www.pianshen.com/article/22171673623/

  7. CANoe/CAPL ,钉钉群助手消息通知

  8. golang 实现不定数量企微群机器人消息通知 顺序必须一致 并不超过群机器人消息每分钟提醒上限20条

    要实现功能: 企微机器人提醒 机器人数量不一定 机器人提醒企微有限制 一分钟不能超过20条 准备好发送markdown消息的方法 type RobotRsp struct {ErrCode int ` ...

  9. 钉钉小程序生态1—区分企业内部应用、第三方企业应用、第三方个人应用

    文章导航 钉钉小程序生态1-区分企业内部应用.第三方企业应用.第三方个人应用 钉钉小程序生态2-区分小程序和H5微应用 钉钉小程序生态3-钉钉扫码登录PC端网站 钉钉小程序生态4-钉钉小程序三方企业应 ...

最新文章

  1. CSS3实践之路(六):CSS3的过渡效果(transition)与动画(animation)
  2. 学JS的心路历程 -非同步执行
  3. nyist 一笔画问题
  4. php 张开收缩显示,js实现可以点击收缩或张开的悬浮窗
  5. ADO.NET,浅显
  6. Windows 7 :微软目前最好的操作系统
  7. PHP面向对象相关特性
  8. 大量思科设备存在IPv6死亡之Ping漏洞
  9. android多屏幕共享,一种实现多人屏幕无线共享的方法技术
  10. STC89C52 VS1838红外接收器自制家庭遥控灯开关
  11. 树莓派4B 安装卸载pip、pip3
  12. 2019-PINN-A deep learning framework for solving forward and ... nonlinear PDEs
  13. 使用Spring Cache设置缓存条件
  14. 【运筹学】线性规划数学模型 ( 线性规划三要素 | 一般形式 | 标准形式 | 标准形式转化 | 可行解 | 最优解 | 基 | 基向量 | 基变量 | 非基变量 ) ★★
  15. 2017年最新苹果开发者账号注册申请流程最强详解!
  16. [高通SDM450][Android9.0]CTA认证--去除某些应用开机使用定位权限
  17. 别让拖延毁掉你自己 | 《拖延心理学》全书解读
  18. OpenCV图像特征提取学习三,LBP图像特征检测算法
  19. Java计算两个时间段内的工作日天数
  20. 即构CEO林友尧:让实时音视频技术融于无形

热门文章

  1. Mysql错误check the manual that corresponds to your MySQL server version for the right syntax
  2. 360应用宝上架流程及所需材料
  3. 网络测速全解析之一:自定义View基础知识(八)
  4. 真实评测 i51155g7和锐龙r75700u选哪个好
  5. Java生成PDF文件保存到本地磁盘
  6. 通信中台的概念界定与能力拆解
  7. 两层全连接网络反向传播梯度推导(矩阵形式、sigmoid、最小均方差MSE)
  8. Allegro通过宏录制设置快捷键
  9. 如何运用3Dmax制作游戏武器模型
  10. 哪些网站让你觉得发现了新大陆?分享几个神奇的黑科技网站