/// <summary> /// 根据OpenID列表群发卡券消息(目前该接口仅支持填入非自定义code的卡券,自定义code的卡券需先进行code导入后调用。 ) /// </summary> /// <param name="value">群发卡券时传入cardId</param> /// <param name="openIds">openId字符串数组(OpenID最少2个,最多10000个 )</param> /// <returns></returns> public ActionResult SendGroupMessageByOpenId(string value, string openIds) { if (!VerifyParam("value,openIds")) { return(ErrMsg()); } string[] openIdArr = openIds.Split(','); var weChatConfig = GetWechatConfig(); var ret = GroupMessageApi.SendGroupMessageByOpenId(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, GroupMessageType.wxcard, value, 1000, openIdArr); if (ret.errcode == Weixin.ReturnCode.请求成功) { return(Json(new { message = "", success = true, msg_id = ret.msg_id })); } else { return(Json(new { message = ret.errmsg, success = false }, JsonRequestBehavior.AllowGet)); } }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { string accessToken = Wx.accessToken; List <NewsModel> News = new List <NewsModel>(); int count; int.TryParse(Request.Form["lineCount"], out count); string Author = "计算机应用技术2班20150301241梁阔雄"; string AuthorID = Request.Form["AuthorID"]; for (int i = 0; i < count; ++i) { var file = Request.Files["Img" + i.ToString()]; if (file != null && !string.IsNullOrEmpty(file.FileName)) { var r = Media2.UploadForeverMedia(Wx.accessToken, file); News.Add(new NewsModel { title = Request.Form["Title" + i.ToString()], content = Request.Form["Content" + i.ToString()], content_source_url = Request.Form["Url" + i.ToString()], author = Author, thumb_media_id = r.media_id }); } } if (News.Count > 0) { var r1 = MediaApi.UploadNews(Wx.accessToken, News.ToArray()); var r2 = GroupMessageApi.SendGroupMessagePreview(Wx.accessToken, GroupMessageType.mpnews, r1.media_id, AuthorID); ClientScript.RegisterStartupScript(GetType(), "1", "alert('成功发送消息');", true); } } }
public static RequestApiResult <WeixinGroupMessagePreviewResult> Preview(DomainContext domainContext, WeixinGroupMessagePreviewArgs args) { string accessToken = domainContext.AccessToken; RequestApiResult <WeixinGroupMessagePreviewResult> result = GroupMessageApi.Preview(accessToken, args); if (result.Success == false) { if (result.Retry) { if (result.ApiError.ErrorCode == 40001) { accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken); } result = GroupMessageApi.Preview(accessToken, args); if (result.Success == false) { _log.Write("GroupMessageApi.Preview 失败", result.GetDetail(), TraceEventType.Warning); } } else { _log.Write("GroupMessageApi.Preview 失败", result.GetDetail(), TraceEventType.Warning); } } return(result); }
/// <summary> /// 删除群发消息 /// </summary> /// <param name="accessToken"></param> /// <param name="mediaId">发送出去的消息ID</param> /// <returns></returns> public static WxJsonResult DeleteSendMessage(string mediaId) { //获取accessToken string accessToken = GetAccessToken(); return(GroupMessageApi.DeleteSendMessage(accessToken, mediaId)); }
public WxJsonResult SendMedia(Wx_App app, long mediaId, bool isToAll = true) { var media = Get(mediaId); var result = GroupMessageApi.SendGroupMessageByGroupId(app.AppId, null, media.MediaId, GetMessageType(media.Type), isToAll); WriteSendLog(mediaId, result); return(result); }
public void GetVideoMediaIdResultTest() { string mediaId = "Qk7qR9oZGG1CyzJ8ik3j3nElgY5xETEFAiTLrMsZJs9iAKarM7DopvxbREE7fINU"; var accessToken = AccessTokenContainer.GetAccessToken(_appId); var result = GroupMessageApi.GetVideoMediaIdResult(accessToken, mediaId, "test", "test"); Assert.IsTrue(result.media_id.Length > 0); }
public void PreviewMedia(Wx_App app, long mediaId, string wxNames) { var media = Get(mediaId); wxNames.Split(',').Each(wxName => { GroupMessageApi.SendGroupMessagePreview(app.AppId, GetMessageType(media.Type), media.MediaId, null, wxName); }); }
public async Task PreviewSendAsync(string accessTokenOrAppId, MaterialType materialType, string value, string wxName) { if (string.IsNullOrEmpty(value) || string.IsNullOrWhiteSpace(wxName)) { return; } await GroupMessageApi.SendGroupMessagePreviewAsync(accessTokenOrAppId, GetGroupMessageType(materialType), value, null, StringUtils.Trim(wxName)); }
public void GetGroupMessageResultTest() { var msgId = SendImageByOpenIdTest(); var accessToken = AccessTokenContainer.GetAccessToken(_appId); var result = GroupMessageApi.GetGroupMessageResult(accessToken, msgId); Assert.IsTrue(result.msg_id.Length > 0); Assert.AreEqual(result.msg_status, "SEND_SUCCESS"); }
public void SendGroupMessagePreviewTest() { var videoMediaIdResult = GetVideoMediaIdResultTest(); var groupSendResult = GroupMessageApi.SendGroupMessagePreview(_appId, GroupMessageType.video, videoMediaIdResult.media_id, _testOpenId); Console.WriteLine("AppId:" + _appId); Console.WriteLine("OpenId:" + _testOpenId); Assert.IsNotNull(groupSendResult); Console.WriteLine(groupSendResult.ToJson()); }
public void SendTextByOpenIdTest() { string content = "文本内容"; string[] openIds = new string[] { _testOpenId }; var accessToken = AccessTokenContainer.GetToken(_appId); var result = GroupMessageApi.SendTextGroupMessageByOpenId(accessToken, content, Config.TIME_OUT, openIds); Assert.IsTrue(result.msg_id.Length > 0); }
/// <summary> /// 根据分组群发卡券消息(目前该接口仅支持填入非自定义code的卡券,自定义code的卡券需先进行code导入后调用。 ) /// </summary> /// <param name="groupId">群发到的分组的group_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写group_id</param> /// <param name="value">群发卡券时传入cardId</param> /// <param name="isToAll">用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户</param> /// <returns></returns> public ActionResult SendGroupMessageByGroupId(string groupId, string value, bool isToAll) { string is_toall = isToAll.ToString(); if (isToAll == true) { if (!VerifyParam("value,is_toall")) { return(ErrMsg()); } } else { if (!VerifyParam("groupId,value,is_toall")) { return(ErrMsg()); } if (string.IsNullOrEmpty(groupId)) { return(ErrMsg("groupId不能为空!")); } } if (string.IsNullOrEmpty(value)) { return(ErrMsg("cardId不能为空!")); } var weChatConfig = GetWechatConfig(); var ret = GroupMessageApi.SendGroupMessageByGroupId(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, groupId, value, GroupMessageType.wxcard, isToAll); if (ret.errcode == Weixin.ReturnCode.请求成功) { return(Json(new { message = "", success = true, msg_id = ret.msg_id })); } else { return(Json(new { message = ret.errmsg, success = false }, JsonRequestBehavior.AllowGet)); } }
public void SendImageByGroupIdTest() { string file = ""; //文件路径,以下以图片为例 string groupId = ""; //分组Id var accessToken = AccessTokenContainer.GetAccessToken(_appId); var mediaId = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id; var result = GroupMessageApi.SendGroupMessageByGroupId(accessToken, groupId, mediaId, GroupMessageType.image, false); Assert.IsTrue(result.msg_id.Length > 0); }
public async Task <SendResult> PreviewMatial(PreviewModel model) { Senparc.Weixin.MP.GroupMessageType previewType = Senparc.Weixin.MP.GroupMessageType.mpnews; if (model.MessageType == MpMessageType.mpnews.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.mpnews; } if (model.MessageType == MpMessageType.mpmultinews.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.mpnews; } if (model.MessageType == MpMessageType.text.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.text; } if (model.MessageType == MpMessageType.video.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.video; } if (model.MessageType == MpMessageType.voice.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.video; } if (model.MessageType == MpMessageType.image.ToString()) { previewType = Senparc.Weixin.MP.GroupMessageType.image; } var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> { Id = model.MpID }); var access_token = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(account.AppId, account.AppSecret); SendResult result = null; try { result = GroupMessageApi.SendGroupMessagePreview(access_token, previewType, model.MediaID, model.OpenID, wxName: model.WxAccount); } catch { try { access_token = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(account.AppId, account.AppSecret, true); result = GroupMessageApi.SendGroupMessagePreview(access_token, previewType, model.MediaID, model.OpenID, wxName: model.WxAccount); } catch (Exception e) { throw new UserFriendlyException(e.Message); } } return(result); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string sendCountTxt = Server.MapPath("sendcount.txt"); try { ddlSendCount.SelectedValue = File.ReadAllText(sendCountTxt); } catch { File.WriteAllText(sendCountTxt, "6"); ddlSendCount.SelectedValue = "6"; } for (int i = 0; i < 23; i++) { ddlHour.Items.Add( new ListItem(i.ToString() + "点", i.ToString()) ); } for (int i = 0; i < 60; i++) { ddlMinute.Items.Add( new ListItem(i.ToString() + "分", i.ToString()) ); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Server.MapPath("quartz_jobs.xml")); XmlNodeList elemList = xmlDoc.GetElementsByTagName("cron-expression"); var node = elemList[0]; string[] cronList = node.InnerText.Split(' ');//0 1 9 ? * TUE ddlMinute.SelectedValue = cronList[1]; ddlHour.SelectedValue = cronList[2]; txtResult.Text = OracleHelper.CanConnect(); if (txtResult.Text != "连接成功") { var accessToken = AccessTokenContainer.TryGetToken(WebConfigurationManager.AppSettings["LongNameAppId"], WebConfigurationManager.AppSettings["LongNameAppSecret"]); var json = GroupsApi.Get(accessToken); var groupId = json.groups.Find(p => p.name == "开发小组").id.ToString(); var content = " oracle数据库无法连接 异常信息为" + txtResult.Text; var sendResult = GroupMessageApi.SendTextGroupMessageByGroupId(accessToken, groupId, content, false); } } }
//[TestMethod] public string SendImageByOpenIdTest() { string file = "";//文件路径,以下以图片为例 string[] openIds = new string[] { _testOpenId }; var accessToken = AccessTokenContainer.GetAccessToken(_appId); var mediaId = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id; var result = GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.image, mediaId, Config.TIME_OUT, openIds); Assert.IsTrue(result.msg_id.Length > 0); return(result.msg_id); }
//[TestMethod] public string SendImageByOpenIdTest() { string file = "C:\\Users\\roman\\Pictures\\捕获.PNG";//文件路径,以下以图片为例 string[] openIds = new string[] { _testOpenId, "oIskUw5ONFqLqb4XUyLHQ7Lu5t64" }; var accessToken = AccessTokenContainer.GetAccessToken(_appId); var mediaId = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id; var clientMsgId = DateTime.Now.Ticks.ToString(); var result = GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.text, "你好lizejia", clientMsgId, Config.TIME_OUT, openIds); Assert.IsTrue(result.msg_id.Length > 0); return(result.msg_id); }
public async Task MassSendAsync(string accessTokenOrAppId, MaterialType materialType, string value, bool isToAll, string tagId, DateTime?runOnceAt) { if (runOnceAt.HasValue) { _taskManager.RunOnceAt(async() => { await GroupMessageApi.SendGroupMessageByTagIdAsync(accessTokenOrAppId, tagId, value, GetGroupMessageType(materialType), isToAll); }, runOnceAt.Value); } else { await GroupMessageApi.SendGroupMessageByTagIdAsync(accessTokenOrAppId, tagId, value, GetGroupMessageType(materialType), isToAll); } }
public void SendTextByGroupIdTest() { string content = "文本内容"; string groupId = "102";//分组Id var accessToken = AccessTokenContainer.GetToken(_appId); //发送给指定分组 var result = GroupMessageApi.SendTextGroupMessageByGroupId(accessToken, groupId, content, false); Assert.IsTrue(result.msg_id.Length > 0); //发送给所有人 var result_All = GroupMessageApi.SendTextGroupMessageByGroupId(accessToken, null, content, true); Assert.IsTrue(result.msg_id.Length > 0); }
/// <summary> /// 群发消息 /// </summary> /// <param name="type"> /// 群发类型Text = 0, /// News = 1, /// Music = 2, /// Image = 3, /// Voice = 4, /// Video = 5 /// <param name="groupId">要发送的用户分组ID 发给所有的时候可以不输入</param> /// <returns>返回消息ID</returns> public string SendGroupMessageAll(int type, int groupId = -1) { var accessToken = AccessTokenContainer.TryGetAccessToken(AppId, AppSecret); SendResult result = null; bool isToAll = (groupId == -1); string imgFilePath = Server.MapPath("~/logo.png"); switch ((ResponseMsgType)type) { case ResponseMsgType.Text: result = GroupMessageApi.SendGroupMessageByGroupId(accessToken, groupId.ToString(), "测试的群发文本内容---来自北盟网校", GroupMessageType.text, isToAll); break; case ResponseMsgType.Image: UploadTemporaryMediaResult mediaImage = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, imgFilePath); result = GroupMessageApi.SendGroupMessageByGroupId(accessToken, groupId.ToString(), mediaImage.media_id, GroupMessageType.image, isToAll); break; case ResponseMsgType.News: UploadTemporaryMediaResult mediaResultImage = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, imgFilePath); NewsModel[] newsModels = new NewsModel[5]; for (int i = 0; i < 5; i++) { newsModels[i] = new NewsModel(); newsModels[i].title = "标题" + i; newsModels[i].author = "作者"; newsModels[i].thumb_media_id = mediaResultImage.media_id; newsModels[i].show_cover_pic = "http://weixin.bamn.cn/logo.png"; newsModels[i].content = "内容"; newsModels[i].content_source_url = "http://www.bamn.cn"; newsModels[i].digest = "描述"; } var mediaResultNews = MediaApi.UploadTemporaryNews(accessToken, 10000, newsModels); result = GroupMessageApi.SendGroupMessageByGroupId(accessToken, groupId.ToString(), mediaResultNews.media_id, GroupMessageType.mpnews, isToAll); break; } return(result.errcode + "-" + result.errmsg); }
public void PreviewMpArticle(MpMediaArticlePreviewDto input) { var fans = _mpFanRepository.GetAll().Where(m => m.NickName == input.NickName && m.IsDeleted == false).ToList(); if (fans != null && fans.Count > 0) { foreach (var fan in fans) { var openId = fan.OpenID;//粉丝OpenId; var account = _accountRepository.FirstOrDefault(m => m.Id == input.MpID); var access_token = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(account.AppId, account.AppSecret); var result = GroupMessageApi.SendGroupMessagePreview(access_token, Senparc.Weixin.MP.GroupMessageType.mpnews, input.MediaID, openId); if (result.errcode != Senparc.Weixin.ReturnCode.请求成功) { result = GroupMessageApi.SendGroupMessagePreview(access_token, Senparc.Weixin.MP.GroupMessageType.mpnews, input.MediaID, openId); } } } }
public void AfterDeleteNewsTest() { var accessToken = AccessTokenContainer.GetAccessToken(_appId); var file = @"E:\1.jpg"; var result = MediaApi.UploadForeverMedia(accessToken, file); Assert.IsNotNull(result.media_id); var new1 = new NewsModel() { author = "test", content = "test", content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png", digest = "test", show_cover_pic = "1", thumb_media_id = result.media_id, title = "test" }; var new2 = new NewsModel() { author = "test", content = "test111", content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png", digest = "test", show_cover_pic = "1", thumb_media_id = result.media_id, title = "test" }; var result1 = MediaApi.UploadNews(accessToken, 10000, new1, new2); Assert.IsNotNull(result1.media_id); var clientMsgId = SystemTime.Now.Ticks.ToString(); GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.mpnews, result1.media_id, clientMsgId, 10000, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg"); //var result2 = MediaApi.UpdateForeverNews(accessToken, result1.media_id, 0, 10000, new2); MediaApi.DeleteForeverMedia(accessToken, result1.media_id); //Assert.AreEqual(result2.errcode, ReturnCode.请求成功); }
public VideoMediaIdResult GetVideoMediaIdResultTest() { var videoFilePath = ServerUtility.ContentRootMapPath("video-test.mp4"); Console.WriteLine("Video Path:" + videoFilePath); //上传视频 var uploadResult = MediaApi.UploadTemporaryMedia(_appId, UploadMediaFileType.video, videoFilePath); Console.WriteLine("Video Upload Result:" + uploadResult); string mediaId = uploadResult.media_id;//也可以通过对公众号发送视频获得 var result = GroupMessageApi.GetVideoMediaIdResult(_appId, mediaId, "test", "test"); Assert.IsNotNull(result); Console.WriteLine("GetVideoMediaIdResult" + result.ToJson()); Assert.IsNotNull(result.media_id); Assert.IsTrue(result.media_id.Length > 0); return(result); }
/// <summary> /// 群发图文消息给openidlsit用户 /// </summary> /// <param name="appId"></param> /// <param name="nextOpenId"></param> /// <returns></returns> public async Task <SendResult> SendNewsToGroupUsersAsync(string appId, string mediaId, string[] opendis) { return(await GroupMessageApi.SendGroupMessageByOpenIdAsync(appId, GroupMessageType.mpnews, mediaId, null, 1000, opendis)); }
public async Task <SendResult> SendGroupTextMessageByTagIdAsync(string appId, string tagId, string content, string clientmsgid) { return(await GroupMessageApi.SendGroupMessageByTagIdAsync(appId, tagId, content, GroupMessageType.text, false, false, clientmsgid, 10000)); }
/// <summary> /// 群发图文消息给所有用户 /// </summary> /// <param name="appId"></param> /// <param name="nextOpenId"></param> /// <returns></returns> public async Task <SendResult> SendNewsToAllUsersAsync(string appId, string mediaId) { return(await GroupMessageApi.SendGroupMessageByGroupIdAsync(appId, null, mediaId, GroupMessageType.mpnews, true, true)); }
public async Task <SendResult> SendGroupTextMessageByOpenIdsAsync(string appId, string content, string clientmsgid, params string[] openIds) { return(await GroupMessageApi.SendGroupMessageByOpenIdAsync(appId, GroupMessageType.text, content, clientmsgid, 10000, openIds)); }
public async Task <SendResult> SendNewsByTagIdAsync(string appId, string tagId, string mediaId, string clientmsgid) { return(await GroupMessageApi.SendGroupMessageByTagIdAsync(appId, tagId, mediaId, GroupMessageType.mpnews, true, false, clientmsgid, 10000)); }
public async Task <SendResult> SendGroupImageMessageByOpenIdAsync(string appId, string mediaId, params string[] openIds) { return(await GroupMessageApi.SendGroupMessageByOpenIdAsync(appId, GroupMessageType.image, mediaId, "" , 10000, openIds)); }
/// <summary> /// 预览图文消息-每日100次上限 /// </summary> /// <param name="appId"></param> /// <param name="openId"></param> /// <param name="articleId"></param> /// <returns></returns> public async Task <SendResult> SendNewsPreviewAsync(string appId, string openId, string mediaId) { var wxRet = await GroupMessageApi.SendGroupMessagePreviewAsync(appId, GroupMessageType.mpnews, mediaId, openId); return(wxRet); }