微信公众平台开发者模式自动回复功能与自定义菜单

微信开发者模式自动回复功能

1.提取POST来的数据中的信息

2.判断微信客户端发来的信息内容(以文本信息为例)

3.根据信息内容进行处理

4.把处理结果以XML的形式返回给微信服务器

5.微信服务器反馈内容给微信客户端

1.获取用户发来的文本信息的内容

private void ExtractPostData() /*** 提取POST来的数据中的信息 ***/
{
Stream s = HttpContext.Current.Request.InputStream; //读取post来的数据流
byte[] b = new byte[s.Length]; //定义一个和post来的数据流长度一致的空数组
s.Read(b, 0, (int)s.Length); //把这个数据流存入数组
string postStr = Encoding.UTF8.GetString(b); //把数组转换成字符串
XmlDocument doc = new XmlDocument(); //System.Xml中的类,用于对XML文档操作
doc.LoadXml(postStr); //加载字符串(文本)
XmlNodeList list = doc.GetElementsByTagName("xml"); //返回标签名为“xml”的所有节点,返回的是数组
XmlNode xn = list[0]; //获得第一个标签名为“xml”的节点,注意类为XmlNode,这里实际是获得“根”
ToUserName = xn.SelectSingleNode("//FromUserName").InnerText; //在“根”下找标签为“FromUserName”的节点,并靠.InnerText获得这个标签里面的文本
MsgType = xn.SelectSingleNode("//MsgType").InnerText; //获得用户发来的信息是什么类型:text,image,location,link,event等
if (MsgType == "text")
{
Content = xn.SelectSingleNode("//Content").InnerText;//获取用户发来的文本消息的内容
}
}

2.对接收到的文本信息内容进行处理

string ReMess = "";//用来存储回复给用户的内容

private string ToUserName = null; //用户账号

private string MsgType = null; //接收到的信息类型

private string Content = null; //回复给用户的内容

if (MsgType == "text")//如果用户发来的是文本信息
{
if (Content == "ABC" || Content == "abc")//Content就是用户发给公众号的信息
{
ReMess = "123";//回复给用户的消息
}
else
{
ReMess = "你好,我的功能还很有限,只是测试程序。\n其他服务正在建设中...";//回复给用户的消息
}
//ReMess = this.ResText(ToUserName, ReMess);//这里ReMess兼做存储XML格式字符串
}
responseMsg(ReMess);

3.把处理结果以XML的形式返回给微信服务器

private void responseMsg(string Content)
{
string strresponse = "<xml>";
strresponse = strresponse + "<ToUserName><![CDATA[" + ToUserName + "]]></ToUserName>";//回复给谁
strresponse = strresponse + "<FromUserName><![CDATA[" + FromUserName + "]]></FromUserName>";//是开发者回复
strresponse = strresponse + "<CreateTime>" + DateTime.Now.Ticks.ToString() + "</CreateTime>";//消息创建时间
strresponse = strresponse + "<MsgType><![CDATA[text]]></MsgType>";//消息类型为“文本”
strresponse = strresponse + "<Content><![CDATA[" + Content + "]]></Content>";//回复的消息内容
strresponse = strresponse + "<FuncFlag>0<FuncFlag>";
strresponse = strresponse + "</xml>";
Response.Write(strresponse);
Response.End();
}

———————————————————————————————————————————————————————————————————————————————

微信开发者模式自定义菜单

1.创建自定义菜单

private void CreateMenu() 
{
string weixin1 = "";
weixin1 = @" {
""button"":[
{
""type"":""click"",
""name"":""你好!"",
""key"":""Hello""
},
{
""type"":""view"",
""name"":""公司简介"",
""url"":""http://www.baidu.com" 
},
{
""name"":""产品介绍"",
""sub_button"":[
{
""type"":""click"",
""name"":""产品1"",
""key"":""P1""
},
{
""type"":""click"",
""name"":""产品2"",
""key"":""P2""
}]
}]
}
";

string i = GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + "    填入access_token", weixin1);
Response.Write(i);
}

2.翻译自定义菜单

public string GetPage(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(postData);
// 准备请求...
try
{
// 设置参数
request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
//发送请求并获取相应回应数据
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
catch (Exception ex)
{
string err = ex.Message;
Response.Write(err);
return string.Empty;
}
}

总结一下,今天收获还是蛮大的

1.搞定了自动回复功能。

2.创建了简单的自定义菜单。

3.知道了发布后的*.dll文件要放在服务器根目录的bin文件夹里面。

4.学会了断点调试。

何总下午开了个会,对微信开发小组接下来的工作提出了具体的要求,要求在规定时间内做出一个简单的BBS网站并放在菜单栏中使用,还有实现定位打卡功能。身为小组组长,瞬间感到压力挺大,不过有压力才会有动力,先把时间和工作安排好,一步一步来。

微信公众平台开发者模式自动回复功能与自定义菜单,布布扣,bubuko.com

时间: 2024-12-20 16:48:08

微信公众平台开发者模式自动回复功能与自定义菜单的相关文章

MVC下c#对接微信公众平台开发者模式

在ashx文件中进行HttpContext的处理: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Biz.WX; namespace weixinplat { /// <summary> /// WeiXin 的摘要说明 /// </summary> public class WeiXin : IHttpHandler { public void

C#微信公众平台开发者模式开启代码

using System;using System.IO;using System.Text;using System.Web.Security; namespace HPZJ.Web.sys.excel{    public partial class hpd_api_weixin : System.Web.UI.Page    {        const string Token = "token";  //你的token        protected void Page_L

微信公众平台开发教程(五)自定义菜单

应大家强烈要求,将自定义菜单功能课程提前. 一.概述: 如果只有输入框,可能太简单,感觉像命令行.自定义菜单,给我们提供了很大的灵活性,更符合用户的操作习惯.在一个小小的微信对话页面,可以实现更多的功能.菜单直观明了,不仅能提供事件响应,还支持URL跳转,如果需要的功能比较复杂,我们大可以使用URL跳转,跳转至我们的网页即可. 注意:自定义菜单,只有服务号才有此功能 如何注册,见第一章:微信公众账号开发教程(一) 基本原理及微信公众账号注册 效果如下, 接着我们详细介绍,如何实现自定义菜单? 二

微信公众平台开发模式中的安全问题

一言以蔽之:只要URL和TOKEN设置的容易被猜到,ToUsername又不验证.攻击者可以轻易操控存在漏洞的公众平台. 原文作者:Create Chen 原文出处:http://technology.cnblogs.com 申请公众平台开发者模式需要填写一个URL和一个Token, 见下图: 如果这个URL和Token被别人猜中了, 并且你不判断消息中的ToUserName属性是否跟你微信号相配, 那么别人的公众帐号申请开发者时填写你的URL和你的Token, 别人的公众帐号就能把你公众帐号的

Java微信公众平台开发模式+自定义按钮源码

首先,想用开放模式需要先成为开发者.成为开发者有两种写法. 一是:通过jsp页面,用out.print("echostr")//SHA1加密的字符串: 二是:通过Servlet.doGet返回exhostr,给微信平台. 这里我只写第二种方式的请求(这里的请求是以get方式请求),代码如下: import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.ut

微信公众平台开发模式详解图文教程

这部分主要讲解微信公众平台的开发模式,首先说明一下我不是程序员,所以本篇并非讲编程代码之类的,但是由于我们正在开发微信POP营销系统,所以我对开发模式有一定了解,这些了解应该会对准备尝试做微信开发的朋友会有一定帮助,少走部分弯路吧.如果对本篇教程有任何疑问或错漏之处欢迎留言或直接联系我进行更正修改. 微信公众平台开发模式 首先我们要明确开发模式什么可以做,什么不可以做: 一.开发模式可以实现的功能 可以接收用户发送过来的消息,通过你自己开发的系统把对应内容反馈回去.可以接收用户发送过来的地理位置

微信公众平台-开发模式配置 URL Token

微信公众平台-开发模式配置需要拥有自己的服务器,配置页面有明文:"请填写接口配置信息,此信息需要你拥有自己的服务器资源."  这句话就是说有自己的服务器,独立ip,80端口开放的.并且这台服务器要能提供服务,就是说要能够被微信后台的服务器访问到.这需要服务器有一个外网IP.我们的Web Server监听外网IP的80端口之后就能收到微信后台的请求了. 可能很多读者希望能在自己的PC机上做接入的测试,但是笔者建议不要这么做,因为这可能会遇到很多的麻烦.如果你的确想这么做,请注意以下事情:

微信公众平台开发模式

微信公众平台提供了开发者模式,开启开发者模式的方法入下图 在右侧的工具栏最后一项“开发者中心”.点击进入“开发者中心”,需要配置服务器路径URL,和表示符Token.之后完成申请接入: (1)将微信提供的php文件放到服务器上,下载地址:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip; (2)确认文件名和配置URL中的文件名一致; (3)修改php文件中define("TOKEN", "weixin&qu

微信公众平台开发者文档

微信公众平台开发者文档 公众平台开发接口介绍微信公众平台开发者文档,布布扣,bubuko.com