using DSWeb.Areas.Dispatch.Helper; using DSWeb.Areas.MvcShipping.DB; using DSWeb.Areas.MvcShipping.Job; using log4net; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Runtime.Caching; using System.Web; namespace DSWeb.Areas.MvcShipping.Helper { public static class DingTalkHelper { public static readonly string DingTalkAccessTokenStoreKey = "DingTalkToken"; private static ILog logger = LogManager.GetLogger("DingTalkHelper"); public static bool SendMessage(string uid, string msg) { DingTalkContext dingTalkContext = new DingTalkContext(); var pAgentid = dingTalkContext.ParamSets.FirstOrDefault(p => p.PARAMNAME == "DingTalkAgentid"); if (pAgentid == null || string.IsNullOrWhiteSpace(pAgentid.PARAMVALUE)) { throw new Exception("钉钉Agentid参数配置错误"); } var user = dingTalkContext.Users.FirstOrDefault(u => u.GID == uid); if (user != null && !string.IsNullOrWhiteSpace(user.DingTalkAccount)) { var token = MemoryCache.Default[DingTalkTokenJob.DingTalkAccessTokenStoreKey].ToString(); var json = new { agent_id = pAgentid.PARAMVALUE, userid_list = user.DingTalkAccount, msg = new { msgtype = "text", text = new { content = msg } } }; string resp = WebRequestHelper.DoPost($"https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token={token}", JsonConvert.SerializeObject(json)); logger.Debug(resp); var jsonObj = JsonConvert.DeserializeAnonymousType(resp, new { errcode = 0, errmsg = "", task_id = "" }); if (jsonObj.errcode == 0) { return true; } } return false; } } }