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

2019-03-02 01:02|来源: 网路

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

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网站并放在菜单栏中使用,还有实现定位打卡功能。身为小组组长,瞬间感到压力挺大,不过有压力才会有动力,先把时间和工作安排好,一步一步来。


转自:http://www.cnblogs.com/jishaoyi/p/3866646

相关问答

更多
  • 不是访问你自己的服务么?追问是自己的服务器,感觉自定义菜单是应该在微信的服务器里运行才可以回答自定义的菜单 微信里只是一个链接 调用的是你自己的服务 你要自己部署一个服务器 有对外的访问ip追问那是菜单设置完成后考虑的事,链接,公网ip我都有,现在只差这个菜单设置了回答哦 终于搞懂了 那个是微信提供了一个管理的界面啊 可以设置菜单名称 链接之类的追问怪我没说明白,我现在有接口代码,问题是不知道怎么让它部署运行回答tomcat部署服务?是少这个么追问不是,微信公众平台开发者模式首先需要接口来链接你自己的服务器 ...
  • 若开启微信开发者模式则需要在绑定微信公众账号的第三方平台上进行设置。 开启微信开发者模式后,自定义菜单不可以通过微信公众平台进行设置的。 开发者模式关闭后,可通过微信公众平台设置自定义菜单。 微信公众平台,简称weChat。曾命名为“官号平台”和“媒体平台”,最终定位为“公众平台”,无疑让我们看到一个微信对后续更大的期望。和新浪微博早期从明星战略着手不同,微信此时已经有了亿级的用户,挖掘自己用户的价值,为这个新的平台增加更优质的内容,创造更好的粘性,形成一个不一样的生态循环,是平台发展初期更重要的方向
  • 首先订阅号要通过微信认证才可以成为拥有自定义菜单不通过验证成为开发者也无法获得自定义菜单其次成为开发者要有个能够公网访问的URL也就是通常使用的网址现常用的有新浪的sae平台或者百度的开发者平台然后在该网.址下部署微信提供的接口文件修改接口文件中的token然后在token一栏中填写修改过后的token即可。‘动拇指’的团队做的,需要的话可以问.问去
  • 1、首先登陆你的账号,在功能里面选择高级功能。 2、然后再编辑模式和开发者模式里面选择关闭编辑模式,打开开发者模式。 3、选择我要成为开发者,勾选我同意,然后选择下一步。 4、填写第三方的配置端口,首先你的有一个第三方平台账号,这样的话才可以绑定你的微信成为开发者。 5、在第三方平台里面填写你的微信信息,填写的信息都在你账号信息里面可以找到,把所有的信息填写完之后就可绑定了,绑定完之后就会出现API接口,点击进入即可。 6、进入后可以看到你的URL地址,复制粘贴即可,那么什么是你的token地址呢,就是你U ...
  • 登录公众号,点击左侧导航中的开发者中心,在右边点击开启即可,如果你是使用接口程序的话,将获得的url和token输入到里面即可使用
  • 太多太多了,这么说吧,微信公众平台只有最简单的图片文字和视频,而且大小都是有限制的,如果你想更多的功能必须用开发模式。看这个视频,绑定第三方平台,就能开发了。
  • 新版微信公众平台去除了编辑模式和开发模式,让普通用户更方便地使用公众号,开发者也可以在开发者中心中,统一管理开发资源、权限和配置。微信公众平台开发者中心功能的使用方便了更多的微信用户,也方便了我们的生活。
  • 登录微信公众平台,点击左下角的 开发者工具,即可看到相关文档。
  • 1. 打开一个已经注册好的微信公众账号,点击高级功能进入开发者模式先点击开启然后点击成为开发者。 2. 在成为开发者之前要确认账号资料已经完善提交并且通过审核,头像要上传,微信号要设置,功能介绍要填写,以及地区等等相关信息。 3. 勾选我同意,然后点击下一步。 4. 登录微行天下的公众平台助手,没帐号的点击注册一个账号。 5. 注册的时候要按你的实际情况填写注册信息,因为这是人工审核的,如果提供假资料就不能通过审核,审核时间一般为3天,所以建议在注册完微信公众账号的时候就可以去注册微行天下公众号助手。 6. ...
  • 不是仿,是直接登录到微信公众平台,但是没有通过他们的登录界面登录进去,而是用程序提交用户名密码登录进去,然后进行相关操作,往相关接口提交数据