钉钉开发之在自研系统上使用机器人给钉钉的群或个人工作通知发送消息

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) {
                 
                }
            });
        }

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

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

方法代码

  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", "我就是我, 是不一样的烟火"); 
            string json1 = JsonConvert.SerializeObject(dic1);

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

           
        }

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

dic1用于放置content

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

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

string json1 = JsonConvert.SerializeObject(dic1);

dic用于设置

msgtype

text

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

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

Config.HttpPost(url, json);

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

猜你喜欢

转载自blog.csdn.net/ChickenBro_/article/details/86527368