1.给群发送消息

①首先需要放置一个自定义机器人(在个人信息下方的机器人管理里面),并选择你想要接收消息的群,之后取得这个机器人的webhook地址。

②写一个测试类,测试能不能用该方法给钉钉发送消息。方法的具体实现钉钉文档里有提供,我们只需要稍作修改

public class Robot2 {//机器人在团队里发送消息   方法二
	
	public static void main(String[] args) {		
		// TODO Auto-generated method stub
		//机器人地址
		DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=1438ad92a60e6b713699c16b1028eb5ba588cee4443bc434ef0dde947411f7ca");
		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对象,用于@用户
		at.setAtMobiles(Arrays.asList(//需要@的人
				"157****5214",
				"181****6312"
				));		
		request.setAt(at);
		OapiRobotSendResponse response;
		try {
			response=client.execute(request);
		} catch (ApiException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

2.给个人工作通知发送消息

给个人通知发送消息原理跟上述的一样。也是需要先在个人工作通知里面设置一个机器人,获取到webhook地址,再根据此地址请求。代码只需改动url请求地址就行。

3.在自研系统上写入该方法。C#

这一步才是真正开发的难点。如果你开发的系统是用Java/Php/Nodejs/Python语言,那么会方便一点,钉钉里面有提供相应的SDK供后端更方便的开发,文档提供的示例代码你可以直接参考着用。但由于我们用的是C#语言,所以很多类与方法要自己找。同时传入传出的数据格式、请求路径的要求,要满足钉钉的规定,否则将不能成功请求到。

钉钉对于需要参数的要求在文档里面有写,具体开发时要注意这些细节

①首先在自研系统前端页面里面写一个事件和JS函数,利用ajax请求方法,这里type类型为post,这就是钉钉的硬性规定。

function multiSearch() {
            $.ajax({
                url: "DDMessage",
                type: "POST",
                success: function (result) {
                 
                }
            });
        }

②在控制器里面写你要实现的方法

这个是钉钉文档规定的要求:

 

钉钉 Java 发消息 钉钉发送消息_钉钉 Java 发消息

方法代码

public void DDMessage()
        {    
            string url = "https://oapi.dingtalk.com/robot/send?access_token=1438ad92a60e6b713699c16b1028eb5ba588cee4443bc434ef0dde947411f7ca";
            //输出文本
            Dictionary<string, object> dic = new Dictionary<string, object>();//这里用的是数据字典的方法,传入一个字符串和对象                       
            Dictionary<string, object> dic1 = new Dictionary<string, object>();

            dic1.Add("content", "我就是我, 是不一样的烟火");  
          
            dic.Add("msgtype", "text");
            dic.Add("text", dic1 );
           
            string json = JsonConvert.SerializeObject(dic);//{"key1":"val1","key2":"val2"}   
            Config.HttpPost(url, json);

           
        }

这里面我写了创建了两个数据字典Dictionary对象,dic和dic1

dic1用于放置content

dic1.Add("content", "我就是我, 是不一样的烟火");

dic用于设置

msgtype

text

并且钉钉要求请求的时候,传入的参数(一个地址一个文本)中,文本内容为JSON格式,所以我们需要将文本内容转换为JSON格式。

dic.Add("msgtype", "text");
 dic.Add("text", dic1);
string json = JsonConvert.SerializeObject(dic);//{"key1":"val1","key2":"val2"}

最后就是将地址和整个文本传过去

Config.HttpPost(url, json);

开发时要注意文档的一些细节,比如文本格式,字符串编码。