123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- using System.Web;
- using LYFZ.Weixin.SDK;
- using System.Text;
- using System.Text.RegularExpressions;
- using LYFZ.Weixin.SDK.Helpers;
- using LYFZ.Weixin.SDK.Entities;
- using System.Collections.Generic;
- namespace LYFZ.WXLibrary
- {
- public class WeixinExecutor : IWeixinExecutor
- {
- public WeixinExecutor()
- {
- }
-
-
-
-
-
- public string Execute(WeixinMessage message)
- {
- var result = "";
- var domain = System.Configuration.ConfigurationManager.AppSettings["Domain"];
- var openId = message.Body.FromUserName.Value;
- var myUserName = message.Body.ToUserName.Value;
-
- switch (message.Type)
- {
- case WeixinMessageType.Text:
- string userMessage = message.Body.Content.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, "欢迎使用,您输入了:" + userMessage);
- break;
- case WeixinMessageType.Image:
- string imageUrl = message.Body.PicUrl.Value;
- string mediaId = message.Body.MediaId.Value;
- result = ReplayPassiveMessageAPI.ReplayImage(openId, myUserName, mediaId);
- break;
- case WeixinMessageType.Video:
- #region 视频消息
- {
- var media_id = message.Body.MediaId.Value.ToString();
- var thumb_media_id = message.Body.ThumbMediaId.Value.ToString();
- var msgId = message.Body.MsgId.Value.ToString();
-
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("视频消息:openid:{0},media_id:{1},thumb_media_id:{2},msgId:{3}", openId, media_id, thumb_media_id, msgId));
- }
- #endregion
- break;
- case WeixinMessageType.Voice:
- #region 语音消息
- {
- var media_id = message.Body.MediaId.Value.ToString();
- var format = message.Body.Format.Value.ToString();
- var msgId = message.Body.MsgId.Value.ToString();
-
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("语音消息:openid:{0},media_id:{1},format:{2},msgId:{3}", openId, media_id, format, msgId));
- }
- #endregion
- break;
- case WeixinMessageType.Location:
- #region 地理位置消息
- {
- var location_X = message.Body.Location_X.Value.ToString();
- var location_Y = message.Body.Location_Y.Value.ToString();
- var scale = message.Body.Scale.Value.ToString();
- var Label = message.Body.Label.Value.ToString();
-
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("地理位置消息: openid:{0},Location_X:{1},Location_Y:{2},Scale:{3},label:{4}", openId, location_X, location_Y, scale, Label));
- }
- #endregion
- break;
- case WeixinMessageType.Link:
- #region 链接消息
- {
- var title = message.Body.Title.Value.ToString();
- var description = message.Body.Description.Value.ToString();
- var url = message.Body.Url.Value.ToString();
- var msgId = message.Body.MsgId.Value.ToString();
-
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("openid:{0},title:{1},description:{2},url:{3},msgId:{4}", openId, title, description, url, msgId));
- }
- #endregion
- break;
- case WeixinMessageType.Event:
- string eventType = message.Body.Event.Value.ToLower();
- string eventKey = string.Empty;
- try
- {
- eventKey = message.Body.EventKey.Value;
- }
- catch { }
- switch (eventType)
- {
- case "subscribe":
- #region 首次关注
- var token = WeixinConfig.TokenHelper.GetToken();
-
-
- if (!string.IsNullOrEmpty(eventKey))
- {
- var qrscene = eventKey.Replace("qrscene_", "");
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName,
- new WeixinNews
- {
- title = "欢迎订阅,场景值:" + qrscene,
- description = "欢迎订阅,场景值:" + qrscene,
- picurl = string.Format("{0}/ad.jpg", domain),
- url = domain
- });
- }
- else
- {
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName,
- new WeixinNews
- {
- title = "欢迎订阅",
- description = "欢迎订阅,点击此消息查看在线demo",
- picurl = string.Format("{0}/ad.jpg", domain),
- url = domain
- });
- }
- #endregion
- break;
- case "unsubscribe":
- #region 取消关注
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, "欢迎再来");
- #endregion
- break;
- case "scan":
- #region 已关注扫码事件
- if (!string.IsNullOrEmpty(eventKey))
- {
- var qrscene = eventKey.Replace("qrscene_", "");
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName,
- new WeixinNews
- {
- title = "欢迎使用,场景值:" + qrscene,
- description = "欢迎使用,场景值:" + qrscene,
- picurl = string.Format("{0}/ad.jpg", domain),
- url = domain
- });
- }
- else
- {
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName,
- new WeixinNews
- {
- title = "欢迎使用",
- description = "欢迎订阅,点击此消息查看在线demo",
- picurl = string.Format("{0}/ad.jpg", domain),
- url = domain
- });
- }
- #endregion
- break;
- case "masssendjobfinish":
- #region 事件推送群发结果
- {
- var msgId = message.Body.MsgID.Value;
- var msgStatus = message.Body.Status.Value;
-
-
-
- var totalCount = message.Body.TotalCount.Value;
- var filterCount = message.Body.FilterCount.Value;
- var sentCount = message.Body.SentCount.Value;
- var errorCount = message.Body.FilterCount.Value;
-
- CommonHandleClass.WriteLog(string.Format("mass send job finishe,msgId:{0},msgStatus:{1},totalCount:{2},filterCount:{3},sentCount:{4},errorCount:{5}", msgId, msgStatus, totalCount, filterCount, sentCount, errorCount));
- }
- #endregion
- break;
- case "templatesendjobfinish":
- #region 模版消息结果
- {
- var msgId = message.Body.MsgID.Value;
- var msgStatus = message.Body.Status.Value;
-
- CommonHandleClass.WriteLog(string.Format("template send job finish,msgId:{0},msgStatus:{1}", msgId, msgStatus));
- }
- #endregion
- break;
- case "location":
- #region 上报地理位置事件
- var lat = message.Body.Latitude.Value.ToString();
- var lng = message.Body.Longitude.Value.ToString();
- var pcn = message.Body.Precision.Value.ToString();
-
- CommonHandleClass.WriteLog(string.Format("openid:{0} ,location,lat:{1},lng:{2},pcn:{3}", openId, lat, lng, pcn));
- #endregion
- break;
- case "voice":
- #region 语音消息
-
- var userVoice = message.Body.Recognition.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, "您说:" + userVoice);
-
- var userVoiceMediaId = message.Body.MediaId.Value;
-
- #endregion
- break;
- case "image":
- #region 图片消息
- var userImage = message.Body.PicUrl.Value;
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName, new WeixinNews
- {
- title = "您刚才发送了图片消息",
- picurl = string.Format("{0}/Images/ad.jpg", domain),
- description = "点击查看图片",
- url = userImage
- });
- #endregion
- break;
- case "click":
- #region 自定义菜单事件
- {
- switch (eventKey)
- {
- case "myaccount":
- #region 我的账户
- result = ReplayPassiveMessageAPI.RepayNews(openId, myUserName, new List<WeixinNews>()
- {
- new WeixinNews{
- title="我的帐户",
- url=string.Format("{0}/user?openId={1}",domain,openId),
- description="点击查看帐户详情",
- picurl=string.Format("{0}/Images/ad.jpg",domain)
- },
- });
- #endregion
- break;
- case "www.weixinsdk.net":
-
- break;
- default:
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, "没有响应菜单事件");
- break;
- }
- }
- #endregion
- break;
- case "view":
- #region 点击菜单跳转链接时的事件推送
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("您将跳转至:{0}", eventKey));
- #endregion
- break;
- case "scancode_push":
- {
- var scanType = message.Body.ScanCodeInfo.ScanType.Value;
- var scanResult = message.Body.ScanCodeInfo.ScanResult.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("您扫描了二维码,scanType:{0},scanResult:{1},EventKey:{2}", scanType, scanResult, eventKey));
- }
- break;
- case "scancode_waitmsg":
- {
- var scanType = message.Body.ScanCodeInfo.ScanType.Value;
- var scanResult = message.Body.ScanCodeInfo.ScanResult.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("您扫描了二维码,scanType:{0},scanResult:{1},EventKey:{2}", scanType, scanResult, eventKey));
- }
- break;
- case "pic_sysphoto":
- {
- var count = message.Body.SendPicsInfo.Count;
- var picList = message.Body.PicList;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("弹出系统拍照发图,count:{0},EventKey:{1}", count, eventKey));
- }
- break;
- case "pic_photo_or_album":
- {
- var count = message.Body.SendPicsInfo.Count.Value;
- var picList = message.Body.PicList.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("弹出拍照或者相册发图,count:{0},EventKey:{1}", count, eventKey));
- }
- break;
- case "pic_weixin":
- {
- var count = message.Body.SendPicsInfo.Count.Value;
- var picList = message.Body.PicList.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("弹出微信相册发图器,count:{0},EventKey:{1}", count, eventKey));
- }
- break;
- case "location_select":
- {
- var location_X = message.Body.SendLocationInfo.Location_X.Value;
- var location_Y = message.Body.SendLocationInfo.Location_Y.Value;
- var scale = message.Body.SendLocationInfo.Scale.Value;
- var label = message.Body.SendLocationInfo.Label.Value;
- var poiname = message.Body.SendLocationInfo.Poiname.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("弹出地理位置选择器,location_X:{0},location_Y:{1},scale:{2},label:{3},poiname:{4},eventKey:{5}", location_X, location_Y, scale, label, poiname, eventKey));
- }
- break;
- case "card_pass_check":
- {
- var cardid = message.Body.CardId.Value;
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("您的卡券已经通过审核"));
- }
- break;
- case "card_not_pass_check":
- {
- var cardid = message.Body.CardId.Value;
- }
- break;
- case "user_get_card":
- {
- var cardid = message.Body.CardId.Value;
- var isGiveByFriend = message.Body.IsGiveByFriend.Value;
- var fromUserName = message.Body.FromUserName.Value;
- var friendUserName = message.Body.FriendUserName.Value;
- var userCardCode = message.Body.UserCardCode.Value;
- var outerId = message.Body.OuterId.Value;
- }
- break;
- case "user_del_card":
- {
- var cardid = message.Body.CardId.Value;
- var userCardCode = message.Body.UserCardCode.Value;
- }
- break;
- case "merchant_order":
- {
- var orderId = message.Body.OrderId.Value;
- var orderStatus = message.Body.OrderStatus.Value;
- var productId = message.Body.ProductId.Value;
- var skuInfo = message.Body.SkuInfo.Value;
- }
- break;
- }
- break;
- default:
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("未处理消息类型:{0}", message.Type));
- break;
- }
- return result;
- }
-
-
-
-
-
- public string ServiceExecute(WeixinMessage message)
- {
- var result = "ERP 未处理的请求关键信息";
- var openId = message.Body.FromUserName.Value;
- var myUserName = message.Body.ToUserName.Value;
-
-
- switch (message.Type)
- {
- case WeixinMessageType.Text:
- string userMessage = message.Body.Content.Value;
- if (userMessage.IndexOf("#") > 0)
- {
- result = userMessage.Split('#')[0];
- }
- else {
- result = userMessage;
- }
- break;
- case WeixinMessageType.Voice:
- #region 语音消息
- {
- var media_id = message.Body.MediaId.Value.ToString();
- var format = message.Body.Format.Value.ToString();
- var msgId = message.Body.MsgId.Value.ToString();
- var Recognition = message.Body.Recognition.Value.ToString();
-
- result = Recognition.ToString().Trim().Replace("!", "").Replace("!", "").Replace(".", "").Replace("。", "");
-
-
-
- }
- #endregion
- break;
- case WeixinMessageType.Event:
- string eventType = message.Body.Event.Value.ToLower();
- string eventKey = string.Empty;
- try
- {
- eventKey = message.Body.EventKey.Value;
- }
- catch { }
-
- switch (eventType)
- {
- case "subscribe":
- #region 首次关注
-
-
-
- #endregion
- break;
- case "unsubscribe":
- #region 取消关注
-
- #endregion
- break;
- case "scan":
- break;
- case "masssendjobfinish":
- break;
- case "templatesendjobfinish":
- #region 模版消息结果
- {
- var msgId = message.Body.MsgID.Value;
- var msgStatus = message.Body.Status.Value;
-
-
- result = "templatesendjobfinish";
- }
- #endregion
- break;
- case "voice":
- #region 语音消息
-
-
-
-
-
- var userVoice = message.Body.Recognition.Value;
- var userVoiceMediaId = message.Body.MediaId.Value;
- if (userVoice.ToString().Trim().Length > 0)
- {
- result = userVoice.ToString().Trim().Replace("!", "").Replace("!", "").Replace(".", "").Replace("。", "");
-
- }
-
-
-
-
-
- #endregion
- break;
- case "click":
- result = eventKey;
- break;
- }
- break;
- default:
- result = ReplayPassiveMessageAPI.RepayText(openId, myUserName, string.Format("未处理消息类型:{0}", message.Type));
- break;
- }
- return result;
- }
-
- }
- }
|