对接钉钉机器人发送钉钉通知

这篇具有很好参考价值的文章主要介绍了对接钉钉机器人发送钉钉通知。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 实现效果
    对接钉钉机器人发送钉钉通知,安装软件,钉钉,机器人
  • 话不多说 直接上代码
static void sendMsg(String msg) {

  try {
	      String content = "{\"msgtype\": \"text\",\"text\": {\"content\": \"" + msg + "\"}}";
	      HttpUtil.simplePost(content, getDingUrl());
 	 } catch (Exception e) {
      log.error("钉钉消息发送失败",e);
  }

        



private static String getDingUrl() throws Exception {
        // 获取系统时间戳
        Long timestamp = System.currentTimeMillis();
        // 拼接  钉钉加签
        String stringToSign = timestamp + "\n" + "SEC0c2c93412cff6ac2e****ac939189971c0b";
        // 使用HmacSHA256算法计算签名
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec("SEC0c2c93412cff6ac2e****ac939189971c0b".getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
        byte[] signData = mac.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8));
        // 进行Base64 encode 得到最后的sign,可以拼接进url里
        String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)), "UTF-8");
        // 钉钉机器人地址(配置机器人的webhook),为了让每次请求不同,避免钉钉拦截,加上时间戳
        return "https://oapi.dingtalk.com/robot/send?access_token=" + "&timestamp=" + timestamp + "&sign=" + sign;
    }
  • http工具类

import org.apache.http.Consts;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.net.ssl.SSLContext;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;

/**
 * HttpUtil 请求
 * @author zhouyang
 */
public class HttpUtil {
	private static final Logger log = LoggerFactory.getLogger(HttpUtil.class);
	private static CloseableHttpClient httpClient;;
	private static RequestConfig requestConfig;
	private static final String ENCODING = Consts.UTF_8.name();
	private static final Map<String, Object> jsonHeaderMap = new HashMap();

	static {
		try{
			jsonHeaderMap.put("Content-Type","application/json");
			PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();

			ConnectionConfig connectionConfig = ConnectionConfig.custom().setCharset(Consts.UTF_8).build();
			connManager.setDefaultConnectionConfig(connectionConfig);

			connManager.setMaxTotal(50);//最大连接数
			connManager.setDefaultMaxPerRoute(5);//路由最大连接数

			SocketConfig socketConfig = SocketConfig.custom()
					.setTcpNoDelay(true)
					.build();
			connManager.setDefaultSocketConfig(socketConfig);


			SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
				//信任所有
				@Override
				public boolean isTrusted(X509Certificate[] chain, String authType)
						throws CertificateException {
					return true;
				}
			}).build();

			httpClient = HttpClients.custom()
					.setConnectionManager(connManager)
					.setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext))
					.build();

			requestConfig = RequestConfig.custom()
					// 获取manager中连接 超时时间 50s
					.setConnectionRequestTimeout(5000)
					// 连接服务器 超时时间  1500s
					.setConnectTimeout(150000)
					// 服务器处理 超时时间 3000s
					.setSocketTimeout(300000)
					.build();
		}catch(Exception e){
			throw new RuntimeException("创建httpClient失败", e);
		}
	}





	public static final String simplePost(final String body, final String url) {
		return doPost(url, body, jsonHeaderMap);
	}

	/**
	 * post请求发送
	 */
	public static String doPost(String url, String bodyString, Map<String, Object> headerMap) {
		HttpPost post = new HttpPost(url);
		StringEntity entity = new StringEntity(bodyString, ENCODING);
		post.setEntity(entity);
		if (headerMap != null && !headerMap.isEmpty()) {
			headerMap.forEach((k, v) -> post.setHeader(k, String.valueOf(v)));
		}
		post.setConfig(requestConfig);
		try (CloseableHttpResponse response = httpClient.execute(post)) {
			if (response.getStatusLine().getStatusCode() == 200) {
				return EntityUtils.toString(response.getEntity(), ENCODING);
			}
		} catch (Exception e) {
			log.error("invoke post error", e);
		}
		return null;
	}
}

文章来源地址https://www.toymoban.com/news/detail-823622.html

到了这里,关于对接钉钉机器人发送钉钉通知的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 钉钉机器人发送jira消息到钉钉群聊

    钉钉机器人发送jira消息到钉钉群聊

    前期准备 1.安装JIRA相关插件 Automation for Jira - Server Lite。 、 2.配置钉钉群机器人 01.钉钉群右上角点击群设置,选择智能群助手,点击添加机器人,选择自定义机器人; 02.给机器人起个名字,消息推送开启,复制出webhook,后面会用到,勾选自定义,填写(

    2024年02月15日
    浏览(20)
  • 在钉钉群通过机器人发送信息

    在第三方API接口对接中,需要及时获取第三方接口请求结果情况,所以在代码中融合钉钉机器人,对请求的异常结果及时发送通知。 自定义机器人参考链接 通用响应参数-封装API的错误码 通用响应参数-状态码 通过返回类定义 在钉钉群可以通过手机号码@指定人员 关于钉钉群

    2024年02月01日
    浏览(13)
  • 使用telegram机器人发送通知

    使用telegram机器人发送通知

    在训练深度学习模型时,除了粗略估计外,很难预测训练何时结束。此外,我们可能还想随时随地查看训练情况,如果每次都需要登录回服务器的话并不方便。因此,为我们的训练设置自动通知会大有裨益。 相关的插件和库其实很多,例如而knockknock、dinglingling,但是存在着

    2024年02月22日
    浏览(32)
  • python使用钉钉机器人给钉钉发送消息
  • 钉钉机器人发送Markdown格式的内容

    钉钉机器人官方文档 请求参数格式 要@人的时候,text中要有@电话号码以及atMobiles是要有电话号码才能@成功 指定文本颜色时用英文颜色单词,仅PC支持,如果是16进制色号并用双引号,则PC和手机端均支持

    2024年02月14日
    浏览(10)
  • 钉钉自定义机器人定时发送消息(超详细)

    钉钉自定义机器人定时发送消息(超详细)

            因为工作需要,需要在钉钉群里添加一个可以每天定时发送消息的机器人,我找了很多网页查看,发现资料并不是很全,现在做出来了,就想发表出来,看看能不能帮到大家。接下来就进入正题。         详细步骤可以参考:钉钉群设置创建一个机器人-CSDN博客  

    2024年03月11日
    浏览(11)
  • java实现钉钉自定义机器人发送消息

    java实现钉钉自定义机器人发送消息

           钉钉作为现在很多企业的移动办公平台,具有很多很强大的功能,可以帮助我们更加及时的发现问题,解决问题,今天我们做一个java实现钉钉自定义机器发送消息的功能。         首先,先放出官方文档地址:https://open.dingtalk.com/document/orgapp/custom-robot-access        

    2024年02月15日
    浏览(13)
  • 企业微信、飞书、钉钉机器人消息发送工具类

    其实你也可以使用RestTemplate,我这里主要是用到了webflux框架,所以需要实例化客户端请求对象

    2024年02月10日
    浏览(13)
  • ElastAlert通过飞书机器人发送报警通知

    ElastAlert通过飞书机器人发送报警通知

    公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,查阅了许多资料,发现ElastAlert这个服务能够对elasticsearch的索引按

    2024年02月07日
    浏览(14)
  • Java实现钉钉企业内部应用机器和自定义机器人发送消息

    Java实现钉钉企业内部应用机器和自定义机器人发送消息

     公司让写一个服务监控的功能,当监测到服务停止时,向钉钉群里推送报警信息。之前大概看到钉钉的开放平台的API文档,好像能群发消息的只有机器人。 钉钉开放平台目前提供三种机器人: 企业内部应用机器人 群模板机器人 自定义机器人 本来向用自己比较熟悉的自定义

    2024年02月12日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包