/// <summary> /// 处理语音请求 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage) { IWC_OfficalAccountsBLL account_BLL = new WC_OfficalAccountsBLL() { m_Rep = new WC_OfficalAccountsRepository(new Models.DBContainer()) }; //获得当前公众号 WC_OfficalAccountsModel account = account_BLL.GetById(Id); var responseMessage = CreateResponseMessage <ResponseMessageMusic>(); //上传缩略图 var uploadResult = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(account.AccessToken, UploadMediaFileType.image, Server.GetMapPath("~/Images/Logo.jpg")); //设置音乐信息 responseMessage.Music.Title = "天籁之音"; responseMessage.Music.Description = "播放您上传的语音"; responseMessage.Music.MusicUrl = "http://sdk.weixin.senparc.com/Media/GetVoice?mediaId=" + requestMessage.MediaId; responseMessage.Music.HQMusicUrl = "http://sdk.weixin.senparc.com/Media/GetVoice?mediaId=" + requestMessage.MediaId; responseMessage.Music.ThumbMediaId = uploadResult.media_id; return(responseMessage); }
/// <summary> /// 处理文字请求 /// </summary> /// <returns></returns> public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage) { IWC_OfficalAccountsBLL account_BLL = new WC_OfficalAccountsBLL() { m_Rep = new WC_OfficalAccountsRepository(new Models.DBContainer()) }; //获得当前公众号 WC_OfficalAccountsModel account = account_BLL.GetById(Id); IWC_MessageResponseBLL message_BLL = new WC_MessageResponseBLL() { m_Rep = new WC_MessageResponseRepository(new Models.DBContainer()) }; //只获取第一条匹配的条件作为信息 List <P_WC_GetResponseContent_Result> messageList = message_BLL.GetResponseContent(Id, requestMessage.Content); if (messageList.Count() > 0) { //文本方式 if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Text) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.CreateTime = ResultHelper.NowTime; responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = account.OfficalId; responseMessage.Content = messageList[0].TextContent; return(responseMessage); } //图文方式 else if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Image) { var responseMessage = CreateResponseMessage <ResponseMessageNews>(); foreach (var model in messageList) { responseMessage.Articles.Add(new Article() { Title = model.TextContent, Description = model.ImgTextContext, PicUrl = WebChatPara.SiteUrl + model.ImgTextUrl, Url = model.ImgTextLink }); } return(responseMessage); }//一般很少用到 else if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Voice) { var responseMessage = base.CreateResponseMessage <ResponseMessageMusic>(); responseMessage.Music.MusicUrl = WebChatPara.SiteUrl + messageList[0].MeidaUrl; responseMessage.Music.Title = messageList[0].TextContent; responseMessage.Music.Description = messageList[0].Remark; return(responseMessage); }//默认回复 else if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Default) { if (messageList[0].Category == (int)WeChatReplyCategory.Text) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.CreateTime = ResultHelper.NowTime; responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = account.OfficalId; responseMessage.Content = messageList[0].TextContent; return(responseMessage); } //图文方式 else if (messageList[0].Category == (int)WeChatReplyCategory.Image) { var responseMessage = CreateResponseMessage <ResponseMessageNews>(); foreach (var model in messageList) { responseMessage.Articles.Add(new Article() { Title = model.TextContent, Description = model.ImgTextContext, PicUrl = WebChatPara.SiteUrl + model.ImgTextUrl, Url = model.ImgTextLink }); } return(responseMessage); }//一般很少用到 else if (messageList[0].Category == (int)WeChatReplyCategory.Voice) { var responseMessage = base.CreateResponseMessage <ResponseMessageMusic>(); responseMessage.Music.MusicUrl = WebChatPara.SiteUrl + messageList[0].MeidaUrl; responseMessage.Music.Title = messageList[0].TextContent; responseMessage.Music.Description = messageList[0].Remark; return(responseMessage); } } //下面方式用到才启用 //视频方式 //位置 } var errorResponseMessage = requestMessage.CreateResponseMessage <ResponseMessageText>(); //因为没有设置errorResponseMessage.Content,所以这小消息将无法正确返回。 return(errorResponseMessage); }
/// <summary> /// 订阅(关注)事件 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { ValidationErrors errors = new ValidationErrors(); using (DBContainer db = new DBContainer()) { IWC_OfficalAccountsBLL account_BLL = new WC_OfficalAccountsBLL() { m_Rep = new WC_OfficalAccountsRepository(db) }; //获得当前公众号 WC_OfficalAccountsModel account = account_BLL.GetById(Id); //将用户提取到本地数据库 WC_UserModel userModel = new WC_UserModel(); IWC_UserBLL user_BLL = new WC_UserBLL() { m_Rep = new WC_UserRepository(db) }; UserInfoJson userJson = UserApi.Info(account.AccessToken, requestMessage.FromUserName); userModel.Id = ResultHelper.NewId; userModel.OpenId = userJson.openid; userModel.NickName = userJson.nickname; userModel.Sex = userJson.sex; userModel.Language = userJson.language; userModel.City = userJson.city; userModel.Province = userJson.province; userModel.Country = userJson.country; userModel.HeadImgUrl = userJson.headimgurl; userModel.SubscribeTime = ResultHelper.GetTimeByLong(userJson.subscribe_time); userModel.UnionId = userJson.unionid; userModel.Remark = userJson.remark; userModel.GroupId = userJson.groupid.ToString(); userModel.TagidList = string.Join(",", userJson.tagid_list.ToArray()); userModel.Subscribe = userJson.subscribe; userModel.OfficalAccountId = account.Id; user_BLL.Create(ref errors, userModel); IWC_MessageResponseRepository m_Rep = new WC_MessageResponseRepository(db); //订阅回复 List <WC_MessageResponse> messageList = m_Rep.GetSubscribeResponseContent(account.Id); if (messageList.Count() > 0) { if (messageList[0].Category == (int)WeChatReplyCategory.Text) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.CreateTime = ResultHelper.NowTime; responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = account.OfficalId; responseMessage.Content = messageList[0].TextContent; return(responseMessage); } //图文方式 else if (messageList[0].Category == (int)WeChatReplyCategory.Image) { var responseMessage = CreateResponseMessage <ResponseMessageNews>(); foreach (var model in messageList) { responseMessage.Articles.Add(new Article() { Title = model.TextContent, Description = model.ImgTextContext, PicUrl = WebChatPara.SiteUrl + model.ImgTextUrl, Url = model.ImgTextLink }); } return(responseMessage); } //一般很少用到 else if (messageList[0].Category == (int)WeChatReplyCategory.Voice) { var responseMessage = base.CreateResponseMessage <ResponseMessageMusic>(); responseMessage.Music.MusicUrl = WebChatPara.SiteUrl + messageList[0].MeidaUrl; responseMessage.Music.Title = messageList[0].TextContent; responseMessage.Music.Description = messageList[0].Remark; return(responseMessage); } } var errorResponseMessage = requestMessage.CreateResponseMessage <ResponseMessageText>(); return(errorResponseMessage); } }
/// <summary> /// 订阅(关注)事件 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { ValidationErrors errors = new ValidationErrors(); WC_OfficalAccountsBLL account_BLL = new WC_OfficalAccountsBLL(); //获得当前公众号 WC_OfficalAccounts account = account_BLL.GetCurrentAccount(); //将用户提取到本地数据库 WC_User userModel = new WC_User(); WC_UserBLL user_BLL = new WC_UserBLL(); account.AccessToken = Senparc.Weixin.MP.CommonAPIs.CommonApi.GetToken(account.AppId, account.AppSecret).access_token; UserInfoJson userJson = UserApi.Info(account.AccessToken, requestMessage.FromUserName); userModel.OpenId = userJson.openid; userModel.NickName = userJson.nickname; userModel.Sex = userJson.sex.ToString(); userModel.Language = userJson.language; userModel.City = userJson.city; userModel.Province = userJson.province; userModel.Country = userJson.country; userModel.HeadImgUrl = userJson.headimgurl; userModel.SubscribeTime = ResultHelper.GetTimeByLong(userJson.subscribe_time).ToString(); userModel.UnionId = userJson.unionid; userModel.Remark = userJson.remark; userModel.GroupId = userJson.groupid.ToString(); userModel.TagidList = string.Join(",", userJson.tagid_list.ToArray()); userModel.Subscribe = userJson.subscribe.ToString(); userModel.OfficalAccountId = account.Id.ToString(); user_BLL.m_Rep.Create(userModel); WC_MessageResponseRepository m_Rep = new WC_MessageResponseRepository(); //订阅回复 List <WC_MessageResponse> messageList = m_Rep.FindList(a => a.OfficalAccountId == account.Id.ToString() && a.MessageRule == WeChatRequestRuleEnum.Subscriber.ToString() && a.IsDefault == "true").ToList(); if (messageList.Count() > 0) { if (messageList[0].Category == WeChatReplyCategory.Text.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); responseMessage.CreateTime = ResultHelper.NowTime; responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = account.OfficalId; responseMessage.Content = messageList[0].TextContent; return(responseMessage); } //图文方式 else if (messageList[0].Category == WeChatReplyCategory.Image.ToString()) { var responseMessage = CreateResponseMessage <ResponseMessageNews>(); foreach (var model in messageList) { responseMessage.Articles.Add(new Article() { Title = model.TextContent, Description = model.ImgTextContext, PicUrl = WebChatPara.SiteUrl + model.ImgTextUrl, Url = model.ImgTextLink }); } return(responseMessage); } //一般很少用到 else if (messageList[0].Category == WeChatReplyCategory.Voice.ToString()) { var responseMessage = base.CreateResponseMessage <ResponseMessageMusic>(); responseMessage.Music.MusicUrl = WebChatPara.SiteUrl + messageList[0].MeidaUrl; responseMessage.Music.Title = messageList[0].TextContent; responseMessage.Music.Description = messageList[0].Remark; return(responseMessage); } } var errorResponseMessage = requestMessage.CreateResponseMessage <ResponseMessageText>(); return(errorResponseMessage); }