java 通过API调用钉钉机器人通知

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

1.钉钉群中申请钉钉机器人

第一步:群管理–> 智能群助手–> 添加机器人–> 自定义

java 通过API调用钉钉机器人通知

第二步:通过加签的形式,需要记住加签的密码

java 通过API调用钉钉机器人通知
第三步:获取webhook的access_token=***的值记录下来

java 通过API调用钉钉机器人通知

2.钉钉相关配置

#钉钉消息配置
#对应Webhook中的access_token值
ding.robot.token= ****
#对应安全设置->加签方式中的密钥
ding.robot.key=***
#手机号可以@到具体某人,以;分割
ding.robot.at=****

3.钉钉集成代码

/**
 * @Description: 钉钉消息管理
 * @author: wanjun
 */
public interface IDingManager
{
	/**
	 * @Description: 发送钉钉消息
	 * @param robotKey 对应Webhook中的access_token值
	 * @param robotToken 对应安全设置->加签方式中的密钥
	 * @param dingRobotAt 根据手机号可以@到具体某人,以;分割
	 * @param content 发送内容
	 * @return: void
	 */
	String sendDingMsg(String robotKey,String robotToken,String dingRobotAt,String content);
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

import com.booway.cloud.commons.util.Func;
import com.booway.uums.dingrobot.IDingManager;

/**
 * @Description: 钉钉消息管理
 * @author: wanjun
 */
public class DingManager implements IDingManager
{

	private static final Logger log = LoggerFactory.getLogger(DingManager.class);
	
	private static RestTemplate restTemplate = new RestTemplate();
	
	/**
     * 通知人名单
     */
    private List<String> mobileList = new ArrayList<String>();
	
	@Override
	public String sendDingMsg(String robotKey,String robotToken,String dingRobotAt,String content)
	{
		String timestamp = String.valueOf(System.currentTimeMillis());
        String sign = Func.dingHmacSHA256(timestamp, robotKey);
        // 钉钉机器人地址(配置机器人的webhook)
        String dingUrl = "https://oapi.dingtalk.com/robot/send?access_token=" + robotToken + "&timestamp=" + timestamp + "&sign=" + sign;
        if (mobileList.isEmpty())
		{
        	//填入手机号,可以具体@到某个人
        	if (!StringUtils.isEmpty(dingRobotAt))
        	{
        		String [] all = StringUtils.split(dingRobotAt, ";");
        		if (all != null)
        		{
        			mobileList.addAll(Arrays.asList(all));
        		}
        	}
		}
        //组装请求内容
        Map<String, Object> reqStr = buildReqStr(content, mobileList.isEmpty(), mobileList);
        return invokeGeneralApi(dingUrl, reqStr);
		
	}
	
	
	 /**
     * 组装请求报文
     * @param content
     * @return
     */
    private Map<String, Object> buildReqStr(String content, boolean isAtAll, List<String> mobileList) {
        //消息内容
        Map<String, String> contentMap = new HashMap<String, String>();
        contentMap.put("content", content);

        //通知人
        Map<String, Object> atMap = new HashMap<String, Object>();
        //1.是否通知所有人
        atMap.put("isAtAll", isAtAll);
        //2.通知具体人的手机号码列表
        atMap.put("atMobiles", mobileList);

        Map<String, Object> reqMap = new HashMap<String, Object>();
        reqMap.put("msgtype", "text");
        reqMap.put("text", contentMap);
        reqMap.put("at", atMap);

        return reqMap;
    }

    private String invokeGeneralApi(String url, Map<String, Object> params) {
        String body = "";
        try {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity<Map<String, Object>> httpEntity = new HttpEntity<>(params, headers);
            ResponseEntity<String> entity = restTemplate.postForEntity(url, httpEntity, String.class);
            body = entity.getBody();
            log.info("invokeGeneralApi()>>>[{}]", body);
        } catch (RestClientException e) {
        	log.error("API调用错误,接口地址:[{}],请求参数:[{}]", url, params, e);
        }
        return body;
    }
	

}

public class Func
{
	/**
     * 钉钉自定义机器人安全设置
     * 把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)
     * @param secret
     * @return
     */
    public static String dingHmacSHA256(String timestamp, String secret) {
        try {
            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");
            return sign;
        } catch (Exception e) {
        	ERROR_LOG.error("dingHmacSHA256加密失败", e);
        }
        return null;
    }
 }

4.调用

dingManager.sendDingMsg(robotKey, robotToken, robotAt, “截止到0点,发现以下账号登录异常(括号里面为异常次数):8);

java 通过API调用钉钉机器人通知文章来源地址https://www.toymoban.com/news/detail-513411.html

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

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

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

相关文章

  • 【钉钉】通过钉钉机器人抓取群消息

    【钉钉】通过钉钉机器人抓取群消息

    一、进入钉钉开放平台中的开发者后台  二、进入应用开发的企业内部开发   三、选择机器人创建应用  四、进入开发管理点击修改  五、配置公网的服务器出口IP以及消息接收地址  六、消息接收代码部分 七、钉钉群@机器人发送消息  后端即可获取到消息,因为已经和我的

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

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

    2024年02月01日
    浏览(14)
  • 网站项目通过钉钉机器人向钉钉群发送信息

    网站项目通过钉钉机器人向钉钉群发送信息

    PC网站内填好的数据发送至钉钉群,以钉钉机器人卡片形式发送 样例如图: 首先我使用的是vue前端和egg.js后端(基于node.js) 开发思路流程: 网页内填写数据(表单或者其他都可以) 将数据整理到一个data里 将钉钉API相关信息与data一起通过钉钉API接口传过去 实现功能,钉钉机

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

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

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

    2024年02月07日
    浏览(15)
  • 如何用JS写一套钉钉的机器人自动回复,要求调用chatgpt

    请注意,本文由chatgpt 3.5完成,请自行验证该回答的严谨性。 为了用JS编写一套钉钉机器人自动回复,调用ChatGPT,可以按照以下步骤: 创建一个钉钉机器人:在钉钉开放平台上创建一个机器人,并获取机器人的Webhook地址和密钥。 安装必要的依赖:使用Node.js环境,在项目根目

    2024年02月02日
    浏览(12)
  • java实现钉钉群机器人@机器人获取信息后,机器人回复(机器人接收消息)

    java实现钉钉群机器人@机器人获取信息后,机器人回复(机器人接收消息)

    1.需求 鉴于需要使用钉钉群机器人回复,人们提出的问题,需要识别提出的问题中的,后端进行处理实现对应的业务逻辑 2.实现方式 用户@群机器人,附带提出的问题,后端接收消息后识别消息内容,读取到进行对应的业务逻辑操作后,机器人获取返回的信息后

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

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

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

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

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

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

    2024年02月12日
    浏览(16)
  • 【AI】智能机器人回复调用青云客API

    【AI】智能机器人回复调用青云客API

    随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了如何制作一款智能机器人回复,降低了网站维护成本 ai机器人指它是计算机科学的一个分支。它涉及开发计算机程序来完成否则需要人类智能的任务。AI机器人可以解决

    2024年02月11日
    浏览(13)
  • AIGC开发:调用openai的API接口实现简单机器人

    AIGC开发:调用openai的API接口实现简单机器人

    开始进行最简单的使用:通过API调用openai的模型能力 OpenAI的能力如下图: OpenAI 的文本生成模型(通常称为生成式预训练 Transformer 或大型语言模型)经过训练可以理解自然语言、代码和图像。这些模型提供文本输出来响应其输入。这些模型的输入也称为“提示”。设计提示本

    2024年02月03日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包