/// <summary> /// 发送连接消息 /// </summary> /// <param name="linkUrl"></param> /// <param name="picUrl"></param> /// <param name="title"></param> /// <param name="description"></param> /// <param name="openId"></param> /// <param name="accessToken"></param> /// <returns></returns> public async Task SendUrlMessageAsync(string linkUrl, string picUrl, string title, string description, string openId, string accessToken) { JObject root = new JObject(); JObject contentJson = new JObject(); JObject articles = new JObject(); JArray array = new JArray { contentJson }; articles["articles"] = array; contentJson["url"] = linkUrl; contentJson["pic_url"] = picUrl; contentJson["title"] = title; contentJson["description"] = description; root["touser"] = openId; root["msgtype"] = "news"; root["news"] = articles; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/custom/send"), new Dictionary <string, string> { { "access_token", accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); }
public ActionResult PrStaffRoleConfig() { var rsp = WeChatHelper.PostService <DeptStaff, DeptStaffResponse>("DeptStaff", new DeptStaff { RequestType = 0, CurrDept = Session["DepartNo"].CastTo(""), CurrOper = Session["StaffNo"].CastTo("") }); List <InsideDepart> departList = rsp.Departs.ToList(); departList.Add(new InsideDepart { DEPARTNO = "", DEPARTNAME = "--请选择--" }); List <InsideStaff> staffList = rsp.Staffs.ToList(); staffList.Add(new InsideStaff { STAFFNO = "", STAFFNAME = "--请选择--", DEPARTNO = "" }); ViewBag.Staffs = JsonConvert.SerializeObject(staffList.OrderBy(p => p.STAFFNO)); ViewBag.Departs = JsonConvert.SerializeObject(departList.OrderBy(p => p.DEPARTNO)); GridBusinessRule girdBusinessRule = new GridBusinessRule("员工角色信息维护"); girdBusinessRule.GridId = "PrStaffRoleConfig"; girdBusinessRule.ToolbarItem = "search"; girdBusinessRule.PrimaryKey = "ROLENO"; girdBusinessRule.AutoSearch = false; girdBusinessRule.IsClosedQueryModal = "false"; girdBusinessRule.GridDataUrl = Url.Action("QueryPrStaffNoRole"); girdBusinessRule.PermmitUrl = Url.Action("ModifyPrStaffRole"); return(View(girdBusinessRule)); }
public ActionResult SendMsg(string roleNos, string departNos, string staffNos, string grade, string title, string content, string fileName, string fileData, string fileNo) { if (fileNo == "undefined") { fileNo = ""; } byte[] myByte = null; if (string.IsNullOrEmpty(fileNo) && !string.IsNullOrEmpty(fileData)) { myByte = Convert.FromBase64String(fileData.Split(",")[1]); } List <string> roleList = roleNos.Split(",").ToList(); List <string> departList = departNos.Split(",").ToList(); List <string> staffList = staffNos.Split(",").ToList(); Msg request = new Msg { RequestType = 6, Roles = roleList, Departs = departList, StaffNos = staffList, Level = grade, Title = title.Split("发送于")[0].Trim(), Content = content, FileName = fileName, UpLoadFile = myByte, FileNo = fileNo, DepartNo = Session["DepartNo"].CastTo(""), StaffNo = Session["StaffNo"].CastTo("") }; string response = WeChatHelper.PostService("Msg", request); return(Json(response, JsonRequestBehavior.DenyGet)); }
/// <summary> /// 获取微信配置信息 /// </summary> /// <returns></returns> public ActionResult GetWeChatConfig() { GetJsApiAccessTokenModel model = new GetJsApiAccessTokenModel(); model.sAppId = sAppId; model.sAppSecret = sAppSecret; IWeChatRequest request = new GetJsApiAccessTokenRequest(); var respone = request.Execute <GetJsApiAccessTokenRespone>(model); string noncestr = WeChatHelper.GetRandomStr(); long timestamp = WeChatHelper.GetTimeStamp(); string sign = ""; if (respone.errcode == 0) { string url = Request.UrlReferrer.AbsoluteUri; var paramters = new Dictionary <string, string>(); paramters.Add("jsapi_ticket", respone.ticket); paramters.Add("noncestr", noncestr); paramters.Add("timestamp", timestamp.ToString()); paramters.Add("url", url); sign = WeChatHelper.CreateSha1Sign(paramters); //返回的配置 paramters.Add("appId", sAppId); paramters.Add("signature", sign); result.success = true; result.data = paramters; } else { //公众号配置信息错误 result.info = "公众号配置信息错误"; result.success = false; } return(Content(JsonHelper.ToJsonString(result))); }
private static WeChatAppMessage PrepareMessage(string argument) { string[] parts = argument.Split(' '); WeChatAppMessage result = new WeChatAppMessage(); result.Title = GetArgumentByIndex(parts, 0); string fileInfo = GetArgumentByIndex(parts, 1); int fileID = 0; if (int.TryParse(fileInfo, out fileID)) { result.FileID = fileID; } else { result.FileID = WeChatHelper.UploadFile(fileInfo, WeChatRequestContext.Current.LoginInfo).Content; } result.Content = GetArgumentByIndex(parts, 2); result.Author = GetArgumentByIndex(parts, 3); return(result); }
/// <summary> /// 输出用户输入的信息 /// </summary> /// <param name="tm"></param> /// <returns></returns> public string DefaultHandler(TextMessage tm) { if (tm.Content.Contains("查询")) { tm.Content = "http://www.baidu.com"; } else if (tm.Content.Contains("天气")) { tm.Content = "http://www.weather.com.cn/"; } else if (tm.Content.Contains("openid")) { tm.Content = tm.FromUserName; } else { tm.Content = "你说的是:" + tm.Content; } string toOpenid = tm.ToUserName; tm.ToUserName = tm.FromUserName; tm.FromUserName = toOpenid; tm.CreateTime = WeChatHelper.WeChatNowTime(); return(tm.GenerateContent()); }
/// <summary> /// 输出用户输入的信息 /// </summary> /// <param name="tm"></param> /// <returns></returns> public string DefaultHandler(TextMessage tm) { DailyDishHelper ddh = new DailyDishHelper(); ddh.CreateUser(tm.FromUserName, "waiting.."); if (tm.Content.Contains("1")) { tm.Content = "请点此链接设置个人口味:" + ConfigurationManager.AppSettings["WechatUrl"] + tm.FromUserName; } else if (tm.Content.Contains("2")) { DishesModel model = ddh.GetDishByUser(tm.FromUserName); ddh.SaveRecommendHistory(tm.FromUserName, model.Id, model.Score, model.DishName); ddh.UpdateDishScore(tm.FromUserName, model.Id); tm.Content = "请点此链接查看你的专属推荐" + ConfigurationManager.AppSettings["RecommendUrl"] + tm.FromUserName;; } string toOpenid = tm.ToUserName; tm.ToUserName = tm.FromUserName; tm.FromUserName = toOpenid; tm.CreateTime = WeChatHelper.WeChatNowTime(); return(tm.GenerateContent()); }
private void SynchronizeGroups() { List <WeChatGroup> allGroups = new List <WeChatGroup>(); var allAccounts = AccountInfoAdapter.Instance.LoadAll(); foreach (var account in allAccounts) { WeChatRequestContext.Current.LoginInfo = WeChatHelper.ExecLogin(account.UserID, account.Password); Thread.Sleep(1000); WeChatGroupCollection groups = WeChatHelper.GetAllGroups(WeChatRequestContext.Current.LoginInfo); Thread.Sleep(1000); foreach (var group in groups) { group.AccountID = account.AccountID; allGroups.Add(group); } } foreach (var group in allGroups) { WeChatGroupAdapter.Instance.Update(group); } }
public async Task <bool> SendToWechat(IList <string> openids) { try { StallApplication.SysInfoFormat($"[MSG]start sending order {Id} to wechat"); //send message var msg = OwnerAlertMessage; var result = await WeChatHelper.SendMessageAsync(openids, msg); if (result) { StallApplication.SysInfoFormat($"[MSG]succeed sending order {Id} to wechat"); } else { StallApplication.SysInfoFormat($"[MSG]failed sending order {Id} to wechat"); } return(result); } catch (Exception ex) { StallApplication.SysError("[MSG]failed to send message", ex); return(false); } }
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.HttpContext.Session["StaffNo"] == null) { string strIp = ConfigurationManager.AppSettings["LoginIP"]; if (filterContext.HttpContext.Request.Cookies["strIp"] != null) { strIp = filterContext.HttpContext.Request.Cookies["strIp"].Value; } string script = "window.top.location.href= '/';"; filterContext.HttpContext.Response.Write("<script language=\"javascript\">" + script + "</script>"); return; } if (filterContext.HttpContext.Request.Url != null) { string url = filterContext.HttpContext.Request.Url.AbsolutePath.Substring(1).ToLower(); if (url != "") { ForeVerify request = new ForeVerify() { StaffNo = filterContext.HttpContext.Session["StaffNo"].ToString(), DepartNo = filterContext.HttpContext.Session["DepartNo"].ToString(), Url = url }; ForeVerifyResponse response = WeChatHelper.PostService <ForeVerify, ForeVerifyResponse>("ForeVerify", request); if (response.ResponseStatus.ErrorCode != "OK") { filterContext.Result = new ContentResult { Content = "权限错误" }; } } } }
/// <summary> /// 获取关注和未关注的用户列表 /// 最多拉取100条 /// </summary> /// <param name="accessToken"></param> /// <param name="openId"></param> /// <param name="lang"></param> /// <returns></returns> public async Task <dynamic> GetUserInfoListAsync(string accessToken, List <string> openId, string lang = "zh_CN") { var ids = new List <object>(); foreach (var id in openId) { ids.Add(new { openid = id, lang }); } var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/user/info/batchget"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, JsonConvert.SerializeObject(new { user_list = ids })); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 带证书的post /// </summary> /// <typeparam name="T"></typeparam> /// <param name="url"></param> /// <param name="obj"></param> /// <param name="cer"></param> /// <param name="result"></param> /// <param name="serializeStrFunc"></param> /// <param name="inputDataType"></param> /// <param name="outDataType"></param> /// <returns></returns> public T HttpPost <T>(string url, object obj, X509Certificate2 cer, out string result, Func <string, string> serializeStrFunc = null, WebRequestDataTypes inputDataType = WebRequestDataTypes.JSON, WebRequestDataTypes outDataType = WebRequestDataTypes.JSON) where T : class { string postStr = null; switch (inputDataType) { case WebRequestDataTypes.XML: postStr = XmlHelper.SerializeObject(obj); break; default: postStr = JsonConvert.SerializeObject(obj); break; } if (serializeStrFunc != null) { postStr = serializeStrFunc(postStr); } WeChatHelper.LoggerAction("api", "postStrs:" + postStr); result = HttpPost(url, postStr, cer); WeChatHelper.LoggerAction("api", "result:" + result); switch (outDataType) { case WebRequestDataTypes.XML: return(XmlHelper.DeserializeObject <T>(result)); default: return(JsonConvert.DeserializeObject <T>(result)); } }
public T HttpPost <T>(string url, object obj, out string result, Func <string, string> serializeStrFunc = null, WebRequestDataTypes inputDataType = WebRequestDataTypes.JSON, WebRequestDataTypes outDataType = WebRequestDataTypes.JSON) where T : class { string postStr = null; switch (inputDataType) { case WebRequestDataTypes.XML: postStr = XmlHelper.SerializeObject(obj); break; default: postStr = JsonConvert.SerializeObject(obj); break; } if (serializeStrFunc != null) { postStr = serializeStrFunc(postStr); } WeChatHelper.LoggerAction("api", string.Format("Pre POST Url:{0},Data:{1}", url, postStr)); result = HttpPost(url, postStr); WeChatHelper.LoggerAction("api", string.Format("POST Url:{0},result:{1}", url, result)); switch (outDataType) { case WebRequestDataTypes.XML: return(XmlHelper.DeserializeObject <T>(result)); default: return(JsonConvert.DeserializeObject <T>(result)); } }
/// <summary> /// 发送视频 /// </summary> /// <param name="videoMediaId">视频素材id</param> /// <param name="thumbMediaId">缩略图id</param> /// <param name="title">标题</param> /// <param name="description">描述</param> /// <param name="openId">接受消息的OpenId</param> /// <param name="accessToken">token</param> /// <returns></returns> public async Task SendVideoMessageAsync(string videoMediaId, string thumbMediaId, string title, string description, string openId, string accessToken) { JObject root = new JObject(); JObject contentJson = new JObject(); contentJson["media_id"] = videoMediaId; contentJson["title"] = title; contentJson["thumb_media_id"] = thumbMediaId; contentJson["description"] = description; root["touser"] = openId; root["msgtype"] = "video"; root["video"] = contentJson; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/custom/send"), new Dictionary <string, string> { { "access_token", accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); }
//获取access_token protected string GetAccessToken(string appid, string appsecret) { if (string.IsNullOrEmpty(appid) || string.IsNullOrEmpty(appsecret)) { return(null); } string key = string.Format("WeChat.Access_Token_{0}_{1}", appid, appsecret); string access_token = DataCache.Get <string>(key); if (string.IsNullOrEmpty(access_token)) { var dict = WeChatHelper.GetAccessToken(appid, appsecret); if (dict != null && dict["access_token"] != null) { access_token = dict["access_token"].ToString(); DataCache.Remove(key); DataCache.Add(key, access_token, new TimeSpan(0, 0, int.Parse(dict["expires_in"].ToString()) - 200)); } } return(access_token); }
private bool sendmessage(string openid, string userid) { DataSet dtWeiXinMsg = TmoShare.getDataSetFromXML(tmo_wechat_consulting); //dtWeiXinMsg.Tables[0].Clear(); DataRow newRow = dtWeiXinMsg.Tables[0].NewRow(); newRow["we_id"] = openid; newRow["con_content"] = "医生主动咨询"; newRow["reply_content"] = ask_content.Text; newRow["input_time"] = System.DateTime.Now; newRow["update_time"] = System.DateTime.Now; newRow["user_id"] = userid; newRow["doc_id"] = TmoComm.login_docInfo.doc_id.ToString(); newRow["con_id"] = Guid.NewGuid().ToString("N"); dtWeiXinMsg.Tables[0].Rows.InsertAt(newRow, 0); dtWeiXinMsg.AcceptChanges(); bool answer = (bool)(TmoServiceClient.InvokeServerMethodT <bool>(funCode.AddAsk, new object[] { TmoCommon.TmoShare.getXMLFromDataSet(dtWeiXinMsg) })); if (answer) { string data = @"<data> <first> <value></value> <color></color> </first> <keyword1> <value></value> <color></color> </keyword1> <keyword2> <value></value> <color></color> </keyword2> <remark> <value></value> <color></color> </remark> </data>"; DataSet ds = TmoShare.getDataSetFromXML(data); ds.Tables["first"].Rows[0]["value"] = "尊敬的用户,医生对您进行了提问:"; ds.Tables["first"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray); ds.Tables["keyword1"].Rows[0]["value"] = "无"; ds.Tables["keyword1"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray); ds.Tables["keyword2"].Rows[0]["value"] = ask_content.Text; ds.Tables["keyword2"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray); ds.Tables["remark"].Rows[0]["value"] = "感谢您的使用!"; ds.Tables["remark"].Rows[0]["color"] = TmoShare.RGBToWebColor(Color.Gray); string content = TmoCommon.TmoShare.GetXml_NO_TITLE(ds); string templateID = ConfigHelper.GetConfigString("WX_TEMPLATE_RSID");//模板 string err_tip = WeChatHelper.WXTemplateMsgSend(new object[] { "admin", openid, templateID, "", TmoShare.RGBToWebColor(Color.Green), content }); return(true); } else { return(false); } }
/// <summary> /// 上传永久素材视频 /// </summary> /// <param name="fileType"></param> /// <param name="stream"></param> /// <param name="accessToken"></param> /// <param name="title"></param> /// <param name="desc"></param> /// <returns></returns> public async Task <dynamic> UploadPermanentFile(FileType fileType, FileStream stream, string accessToken, string title, string desc) { var urlParam = new Dictionary <string, string> { { WeChatParameterKey.Access_Token, accessToken }, { "type", fileType.ToString() }, { WeChatConstant.AccessToken, accessToken } }; var bodyParam = new Dictionary <string, string> { { "title", title }, { "introduction", desc } }; var response = await _client.ExecuteUploadFileRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/material/add_material"), urlParam, bodyParam, stream); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
public async Task <MessageModel <WeChatApiDto> > GetToken(string publicAccount) { var config = await this.QueryById(publicAccount); if (config == null) { MessageModel <string> .Success($"公众号{publicAccount}未维护至系统"); //还没过期,直接返回 } if (config.tokenExpiration > DateTime.Now) { //再次判断token在微信服务器是否正确 var wechatIP = await WeChatHelper.GetWechatIP(config.token); if (wechatIP.errcode == 0) { MessageModel <WeChatApiDto> .Success("", new WeChatApiDto { access_token = config.token });//还没过期,直接返回 } } //过期了,重新获取 var data = await WeChatHelper.GetToken(config.appid, config.appsecret); if (data.errcode.Equals(0)) { config.token = data.access_token; config.tokenExpiration = DateTime.Now.AddSeconds(data.expires_in); await this.Update(config); return(MessageModel <WeChatApiDto> .Success("", data)); } else { return(MessageModel <WeChatApiDto> .Fail($"\r\n获取Token失败\r\n错误代码:{data.errcode}\r\n错误信息:{data.errmsg}")); } }
// GET: Auth/WxCallback public ActionResult WxCallback() { LogHelper.Debug(string.Format("Call Auth/WxCallback. RawUrl:[{0}]", Request.RawUrl)); var code = Request["code"]; if (string.IsNullOrEmpty(code)) { ViewBag.Message = "没有返回code参数"; return(View()); } var redirectKey = Request["rid"]; if (redirectKey != null) { redirectKey = redirectKey.ToLower(); } if (!AppContext.AuthRedirectDictionary.ContainsKey(redirectKey)) { ViewBag.Message = "回调参数错误"; return(View()); } var authRedirect = AppContext.AuthRedirectDictionary[redirectKey]; var weChatHelper = WeChatHelper.GetInstance(authRedirect.CompanyCode); var accessToken = weChatHelper.GetAuthAccessToken(code); var paramString = string.Empty; if (authRedirect.NeedUserInfo && accessToken != null) { WeChatUserSnsInfo userInfo = null; if (authRedirect.IsUserInfoScope) { userInfo = weChatHelper.GetUserSnsInfo(accessToken.access_token, accessToken.openid); } else { userInfo = weChatHelper.GetUserBasicInfo(accessToken.openid); } if (userInfo != null) { paramString = userInfo.GetBasicInfoString(); } } else { var openId = accessToken == null ? string.Empty : accessToken.openid; paramString = "openid=" + openId; } var redirectUrl = HttpUtility.UrlDecode(authRedirect.RedirectUrl); if (redirectUrl.Contains("?")) { redirectUrl = string.Concat(redirectUrl, "&", paramString); } else { redirectUrl = string.Concat(redirectUrl, "?", paramString); } LogHelper.Debug(string.Format("Call Auth/WxCallback. RedirectUrl:[{0}]", redirectUrl)); return(Redirect(redirectUrl)); }
/// <summary> /// 获取ACCESS_TOKEN方法 /// </summary> /// <param name="appId"></param> /// <param name="appSecret"></param> /// <returns></returns> private static string GetAccessToken(string appId, string appSecret) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret); string result = WeChatHelper.GetData(url); if (result.Contains("40164")) { LogHelper.Write("TokenModel_GetAccessToken出错:" + result); return(null); } XmlDocument doc = JsonHelper.ParseJson(result, "root"); XmlNode root = doc.SelectSingleNode("root"); if (root != null) { XmlNode access_token = root.SelectSingleNode("access_token"); if (access_token != null) { GetAccessToken_Time = DateTime.Now; if (root.SelectSingleNode("expires_in") != null) { Expires_Period = int.Parse(root.SelectSingleNode("expires_in").InnerText); } return(access_token.InnerText); } else { GetAccessToken_Time = DateTime.MinValue; } } return(null); }
/// <summary> /// 获取Jsapi_ticket方法 /// </summary> /// <param name="appId"></param> /// <param name="appSecret"></param> /// <returns></returns> private static string GetJsapi_ticket(string appId, string appSecret) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", TokenModel.AccessToken); string result = WeChatHelper.GetData(url); XmlDocument doc = JsonHelper.ParseJson(result, "root"); XmlNode root = doc.SelectSingleNode("root"); if (root != null) { XmlNode ticket = root.SelectSingleNode("ticket"); if (ticket != null) { GetJsapi_ticket_Time = DateTime.Now; if (root.SelectSingleNode("expires_in") != null) { Jsapi_ticket_Expires_Period = int.Parse(root.SelectSingleNode("expires_in").InnerText); } return(ticket.InnerText); } else { GetJsapi_ticket_Time = DateTime.MinValue; } } return(null); }
public async Task <dynamic> PreviewAsync(string mediaId, string accessToken, string openId, int reprint = 0) { JObject root = new JObject(); JObject media = new JObject { ["media_id"] = mediaId }; root["mpnews"] = media; root["msgtype"] = "mpnews"; root["send_ignore_reprint"] = reprint; root["touser"] = openId; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/preview"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 通过标签群发文章 /// </summary> /// <param name="all">是否群发</param> /// <param name="tagId"></param> /// <param name="mediaId">文档id</param> /// <param name="accessToken">token</param> /// <param name="reprint">被转载是是否继续群发</param> /// <returns></returns> public async Task <dynamic> SendArticleMessageByLabelAsync(bool all, string tagId, string mediaId, string accessToken, int reprint = 0) { JObject root = new JObject(); JObject filter = new JObject(); JObject media = new JObject(); filter["is_to_all"] = all; filter["tag_id"] = tagId; media["media_id"] = mediaId; root["filter"] = filter; root["mpnews"] = media; root["msgtype"] = "mpnews"; root["send_ignore_reprint"] = reprint; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"), new Dictionary <string, string> { { accessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 通过标签群发文本消息 /// </summary> /// <param name="all"></param> /// <param name="tagId"></param> /// <param name="content"></param> /// <param name="accessToken"></param> /// <returns></returns> public async Task <dynamic> SendTextMessageByLabelAsync(bool all, string tagId, string content, string accessToken) { JObject root = new JObject(); JObject filter = new JObject(); JObject text = new JObject(); filter["is_to_all"] = all; filter["tag_id"] = tagId; text["content"] = content; root["filter"] = filter; root["text"] = text; root["msgtype"] = "text"; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 通过OpenId群发音频 /// </summary> /// <param name="mediaId"></param> /// <param name="accessToken"></param> /// <param name="user"></param> /// <returns></returns> public async Task <dynamic> SendVoiceMessageByOpenIdAsync(string mediaId, string accessToken, params string[] user) { JObject root = new JObject(); JObject filter = new JObject(); JObject voice = new JObject { ["media_id"] = mediaId }; root["filter"] = filter; root["voice"] = voice; root["msgtype"] = "voice"; root["touser"] = new JArray(user); var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/send"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 通过OpenId群发文本消息 /// </summary> /// <param name="content"></param> /// <param name="accessToken"></param> /// <param name="user"></param> /// <returns></returns> public async Task <dynamic> SendTextMessageByOpenIdAsync(string content, string accessToken, params string[] user) { JObject root = new JObject(); JObject text = new JObject { ["content"] = content }; root["text"] = text; root["msgtype"] = "text"; root["touser"] = new JArray(user); var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/send"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
/// <summary> /// 通过标签群视频 /// </summary> /// <param name="all"></param> /// <param name="tagId"></param> /// <param name="mediaId"></param> /// <param name="title"></param> /// <param name="description"></param> /// <param name="accessToken"></param> /// <returns></returns> public async Task <dynamic> SendVideoMessageByLabelAsync(bool all, string tagId, string mediaId, string title, string description, string accessToken) { JObject root = new JObject(); JObject filter = new JObject(); JObject video = new JObject { ["media_id"] = mediaId, ["title"] = title, ["description"] = description }; filter["is_to_all"] = all; filter["tag_id"] = tagId; root["filter"] = filter; root["mpvideo"] = video; root["msgtype"] = "mpvideo"; var response = await _client.ExecutePostRequest( WeChatHelper.GetWeChatApiDomain("/cgi-bin/message/mass/sendall"), new Dictionary <string, string> { { WeChatConstant.AccessToken, accessToken } }, root.ToString()); JObject result = JObject.Parse(response); WeChatHelper.CheckResponseStatus(result); return(result.ToObject <dynamic>()); }
public ActionResult MsgMe() { //notify var openId = CurrentUser.SnsInfos[WeChatClaimTypes.OpenId].InfoValue; HostingEnvironment.QueueBackgroundWorkItem(x => WeChatHelper.SendMessageAsync(openId, "this is a test message")); return(Content($"test message was sent to {openId}")); }
public JsonActionResult <WeChatUserInfo> GetUserBasicInfoOfMiniProgram(string companyCode, string code) { return(SafeExecute(() => { var weChatHelper = WeChatHelper.GetInstance($"{companyCode}_m"); return weChatHelper.GetUserBasicInfoOfMiniProgram(code); })); }
public JsonActionResult <WeChatUserInfo> GetUserBasicInfo(string companyCode, string openID) { return(SafeExecute(() => { var weChatHelper = WeChatHelper.GetInstance(companyCode); return weChatHelper.GetUserBasicInfo(openID); })); }