目录
由于最近小编有一项对接钉钉的接口去做,所以利用这个机会把配置钉钉机器人的方法在这里分享一下,主要应用机器人发送提醒消息使用
1.首先你要有个钉钉群,然后打开右上角设置
-
钉钉新建机器人
添加机器人
-
机器人选择加签模式
在这里要记住Webhook和加签的秘钥,因为后续我们在代码中会使用到
-
代码应用
#region 钉钉加签
// 获取毫秒时间戳
long shijianchuo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
//webhook 机器人的token
string Webhook = "xxx.xxx.xxx?access_token=xxx";
//加签 签名
string Secret = "*************";
// 获取签名值
string sign = addSign(shijianchuo, Secret);
string url = $"{Webhook}×tamp={shijianchuo}&sign={sign}";
SendTemplate obj = new SendTemplate
{
msgtype = "text",
text = new SendContent
{
content = "测试消息内容",//这里是消息内容
}
};
var json = JsonConvert.SerializeObject(obj);
Console.WriteLine(url);
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
var response = await client.PostAsJsonAsync(url, obj);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
var returvalue = JsonConvert.DeserializeObject<MessageTemplate>(result)!;
if (returvalue.errmsg.Equals("ok", StringComparison.OrdinalIgnoreCase))
{
Console.Write($"发送成功");
}
else
{
Console.Write($"发送失败");
}
Console.ReadKey();
/// <summary>
/// 加签
/// </summary>
/// <param name="zTime">当前时间戳</param>
/// <returns></returns>
string addSign(long zTime,string secret)
{
string stringToSign = zTime + "\n" + secret;
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(stringToSign);
using (var hmacsha256 = new HMACSHA256(keyByte))
{
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return HttpUtility.UrlEncode(Convert.ToBase64String(hashmessage), Encoding.UTF8);
}
}
#endregion
在本代码中用到的模型
public class SendTemplate
{
public string msgtype { get; set; } = "text";
public SendContent text { get; set; } = default!;
}
public class SendContent
{
public string content { get; set; } = "消息的内容";
}
public class MessageTemplate
{
public int errcode { get; set; }
public string errmsg { get; set; } = default!;
}
-
测试效果