dotNet微信公众号开发二:接收并回复普通文字消息

上一篇做好了基本配置之后,现在可以学习如何回复消息了。

当有用户向公众号发送消息的时候,微信会向我们的借口以POST的方式推送消息。以普通文本为例,消息格式如下:


 
  
 1348831860
 
 
 1234567890123456

含义如下:

参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType text
Content 文本消息内容
MsgId 消息id,64位整型

当我们的服务器收到这样的消息的时候,就可以进行响应,可以回复文本、图片、图文、语音、视频、音乐等等。

继续以文本消息为例,我们要回复的消息格式如下:




12345678



参数 是否必须 描述
ToUserName 接收方帐号(收到的OpenID)
FromUserName 开发者微信号
CreateTime 消息创建时间 (整型)
MsgType text
Content 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

可以看到,回复的消息和收到的消息刚好对起止用户进行了颠倒。另外,用户发来的消息里面包含有MsgId,因为微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。


下面贴一段简单的示例代码:

public void Index()
        {
            //微信服务器一直把用户发过来的消息,post过来
            if (Request.HttpMethod == "POST")
            {
                var reader = XmlReader.Create(Request.InputStream);

                var doc = XDocument.Load(reader);


                var xml = doc.Element("xml");

                string requestFromUserID = xml.Element("FromUserName").Value;
                string requestToUserID = xml.Element("ToUserName").Value;

                string strRespose = "";
                        strRespose += "";
                strRespose += "";
                strRespose += "{2}";
                strRespose += "";
                strRespose += "";
                strRespose += "";

                Response.Write(string.Format(strRespose, requestFromUserID, requestToUserID, DateTime.Now.ToBinary(), "感谢您回复消息!"));
            }
            else if (Request.HttpMethod == "GET") //微信服务器在首次验证时,需要进行一些验证,但。。。。
            {
                if (string.IsNullOrEmpty(Request["echostr"]))
                {
#if DEBUG
                    Response.Write("无法获取微信接入信息,仅供测试!");
#endif
                    return;
                }

                Response.Write(Request["echostr"].ToString());
            }
            else
            {
                // 这里不正确
                Response.Write("wrong");
            }

        }


这是个最简单的示例,用户回复消息之后就会收到 "感谢您回复消息!"的回复,效果如下:

dotNet微信公众号开发二:接收并回复普通文字消息_第1张图片

你可能感兴趣的:(开发技术,asp.net,c#,web,微信)