微信公众号子菜单跳转菜单跳转的网页怎么制作

微信公众号自定义菜单怎么打开小程序 公众号和小程序有哪几种连接方式_西西软件资讯
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
→ 微信公众号自定义菜单怎么打开小程序 公众号和小程序有哪几种连接方式
v6.5.6 官网最新版
类型:社交聊天大小:40.3M语言:中文 评分:9.3
公众号自定义菜单怎么打开小程序?公众号和小程序有哪几种连接方式?昨晚,更新后新增了六项能力。其中,公众号和小程序新增到三种连接方式。具体哪有些呢?和小编一起来了解一下。在支持公众号绑定相关小程序后,公众号和小程序有了三种新的连接跳转方式:①公众号可以把自己关联的小程序放在自定义菜单中,用户点击可直达小程序。②公众号模版消息可打开相关小程序。通过公众号,公众号运营者可以推送关联的小程序页面了。③公众号绑定相关小程序时,可选择给粉丝下发通知。公众号运营者可以通知粉丝,“我绑定了这个小程序”,粉丝点击消息就可以打开小程序。(此消息不占用原有群发条数)
(24) 西西软件园微信抢红包神器专区为您提供微信抢红包神器手机版、电脑版微信抢红包软件下载,都是经过小编亲测无毒、安全,大家可以放心使用!使用教程:/html/51398_1.html微信自从上线发红包的功能之后就吸引了很多的用户,小编也经常能收到老板们发的红包。但更多的时候由于没有及时登录微信或因为网速、手机差的客观因素错失一个个红包。可能很多人都想过,有没有什么软件能够帮助大家自动抢红包呢?西西为您...
09-13 / 2.5M
推荐理由:快乐抢红包神器,正品微信抢红包软件,在保证抢红包效果的同时,也不会造成个人信息泄漏,请放心使用!快乐
01-22 / 9.8M
推荐理由:抢红包神器2016是最新的一款安卓手机抢红包软件,这款软件不仅能够自动抢红包,而且内置很多小活动,软件游
10-12 / 2.6M
推荐理由:红包猎人高级版是2017最新的手机抢红包软件,此软件可以自动抢QQ和微信群红包,打开手机后台自动运行软件就
10-10 / 2.6M
推荐理由:乐乐抢红包app是为喜欢抢红包的人群量身打造的一款实用的手机应用软件,用户通过使用乐乐抢红包神器可以方便
01-17 / 512KB
推荐理由:小米红包助手,是小米专为MIUI6,7用户准备的春节抢红包神器,全面支持微信,支付宝等各大平台的抢红包提醒
10-10 / 2.6M
推荐理由:最近快过年了,又到了微信红包发得比较密集的时间段了,但是许多人却因为手不够快而错过了不少红包,那么有
(300) 西西软件园提供微信电脑版、微信下载2016正式版官方免费下载,微信是腾讯公司开发的一款免费语音即时聊天工具,用户可以使用微信很方便的搜索和添加附近使用微信的用户,也可以使用“摇一摇”和“漂流瓶”来寻找陌生的人交往和聊天。微信下载手机版,用户可以使用微信免费的发送消息和语音聊天内容。微信不仅仅是聊天工具,更是一种生活方式。微信,已被越来越多的人使用,并将成为未来网络营销一大利器,为了帮助你提升个人行业品...
03-20 / 34.9M
推荐理由:微信是TX公司基于QQ开发的一种可以用语音说的软件,不过手机是智能机才可以用的,拥有其独特的摇一摇,漂流瓶功
06-03 / 32.9M
推荐理由:好消息,期待已久的微信电脑版今天终于发布,西西第一时间带来分享给亲们哦!下边带来微信电脑版详细资料及
03-22 / 62.9M
推荐理由:钉钉电脑版是阿里巴巴最新推出的新一代的团队通讯软件,钉钉电脑版是阿里巴巴专为中小企业和团队打造的沟通
07-27 / 36.0M
推荐理由:京东咚咚商家版是京东商城针对商家和用户推出的IM工具,京东IM工具“咚咚”为商家和用户架起沟通桥梁,支持
02-03 / 3.0M
推荐理由:海拓微信助手是一款专业的微信营销工具,软件采用全新的自动化技术帮你处理那些需要大量时间精力的机械操作
01-06 / 15.8M
推荐理由:国外一种老牌的聚合聊天软件最近异常火热,它叫MirandaIM.通过安装丰富的插件可以令MirandaIM(下简称为MIM)支
(20) 2017聊天软件大全包含;微信、QQ、探探、派派、陌陌等,其中微信和QQ都是大家日常使用聊天软件,用户使用方便简单,很多小伙伴都在使用的,探探、派派和陌陌都是用户进行交友的手机软件,在线进行配对交友,使用方便简单,不少小伙伴喜欢使用。关键是用户还能进行抢红包,和自己的好友进行互动的手机应用。...
03-17 / 40.3M
推荐理由:微信,可以群聊的手机对讲机。微信是腾讯公司推出的一个为智能手机提供即时通讯服务的免费应用程序。微信支
10-14 / 2.6M
推荐理由:逢年过节都是有很多的朋友喜欢发红包的,过年的时候,除了抢红包,我们还有很多事情要忙,和家人团聚,和朋
03-31 / 19.6M
推荐理由:监狱建筑师是一款模拟经营游戏,融合了策略元素,玩家需要在游戏中建造一座固若金汤的监狱,让囚犯
02-14 / 173M
推荐理由:微信,最时尚的手机语音对讲软件!微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字
01-24 / 187M
推荐理由:很多使用iPad的用户不知道如何微信,其实微信iPhone版兼容iPad,苹果iPad平板电脑请看下边的安装方法主要功
03-23 / 31.5M
推荐理由:QQforMac是基于MacOSX平台的即时通讯软件,致力于通过简洁的界面、实用高效的即时沟通功能以及流畅的操作体
(53) 微信分身版是一款第三方的微信客户端,这款客户端可以支持用户同时登录多个微信账号,对于经常需要在多个微信号之间切换的微商们来说这款软件非常实用。微信目前不仅是一款社交软件还有很多人将其作为办公的通讯软件使用,因此很多人就会存在两个微信号,一个对公的,一个对私的。经常在两个微信号之间切换非常麻烦,这里西西给大家提供的微信分身版可以让你同时登录两个微信号,这样再也不用考虑登录这个账号收不到另一个账号信息...
02-27 / 4.6M
推荐理由:微信多开助手是一款可以让你同时登录多个微信号的软件,当你抢红包的时候要是多个微信号能抢到的也会多点,
02-27 / 3M
推荐理由:微信多开大师最新版是2017年最新稳定的微信多开软件。软件可支持一个手机上多开微信,只要手机配置高,可无
03-17 / 40.3M
推荐理由:微信,可以群聊的手机对讲机。微信是腾讯公司推出的一个为智能手机提供即时通讯服务的免费应用程序。微信支
10-14 / 2.6M
推荐理由:逢年过节都是有很多的朋友喜欢发红包的,过年的时候,除了抢红包,我们还有很多事情要忙,和家人团聚,和朋
03-20 / 34.9M
推荐理由:微信是TX公司基于QQ开发的一种可以用语音说的软件,不过手机是智能机才可以用的,拥有其独特的摇一摇,漂流瓶功
01-30 / 19.8M
推荐理由:微信,是一个生活方式超过三亿人使用的手机应用支持发送语音短信、视频、图片和文字可以群聊,仅耗少量流量
(21) 腹黑微信又名黑客破解微信,微信在当前国内的地位是不可动摇的,如果无法外部打倒,就要从内部瓦解,当然这些都是玩笑,一群极客们在无聊至极,或心怀远大理想的情况下对微信进行了破解,可以让大家在聊天时记录下所有信息,即使对方即发即撤在你面前也是无用哒,最逆天的就是智能抢红包功能,你可以在0-8秒的时间内进行设置,比如设8秒,红包发出最多8秒后就能自动被你抢到了。相关版本:一开始腹黑微信只有苹果版的,后来为了照顾...
01-24 / 34.0M
推荐理由:微信腹黑版其实就是微信的破解版,因为这个破解版可以查看撤回的消息以及自动抢红包,这款软件是由黑客团队
01-25 / 12.2M
推荐理由:腹黑微信电脑版是一个黑客团队进行破解后的作品,相信此举已经惹火了微信官方,所以大家要早些下载哟,以免
01-25 / 34.0M
推荐理由:黑客破解微信是一款高科技的微信应用,这款微信不同于官方版本,下载安装后,与人聊天,对方再也不能随意给
10-18 / 2.3M
推荐理由:微信多开助手破解版是一款微信多开软件,由于微信的限制,所以正常的话一部手机是只能安装一个微信的,但是
03-11 / 5.8M
推荐理由:行政联盟安卓版是一款非常不错的手机企业办公必备软件,它为企业人员带来了便捷化的功能,服务大家办公变得
08-22 / 21.9M
推荐理由:微信上面的飞机大战非常的火爆,让人不禁想起人人偷菜的时代,为了彰显自己的高超技术,小编打上了无敌破解
03-2803-2803-2803-2703-2703-2703-2503-2503-2403-24
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载微信公众号跳转到网页图文素材编辑方法教程 - 绿盟文章
&如何设置公众号跳转到网页图文素材编辑呢?很简单,绿盟小编告诉你:进入微信公众平台-&【功能】-&【自定义菜单】-&【菜单管理】-&【点击“+”设置动作】-&【跳转到网页功能】。图在下面。注:目前非认证公众账号,自定义菜单动作仅支持跳转至素材管理,不支持跳转外部连接哦。
文章来自绿盟()转载请注明来路。
上一篇文章:微信公众平台开发教程(五)自定义菜单(含实例源码) - 停留的风 - 博客园
posts - 234, comments - 1242, trackbacks - 5, articles - 27
微信公众平台开发教程(五)自定义菜单
请尊重作者版权,如需转载,请标明出处。
应大家强烈要求,将自定义菜单功能课程提前。
一、概述:
如果只有输入框,可能太简单,感觉像命令行。自定义菜单,给我们提供了很大的灵活性,更符合用户的操作习惯。在一个小小的微信对话页面,可以实现更多的功能。菜单直观明了,不仅能提供事件响应,还支持URL跳转,如果需要的功能比较复杂,我们大可以使用URL跳转,跳转至我们的网页即可。
注意:自定义菜单,只有服务号才有此功能
如何注册,见第一章:
效果如下,
接着我们详细介绍,如何实现自定义菜单?
二、详细步骤:
1、首先获取access_token&
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。
公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。
接口调用请求说明
http请求方式: GET
参数是否必须说明
grant_type
获取access_token填写client_credential
第三方用户唯一凭证
第三方用户唯一凭证密钥,既appsecret
正常情况下,微信会返回下述JSON数据包给公众号:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
access_token
获取到的凭证
expires_in
凭证有效时间,单位:秒
错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}&
2、创建自定义菜单
自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:
目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以&...&代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
目前自定义菜单接口可实现两种类型按钮,如下:
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
接口调用请求说明
http请求方式:POST(请使用https协议)&
"button":[
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
"type":"click",
"name":"歌手简介",
"key":"V1001_TODAY_SINGER"
"name":"菜单",
"sub_button":[
"type":"view",
"name":"搜索",
"type":"view",
"name":"视频",
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
参数是否必须说明
一级菜单数组,个数应为1~3个
sub_button
二级菜单数组,个数应为1~5个
菜单的响应动作类型,目前有click、view两种类型
菜单标题,不超过16个字节,子菜单不超过40个字节
click类型必须
菜单KEY值,用于消息接口推送,不超过128字节
view类型必须
网页链接,用户点击菜单可打开链接,不超过256字节
正确时的返回JSON数据包如下:
{"errcode":0,"errmsg":"ok"}
错误时的返回JSON数据包如下(示例为无效菜单名长度):
{"errcode":40018,"errmsg":"invalid button name size"}
3、查询菜单
使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。
http请求方式:GET
对应创建接口,正确的Json返回结果:
{"menu":{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC","sub_button":[]},{"type":"click","name":"歌手简介","key":"V1001_TODAY_SINGER","sub_button":[]},{"name":"菜单","sub_button":[{"type":"view","name":"搜索","url":"","sub_button":[]},{"type":"view","name":"视频","url":"","sub_button":[]},{"type":"click","name":"赞一下我们","key":"V1001_GOOD","sub_button":[]}]}]}}
4、删除菜单
使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。
http请求方式:GET
对应创建接口,正确的Json返回结果:
{"errcode":0,"errmsg":"ok"}
5、事件处理
用户点击自定义菜单后,如果菜单按钮设置为click类型,则微信会把此次点击事件推送给开发者,注意view类型(跳转到URL)的菜单点击不会上报。
推送XML数据包示例:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[FromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[event]]&&/MsgType&
&Event&&![CDATA[CLICK]]&&/Event&
&EventKey&&![CDATA[EVENTKEY]]&&/EventKey&
参数说明:
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
消息类型,event
事件类型,CLICK
事件KEY值,与自定义菜单接口中KEY值对应
三、实例讲解
还接着上一篇文章讲。
我们将在上一篇文章基础上,添加自定义菜单功能。
1、获取access_token
首先需要得到AppId和AppSecret
当你成为开发者后,自然能够在,开发者模式,便可看到这两个值,可以重置。
然后调用按照二.1中所示,进行操作。
注意:access_token有过期时间,如果过期,需要重新获取。
代码如下:
private static DateTime GetAccessToken_T
/// &summary&
/// 过期时间为7200秒
/// &/summary&
private static int Expires_Period = 7200;
/// &summary&
/// &/summary&
private static string mAccessT
/// &summary&
/// &/summary&
public static string AccessToken
//如果为空,或者过期,需要重新获取
if (string.IsNullOrEmpty(mAccessToken) || HasExpired())
mAccessToken = GetAccessToken(AppID, AppSecret);
return mAccessT
/// &summary&
/// &/summary&
/// &param name="appId"&&/param&
/// &param name="appSecret"&&/param&
/// &returns&&/returns&
private static string GetAccessToken(string appId, string appSecret)
string url = string.Format("https://api./cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret);
string result = HttpUtility.GetData(url);
XDocument doc = XmlUtility.ParseJson(result, "root");
XElement root = doc.R
if (root != null)
XElement access_token = root.Element("access_token");
if (access_token != null)
GetAccessToken_Time = DateTime.N
if (root.Element("expires_in")!=null)
Expires_Period = int.Parse(root.Element("expires_in").Value);
return access_token.V
GetAccessToken_Time = DateTime.MinV
return null;
/// &summary&
/// 判断Access_token是否过期
/// &/summary&
/// &returns&bool&/returns&
private static bool HasExpired()
if (GetAccessToken_Time != null)
//过期时间,允许有一定的误差,一分钟。获取时间消耗
if (DateTime.Now & GetAccessToken_Time.AddSeconds(Expires_Period).AddSeconds(-60))
return true;
return false;
2、设置菜单
菜单需根据需要,按照实际要求进行设定。
这里我们提供天气查询功能,将常用的城市列出来,点击即可查询。
然后还提供了友情链接,这里提供了view类型的菜单,直接可以跳转至URL页面,为跳转做个好的演示。
具体菜单如下:
"button": [
"name": "链接",
"sub_button": [
"type": "view",
"name": "搜索",
"url": "/"
"type": "view",
"name": "视频",
"url": "/"
"type": "click",
"name": "赞一下我们",
"key": "BTN_GOOD"
"name": "查询天气",
"sub_button": [
"type": "click",
"name": "武汉",
"key": "BTN_TQ_WUHAN"
"type": "click",
"name": "上海",
"key": "BTN_TQ_SHANGHAI"
"type": "click",
"name": "北京",
"key": "BTN_TQ_BEIJING"
"type": "click",
"name": "帮助",
"key": "BTN_HELP"
3、管理菜单
因为菜单的变更没有那么频繁,因此通过txt文件来设置菜单,并通过管理界面来管理菜单。
主要的管理功能:
1)从文件加载菜单
2)创建菜单。即将菜单通知微信服务端,并更新至微信客户端
3)查询菜单。获取当前系统的菜单。
4)删除菜单。从微信服务器删除菜单,也可以删除后再创建。&
实现代码如下:
public class MenuManager
/// &summary&
/// 菜单文件路径
/// &/summary&
private static readonly string Menu_Data_Path = System.AppDomain.CurrentDomain.BaseDirectory + "/Data/menu.txt";
/// &summary&
/// 获取菜单
/// &/summary&
public static string GetMenu()
string url = string.Format("https://api./cgi-bin/menu/get?access_token={0}", Context.AccessToken);
return HttpUtility.GetData(url);
/// &summary&
/// 创建菜单
/// &/summary&
public static void CreateMenu(string menu)
string url = string.Format("https://api./cgi-bin/menu/create?access_token={0}", Context.AccessToken);
//string menu = FileUtility.Read(Menu_Data_Path);
HttpUtility.SendHttpRequest(url, menu);
/// &summary&
/// 删除菜单
/// &/summary&
public static void DeleteMenu()
string url = string.Format("https://api./cgi-bin/menu/delete?access_token={0}", Context.AccessToken);
HttpUtility.GetData(url);
/// &summary&
/// 加载菜单
/// &/summary&
/// &returns&&/returns&
public static string LoadMenu()
return FileUtility.Read(Menu_Data_Path);
4、基本方法
上面的代码,其实我们对一些公共功能做了封装。如进行get请求、POST提交等操作,读取文件等。
这里我们提供进行get、Post提交的方法案例代码,如果使用,建议优化。
using System.IO;
using System.N
using System.T
using System.W
namespace Yank.WeiXin.Robot.Utility
/// &summary&
/// Http帮助类
/// &/summary&
class HttpUtility
/// &summary&
/// 发送请求
/// &/summary&
/// &param name="url"&Url地址&/param&
/// &param name="data"&数据&/param&
public static string SendHttpRequest(string url, string data)
return SendPostHttpRequest(url,"application/x-www-form-urlencoded",data);
/// &summary&
/// &/summary&
/// &param name="url"&&/param&
/// &returns&&/returns&
public static string GetData(string url)
return SendGetHttpRequest(url,"application/x-www-form-urlencoded");
/// &summary&
/// 发送请求
/// &/summary&
/// &param name="url"&Url地址&/param&
/// &param name="method"&方法(post或get)&/param&
/// &param name="method"&数据类型&/param&
/// &param name="requestData"&数据&/param&
public static string SendPostHttpRequest(string url,string contentType,string requestData)
WebRequest request = (WebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
byte[] postBytes = null;
request.ContentType = contentT
postBytes = Encoding.UTF8.GetBytes(requestData);
request.ContentLength = postBytes.L
using (Stream outstream = request.GetRequestStream())
outstream.Write(postBytes, 0, postBytes.Length);
string result = string.E
using (WebResponse response = request.GetResponse())
if (response != null)
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
result = reader.ReadToEnd();
/// &summary&
/// 发送请求
/// &/summary&
/// &param name="url"&Url地址&/param&
/// &param name="method"&方法(post或get)&/param&
/// &param name="method"&数据类型&/param&
/// &param name="requestData"&数据&/param&
public static string SendGetHttpRequest(string url, string contentType)
WebRequest request = (WebRequest)HttpWebRequest.Create(url);
request.Method = "GET";
request.ContentType = contentT
string result = string.E
using (WebResponse response = request.GetResponse())
if (response != null)
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
result = reader.ReadToEnd();
using System.Xml.L
using Newtonsoft.J
namespace Yank.WeiXin.Robot.Utility
class XmlUtility
/// &summary&
/// &/summary&
/// &param name="json"&&/param&
/// &param name="rootName"&&/param&
/// &returns&&/returns&
public static XDocument ParseJson(string json,string rootName)
return JsonConvert.DeserializeXNode(json, rootName);
5、事件处理
设置了菜单,这下需要处理事件了。跟我们之前设计ASPX或者WinForm一样,都要绑定按钮的事件。这里只是通过XML消息将请求传递过来。
通过&2、设置菜单"中具体的菜单内容,我们便已经知道需要进行哪些事件处理了。对于按钮类型为view的,无须处理,它会自动跳转至指定url.
需要处理的点击事件:
2)查询某城市的天气,北京、上海、武汉
这个还要沿用上章中的事件处理器EventHandler来扩展处理。
具体的实现代码吧:
using System.Collections.G
using System.L
using System.T
using Yank.WeiXin.Robot.M
namespace Yank.WeiXin.Robot.Handlers
class EventHandler : IHandler
/// &summary&
/// 请求的xml
/// &/summary&
private string RequestXml { get; set; }
/// &summary&
/// 构造函数
/// &/summary&
/// &param name="requestXml"&&/param&
public EventHandler(string requestXml)
this.RequestXml = requestX
/// &summary&
/// 处理请求
/// &/summary&
/// &returns&&/returns&
public string HandleRequest()
string response = string.E
EventMessage em = EventMessage.LoadFromXml(RequestXml);
if (em != null)
switch (em.Event.ToLower())
case ("subscribe"):
response = SubscribeEventHandler(em);
case "click":
response = ClickEventHandler(em);
/// &summary&
/// &/summary&
/// &param name="em"&&/param&
/// &returns&&/returns&
private string SubscribeEventHandler(EventMessage em)
//回复欢迎消息
TextMessage tm = new TextMessage();
tm.ToUserName = em.FromUserN
tm.FromUserName = em.ToUserN
tm.CreateTime = Common.GetNowTime();
tm.Content = "欢迎您关注***,我是大哥大,有事就问我,呵呵!\n\n";
return tm.GenerateContent();
/// &summary&
/// 处理点击事件
/// &/summary&
/// &param name="em"&&/param&
/// &returns&&/returns&
private string ClickEventHandler(EventMessage em)
string result = string.E
if (em != null && em.EventKey != null)
switch (em.EventKey.ToUpper())
case "BTN_GOOD":
result = btnGoodClick(em);
case "BTN_TQ_BEIJING":
result = searchWeather("beijing", em);
case "BTN_TQ_SHANGHAI":
result = searchWeather("shanghai", em);
case "BTN_TQ_WUHAN":
result = searchWeather("wuhai", em);
case "BTN_HELP":
result = btnHelpClick(em);
/// &summary&
/// 赞一下
/// &/summary&
/// &param name="em"&&/param&
/// &returns&&/returns&
private string btnGoodClick(EventMessage em)
//回复欢迎消息
TextMessage tm = new TextMessage();
tm.ToUserName = em.FromUserN
tm.FromUserName = em.ToUserN
tm.CreateTime = Common.GetNowTime();
tm.Content = @"谢谢您的支持!";
return tm.GenerateContent();
/// &summary&
/// &/summary&
/// &param name="em"&&/param&
/// &returns&&/returns&
private string btnHelpClick(EventMessage em)
//回复欢迎消息
TextMessage tm = new TextMessage();
tm.ToUserName = em.FromUserN
tm.FromUserName = em.ToUserN
tm.CreateTime = Common.GetNowTime();
tm.Content = @"查询天气,输入tq 城市名称\拼音\首字母";
return tm.GenerateContent();
/// &summary&
/// 查询天气
/// &/summary&
/// &param name="cityName"&&/param&
/// &param name="em"&&/param&
/// &returns&&/returns&
private string searchWeather(string cityName, EventMessage em)
TextMessage tm = new TextMessage();
tm.Content = WeatherHelper.GetWeather(cityName);
//进行发送者、接收者转换
tm.ToUserName = em.FromUserN
tm.FromUserName = em.ToUserN
tm.CreateTime = Common.GetNowTime();
return tm.GenerateContent();
终于大工告成,最后来看下效果图吧
请尊重作者版权,如需转载,请标明出处。
&下一章计划:
微信公众平台开发教程(六)获取个性二维码}

我要回帖

更多关于 微信公众号菜单跳转 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信