Ejemplo n.º 1
0
        /// <summary>
        /// 首次关注发送的消息
        /// </summary>
        /// <param name="customer"></param>
        private void SendMessageToUserFirstSub(Customer customer)
        {
            var model = new WeChatMessageModel();

            model.msgtype = "news";
            model.touser  = customer.OpenId;
            model.news.articles.Add(new WeChatMessageModel.ArticlesItem
            {
                title       = "同学你好,初次见面请收下见面礼",
                url         = "http://www.bb-girl.cn/Customer/CouponList",
                picurl      = "http://www.bb-girl.cn/images/hb.png",
                description = "礼轻情意重,赶紧用了吧。"
            });

            var    appId     = _settingService.GetSettingByKey <string>(WeChatSettingNames.AppId);
            var    appSecret = _settingService.GetSettingByKey <string>(WeChatSettingNames.AppSecret);
            string msgUrl    = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}";
            var    token     = GetAccessToken(appId, appSecret);
            string url       = string.Format(msgUrl, token.access_token);

            HttpWebResponseUtility client = new HttpWebResponseUtility();

            var msg = Newtonsoft.Json.JsonConvert.SerializeObject(model);

            client.CreatePostHttpResponse(url: url, data: msg);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 相应消息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public string ResponseMessage(WeChatMessageModel model)
        {
            var result = string.Empty;

            switch (model.MsgType)
            {
            case "text":    //文本回复
                result = ResponseText(model.FromUserName, model.ToUserName, string.Format("收到文本:{0}", model.Content));
                break;

            case "image":    //图片回复
                result = ResponseText(model.FromUserName, model.ToUserName, string.Format("收到图片:{0}", model.PicUrl));
                break;

            case "voice":    //语音回复
                result = ResponseText(model.FromUserName, model.ToUserName, "收到语音");
                break;

            case "video":    //视频回复
                result = ResponseText(model.FromUserName, model.ToUserName, "收到视频");
                break;

            case "music":    //音乐回复
                result = ResponseText(model.FromUserName, model.ToUserName, "收到音乐");
                break;

            case "news":    //图文回复
                result = ResponseText(model.FromUserName, model.ToUserName, "收到图文");
                break;

            case "link":    //链接回复
                result = ResponseText(model.FromUserName, model.ToUserName, string.Format("收到:{0}", model.Title));
                break;

            case "location":    //地理位置回复
                result = ResponseText(model.FromUserName, model.ToUserName, string.Format("收到地理位置:{0}", model.Label));
                break;

            case "event":
                switch (model.Event)
                {
                case "subscribe":
                    result = ResponseText(model.FromUserName, model.ToUserName, "欢迎关注测试公众号");
                    break;

                case "SCAN":
                    break;
                }
                break;

            default:    //默认回复
                result = ResponseText(model.FromUserName, model.ToUserName, "未能解析出你要回复的值");
                break;
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 请求消息
        /// </summary>
        /// <param name="message"></param>
        /// <returns></returns>
        public WeChatMessageModel RequestMessage(string message)
        {
            var model = new WeChatMessageModel();

            if (string.IsNullOrEmpty(message))
            {
                return(null);
            }

            var requestDocXml = new XmlDocument();

            requestDocXml.LoadXml(message);

            var rootElement = requestDocXml.DocumentElement;

            if (rootElement != null)
            {
                var toUserNameNode = rootElement.SelectSingleNode("ToUserName");
                if (toUserNameNode != null)
                {
                    model.ToUserName = toUserNameNode.InnerText;
                }

                var fromUserNameNode = rootElement.SelectSingleNode("FromUserName");
                if (fromUserNameNode != null)
                {
                    model.FromUserName = fromUserNameNode.InnerText;
                }

                var createTimeNode = rootElement.SelectSingleNode("CreateTime");
                if (createTimeNode != null)
                {
                    model.CreateTime = createTimeNode.InnerText;
                }

                var mediaIdNode = rootElement.SelectSingleNode("MediaId");
                if (mediaIdNode != null)
                {
                    model.MediaId = mediaIdNode.InnerText;
                }

                var msgTypeNode = rootElement.SelectSingleNode("MsgType");
                if (msgTypeNode != null)
                {
                    model.MsgType = msgTypeNode.InnerText;
                }

                switch (model.MsgType)
                {
                case "text":    //文本
                    var contentNode = rootElement.SelectSingleNode("Content");
                    if (contentNode != null)
                    {
                        model.Content = contentNode.InnerText;
                    }
                    break;

                case "image":    //图片
                    var picUrlNode = rootElement.SelectSingleNode("PicUrl");
                    if (picUrlNode != null)
                    {
                        model.PicUrl = picUrlNode.InnerText;
                    }
                    break;

                case "voice":    //语音
                    var formatNode = rootElement.SelectSingleNode("Format");
                    if (formatNode != null)
                    {
                        model.Format = formatNode.InnerText;
                    }
                    break;

                case "location":    //地理位置
                    var locationXNode = rootElement.SelectSingleNode("Location_X");
                    if (locationXNode != null)
                    {
                        model.Location_X = locationXNode.InnerText;
                    }

                    var locationYNode = rootElement.SelectSingleNode("Location_Y");
                    if (locationYNode != null)
                    {
                        model.Location_X = locationYNode.InnerText;
                    }

                    var scaleNode = rootElement.SelectSingleNode("Scale");
                    if (scaleNode != null)
                    {
                        model.Scale = scaleNode.InnerText;
                    }

                    var labelNode = rootElement.SelectSingleNode("Label");
                    if (labelNode != null)
                    {
                        model.Label = labelNode.InnerText;
                    }
                    break;

                case "link":    //链接
                    var titleNode = rootElement.SelectSingleNode("Title");
                    if (titleNode != null)
                    {
                        model.Title = titleNode.InnerText;
                    }
                    var descriptionNode = rootElement.SelectSingleNode("Description");
                    if (descriptionNode != null)
                    {
                        model.Description = descriptionNode.InnerText;
                    }
                    var urlNode = rootElement.SelectSingleNode("Url");
                    if (urlNode != null)
                    {
                        model.Url = urlNode.InnerText;
                    }
                    break;

                case "event":    //事件
                    var xmlNode1 = rootElement.SelectSingleNode("Event");
                    if (xmlNode1 != null)
                    {
                        model.Event = xmlNode1.InnerText;
                    }
                    if (model.Event != "TEMPLATESENDJOBFINISH")    //关注类型
                    {
                        var node1 = rootElement.SelectSingleNode("EventKey");
                        if (node1 != null)
                        {
                            model.EventKey = node1.InnerText;
                        }
                    }
                    break;
                }
            }
            return(model);
        }
Ejemplo n.º 4
0
 public static WeChatMessage ToEntity(this WeChatMessageModel model, WeChatMessage destination, IObjectMapper ObjectMapper)
 {
     return(model.MapTo(destination, ObjectMapper));
 }