微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码


微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码。

本文使用的接口库是  https://github.com/chendong152/Weixin_api_.net 很感谢 TD的作者


ASP.NET开发的  接收微信消息和响应用户消息代码例如以下:

文件名称 :  v.ashx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
using Td.Weixin.Public.Common;
using Td.Weixin.Public.Message;

namespace WeiWeiXin.Net6
{
    /// <summary>
    /// v 的摘要说明
    /// </summary>
    public class v : IHttpHandler
    {

        /// <summary>
        ///    开发人员 验证 模块
        /// </summary>
        /// <param name="context"></param>
        public bool ProcessRequest2(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //  context.Response.Write("Hello World");
            try
            {
                string echoStr = context.Request["echoStr"]; 
                if (!string.IsNullOrEmpty(echoStr))
                {
                    context.Response.Write(echoStr);
                    return true;
                }
                else
                {
                    // context.Response.Write("end");
                    //   context.Response.End();
                }
            }
            catch (Exception e)
            {
                //   context.Response.Write("end" + e.Message + e.ToString());
                // context.Response.End();
            }
            return false;
        }

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //假设 是 验证  则 直接 退出 
            if (ProcessRequest2(context))
                return;

            context.Response.ContentType = "text/plain";
            var m = ReceiveMessage.ParseFromContext();

            if (m == null)
                return;

            //被关注
            if (m.MsgType == MessageType.Event && m.InnerToXmlText().IndexOf("subscribe") >= 0)
            {       
                //发送AIML请求
                var r2 = m.GetTextResponse();
                string result = "[微笑]欢迎关注";  
                r2.Data = (TextMsgData)result;
                r2.Response();
                return;
            }

            //数据解析
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(m.ToXmlText());//"<xml><description><![CDATA[木子屋:http://www.mzwu.com/]]></description></xml>");

            //菜单 或者 用户文本输入
            if (m.MsgType == MessageType.Text || (m.MsgType == MessageType.Event && m.InnerToXmlText().IndexOf("subscribe") < 0))
            {
                //读取
                string rr = "";

                if (m.MsgType == MessageType.Text)
                {
                    rr = xmlDoc.SelectSingleNode("//Content").FirstChild.InnerText.ToLower().Trim();
                }
                else
                {
                    rr = xmlDoc.SelectSingleNode("//EventKey").FirstChild.InnerText.ToLower().Trim();
                }
               
                //发送 
                var r2 = m.GetTextResponse();
                string result = "欢迎使用,您发送的是:" +rr;//  
                r2.Data = (TextMsgData)result;
                r2.Response();
                return;
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

这段代码中具有开发人员验证的功能,同一时候也考虑到了 由菜单发送到平台的文本的接收和响应。



最后 广告一下 : 完整的 微微信.NET 能够在这里找到  udoo123.taobao.com

posted @ 2016-03-30 08:53  mfrbuaa  阅读(254)  评论(0编辑  收藏  举报