首页 / C# / C#实现钉钉消息推送
C#实现钉钉消息推送
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#实现钉钉消息推送,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4474字,纯文字阅读大概需要7分钟。
内容图文
![C#实现钉钉消息推送](/upload/InfoBanner/zyjiaocheng/601/c9c11152b9434e359d15ab6f99f43e3f.jpg)
本文实例讲述了C#实现推送钉钉消息的方法。分享给大家供大家参考,具体如下:
利用钉钉提供的API可以推送消息到用户的钉钉app。根据钉钉的官方文档
1.首先登陆钉钉开发者后台 https://ding-doc.dingtalk.com/
2.选择H5微应用,创建应用
3.创建好了接口测试应用拿到对应的ID
4.废话不多说直接上代码
我们首先建立一个工具类,用于post get的请求
public class HelperTools
{
string DingAppkey = "ding4vnqvr37dshot4zh";//钉钉 应用的唯一标识key
string DingAppsecret = "6Dy4pH0JnFylnAFffkyWktV6chPJwp35AtEZS5DYXXOOO2E3S7LsaVzhYCa4-AXR";//钉钉 应用的密钥
public static string dingAccessToken = "1120087037"; //钉钉接口调用凭证
// <summary>
/// 调用钉钉的api需要一个AccessToken,我们先获取这个AccessToken。
/// </summary>
/// <returns></returns>
public string GetDingAccessToken()
{
string access_token = string.Empty;
try
{
string accessToken = string.Empty;
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.Appkey = DingAppkey;//钉钉 应用的唯一标识key
request.Appsecret = DingAppsecret;//钉钉 应用的密钥
request.SetHttpMethod("GET");
OapiGettokenResponse response = client.Execute(request);
access_token = response.AccessToken;
}
catch (Exception ex)
{
}
return access_token;
}
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <returns></returns>
public string Post(string url, Dictionary<string, string> dic)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region 添加Post 参数
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="dic">请求参数定义</param>
/// <returns></returns>
public string Get(string url, Dictionary<string, string> dic)
{
string result = "";
StringBuilder builder = new StringBuilder();
builder.Append(url);
if (dic.Count > 0)
{
builder.Append("?");
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(builder.ToString());
//添加参数
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
try
{
//获取内容
using (StreamReader reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
finally
{
stream.Close();
}
return result;
}
6.我们建立控制台程序
HelperTools tool = new HelperTools();
//这个接口是获取部门详细信息的
string urls = "https://oapi.dingtalk.com/topapi/v2/department/get";
Dictionary<string, string> listS = new Dictionary<string, string>();
listS.Add("access_token", tool.GetDingAccessToken().ToString());
listS.Add("dept_id", "469642677");
listS.Add("language", "zh_CN");
string str= tool.Get(urls,listS);
//这个是根据部门ID查询对应下面人的userid_list
string urlt = "https://oapi.dingtalk.com/topapi/user/listid";
Dictionary<string, string> listt = new Dictionary<string, string>();
listt.Add("access_token", tool.GetDingAccessToken().ToString());
listt.Add("dept_id", "469642677");
string strr = tool.Post(urlt, listt);
//这个是发送请求的接口 发送消息
Dictionary<string, string> list = new Dictionary<string, string>();
string url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + tool.GetDingAccessToken().ToString();
list.Add("agent_id", "1120087037");
list.Add("userid_list", "manager6916");
list.Add("dept_id_list", "469642677");
list.Add("to_all_user", "false");//这个false 可以针对单个部门 或者单个人,如果设成true 就是对全公司的发信息
//这个你只需要改content 里面的内容就可以了 这个内容不能重复 重复的话 就只能发一次
string Msg= "{\"msgtype\": \"text\",\"text\": {\"content\": \"月会通知"+DateTime.Now.ToString()+"\"}}";
list.Add("msg", Msg);
//这是返回调用接口的结果
string msg= tool.Post(url,list);
7.直接看效果图 接口的调用对应参数 ,钉钉文档有写
好了,这样就大功告成了!!!
内容总结
以上是互联网集市为您收集整理的C#实现钉钉消息推送全部内容,希望文章能够帮你解决C#实现钉钉消息推送所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。