/// <summary> /// 客服消息下发卡券 /// </summary> /// <param name="openId">普通用户openid</param> /// <param name="cardId"></param> /// <param name="cardExt"></param> /// <returns></returns> public ActionResult SendCard(string openId, string cardId, CardExt cardExt) { if (!VerifyParam("openId,cardId,cardExt")) { return(ErrMsg()); } if (string.IsNullOrEmpty(openId)) { return(ErrMsg("openId不能为空!")); } if (string.IsNullOrEmpty(cardId)) { return(ErrMsg("cardId不能为空!")); } var weChatConfig = GetWechatConfig(); var ret = CustomApi.SendCard(weChatConfig.WeixinAppId, weChatConfig.WeixinCorpSecret, openId, cardId, cardExt); if (ret.errcode == Weixin.ReturnCode.请求成功) { return(Json(new { message = "", success = true }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { message = ret.errmsg, success = false }, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// 根据用户发送的消息,返回消息 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage) { //IResponseMessageBase responseMessage = null; ////输入cmd 进入cmd状态 , exit退出cmd状态 //if (requestMessage.Content == "cmd") //{ // CurrentMessageContext.StorageData = new StorageModel() // { // IsInCmd = true // }; //} //if (requestMessage.Content == "exit") //{ // var storageModel = CurrentMessageContext.StorageData as StorageModel; // if (storageModel != null) // { // storageModel.IsInCmd = false; // } //} //根据关键字、正则表达式,返回不同的消息内容 RequestMessageTextKeywordHandler handler = requestMessage.StartHandler() .Keyword("cmd", () => { var responseMessageText = requestMessage.CreateResponseMessage <ResponseMessageText>(); CurrentMessageContext.StorageData = new StorageModel() { IsInCmd = true }; responseMessageText.Content += "\r\n您已进入cmd模式"; return(responseMessageText); }) .Keyword("电子卡", () => { CustomApi.SendCard(Config.AppId, WeixinOpenId, "pifDGvpJKLpOc2vQxZHPslkxItqw", null, 10000); return(new ResponseMessageNoResponse()); }) .Keywords(new[] { "exit", "close", "quit" }, () => { var responseMessageText = requestMessage.CreateResponseMessage <ResponseMessageText>(); CurrentMessageContext.StorageData = new StorageModel() { IsInCmd = false }; responseMessageText.Content += "\r\n您已退出cmd模式"; return(responseMessageText); }).Regex(@"天气 \S+", () => { //Get Json Result 获取天气信息。 正则表达式 使用 var city = Regex.Match(requestMessage.Content, @"(?<=天气 )(\S+)").Value; var url = "https://www.sojson.com/open/api/weather/json.shtml?city={0}".FormatWith(city.UrlEncode()); //直接返回Json结果 var weatherResult = Get.GetJson <WeatherResult>(url, null, null); var responseMessageText = requestMessage.CreateResponseMessage <ResponseMessageText>(); responseMessageText.Content = @"天气查询结果 ========== 城市:{0}的天气信息 时期:{1} 结果:{2} 时间:{3}".FormatWith(weatherResult.city, weatherResult.date, weatherResult.message, weatherResult.AddTime); return(responseMessageText); }).Regex(@"^http", () => { var responseMessageNews = requestMessage.CreateResponseMessage <ResponseMessageNews>(); var articleNew = new Article() { Title = "您输入了" + requestMessage.Content, PicUrl = "http://sdk.weixin.senparc.com/images/book-cover-front-small-3d-transparent.png", Url = "http://www.baidu.com", Description = "这是一篇文章\r\n换行了\r\n哈哈", }; responseMessageNews.Articles.Add(articleNew); return(responseMessageNews); }).Default(() => { var responseMessageText = requestMessage.CreateResponseMessage <ResponseMessageText>(); responseMessageText.Content = "这是一条默认的消息回复"; return(responseMessageText); }); //如果输入的是文字,再回复中添加输入的文字 var responseMessage = handler.ResponseMessage; if (responseMessage is ResponseMessageText) { var storageModel = CurrentMessageContext.StorageData as StorageModel; if (storageModel != null) { requestMessage.Content += "\r\nCount:" + storageModel.CmdCount.ToString(); } (responseMessage as ResponseMessageText).Content += "\r\n您输入了:" + requestMessage.Content; } //返回内容转为基类 return(responseMessage as IResponseMessageBase); }