搜档网
当前位置:搜档网 › 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应
微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

[导读] 微信5 0发布2013年8月5日,伴随着微信5 0 iPhone版的发布,公众平台也进行了重要的更新,主要包括:1)运营主体为组织,可选择成为服务号或者订阅号;2)服务号可以申请自定义菜单;3)使用QQ登录的公众号,可以

微信5.0发布

2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括:

1)运营主体为组织,可选择成为服务号或者订阅号;

2)服务号可以申请自定义菜单;

3)使用QQ登录的公众号,可以升级为邮箱登录;

4)使用邮箱登录的公众号,可以修改登录邮箱;

5)编辑图文消息可选填作者;

6)群发消息可以同步到腾讯微博。

其中,大家议论最多的当属前两条,就是关于帐号类型和自定义菜单的更新,我这里做几点补充说明:

1)目前公众号类型分为两种:服务号和订阅号,8月5日平台更新后所有的帐号默认为订阅号,有一次转换成服务号的机会;

2)服务号主要面向企业、政府和其他组织,而订阅号主要面向媒体和个人;

3)只有服务号可以申请自定义菜单,订阅号不能申请;

4)服务号每月只能群发一条消息,而订阅号每天能群发一条消息。

平台更新后,让很多人纠结的是自定义菜单和每天群发一条消息不可兼得,对此,我不想过多评论。

引言及内容概要

在微信5.0以前,自定义菜单是作为一种内测资格使用的,只有少数公众帐号拥有菜单,因此出现很多企业为了弄到菜单不惜重金求购。现如今,一大批帐号从订阅号转为服务号,很多都是奔着自定义菜单去的。而且,经测试发现,微信最近的审核放松很多,只要申请服务号、自定义菜单的基本都成功了,根本不管填写的资料真伪。不知道以后微信会不会翻脸,要求补全企业资料,那将会是一种给小孩一颗糖吃再把他打哭的感觉。。。

自定义菜单是申请到了,到底该怎么创建、怎么使用呢?最近几天不管是微信官方交流群,还是在我博客留言里,都能够看到不少开发者都在为这个发愁。本篇文章就为大家解决这个难题。

自定义菜单的创建步骤

1、找到AppId和AppSecret。自定义菜单申请成功后,在“高级功能”-“开发模式”-“接口配置信息”的最后两项就是;

2、根据AppId和AppSecret,以https get方式获取访问特殊接口所必须的凭证access_token;

3、根据access_token,将json格式的菜单数据通过https post方式提交。

分析创建菜单的难点

原来创建菜单这么简单,三步就能搞定?跟把大象放冰箱差不多。呵呵,当然没有这么简单,那我们一步步来看,到底难在哪里?

首先,第1步肯定都没有问题,只要成功申请了自定义菜单,一定能拿到AppId和AppSecret 这两个值。

再来看第2步,由于是get方式获取access_token,很多人直接把拼好的url放在浏览器里执行,access_token就拿到了。抛开是不是用编程方式实现的来说,这真是个好办法,显然大家在第二步上也没有问题。

最后再看第3步,拼装json格式的菜单数据,虽然繁锁一点,但基本上也都没有什么问题的,因为官方给了个例子,照猫画虎就行了。那问题一定就出现在https post提交上了。

结论:不知道如何创建自定义菜单的朋友,大都可以归为以下三种情况:

1)根本不看或者没看懂公众平台API文档中关于“通用接口”、“自定义菜单接口”和“使用限制”部分的说明;

2)不知道如何发起HTTPS请求(平时的http请求,直接使用HttpUrlConnection就可以轻松搞定,但https请求要复杂一点);

3)不知道如何通过POST方式提交json格式的菜单数据。

正在看文章的你,不知道是属于哪一种,或者几种情况都有,不妨留言说出来,也可以做个调查。不管属于哪一种情况,既然看到了这篇文章,相信一定会让你弄明白的。

解读通用接口文档---凭证的获取

我们先来看通用接口文档的简介部分,如下图所示。

\

通俗点讲,这段简介可以这么理解:公众平台还有很多特殊的接口,像自定义菜单的创建、语音文件的获取、主动发送消息等,如果开发者想通过HTTP请求访问这些特殊接口,就必须要有访问凭证,也就是access_token。

那么,又该如何获取接口访问凭证access_token呢?让我们继续往下看。

\

图中已经表达的很清楚了,获取access_token是通过GET方式访问如下链接:

view sourceprint?

1.

https://https://www.sodocs.net/doc/6c16233427.html,/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=AP PSECRET

链接中有三个参数,分别是grant_type、appid和secret。根据图中的参数说明,grant_type 传固定值client_credential,而appid和secret就是申请完自定义菜单后微信分配给我们的。请求发送成功后,微信服务器会返回一个json串,包含access_token和expires_in两个元素。其中,access_token就是我们最终需要的凭证,而expires_in是凭证的有效期,单位是秒,7200秒也就是2个小时。这就意味着,不是每次访问特殊接口,都需要重新获取一次access_token,只要access_token还在有效期内,就一直可以使用。

解读自定义菜单接口文档

还是一样,先来看看自定义菜单接口的简介部分,如下图所示。

\

从图中我们能够获取到以下信息:

1)拿到凭证access_token后,我们能对菜单执行三种操作:创建、查询和删除;

2)自定义菜单目前只支持click一种事件,即用户点击后回复某种类型的消息;不能够实现点击菜单项直接打开页面(type=view未开放,目前只是微生活有);

3)由于微信客户端缓存的原因,菜单创建后并不会立即在微信上显示出来,需要过24小时。在测试菜单创建时,可以通过取消关注后,再关注的方式达到立即看菜单的目的。

继续往下看,就是关于菜单怎么创建的介绍了,如下图所示。

\

其实就是向地址https://https://www.sodocs.net/doc/6c16233427.html,/cgi-bin/menu/create?access_token=ACCESS_TOKEN 以POST方式提交一个JSON格式的菜单字符串。

后面,关于参数说明的部分我就不一一贴图说明了,把重点说一下:

1)自定义菜单是一个3x5结构的,即菜单最多只能有二级,一级菜单最多只能有3个,每个一级菜单下最多可以有5个二级菜单项;

2)菜单项都有一个key值。当用户点击某个菜单项时,微信会将该菜单项的key值以事件推送的方式发送给我们的后台处理程序。

关于菜单的查询、创建我就不提了,这两个接口使用的频率非常小,一般都用不上。如果需要,再按照我上面提供的思路也不难理解。

解读API文档之使用限制

\

很多小伙伴看到这张图就开始疑惑了:怎么菜单还限制使用次数,用户量越来越大的时候,根本不够用啊。看清楚,这个限制是针对接口调用的,也就是针对开发者的,和用户数、使用次数半点关系也没有。

就先拿获取凭证接口来说吧,限制一天只能调用200次。还记得前面提到过access_token是有有效期的,并且有效期为两小时,也就是获取一次access_token后的两小时内,都可以继续使用,那么理想情况一天24小时内,是不是只需要获取12次就够了?难道200次还不够用?

再来看下菜单创建接口限制一天只能调用100次。我就这么解释吧,菜单创建一次后,只要你不切换模式(指的是在编辑模式和开发模式间切换)、不调用删除接口,这个菜单会永远存在的。谁没事干,一天要创建100次菜单,就算是测试,测个10次8次足够了吧?

菜单的查询和删除接口的限制我就不解释了,至今为止这二个接口我都没使用过一次。就算有这样的使用需求,一天这么多次的调用,完全足够了。

封装通用的请求方法

读到这里,就默认大家已经掌握了上面讲到的所有关于自定义菜单的理论知识,下面就进入代码实战讲解的部分。

先前我们了解到,创建菜单需要调用二个接口,并且都是https请求,而非http。如果要封装一个通用的请求方法,该方法至少需要具备以下能力:

1)支持HTTPS请求;

2)支持GET、POST两种方式;

3)支持参数提交,也支持无参数的情况;

对于https请求,我们需要一个证书信任管理器,这个管理器类需要自己定义,但需要实现X509TrustManager接口,代码如下:

view sourceprint?

01.

package org.liufeng.weixin.util;

02.

03.

import java.security.cert.CertificateException;

04.

import java.security.cert.X509Certificate;

05.

06.

import https://www.sodocs.net/doc/6c16233427.html,.ssl.X509TrustManager;

07.

08.

/**

09.

* 证书信任管理器(用于https请求)

10.

*

11.

* @author liufeng

12.

* @date 2013-08-08

13.

*/

14.

public class MyX509TrustManager implements X509TrustManager {

15.

16.

public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

17.

}

18.

19.

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

20.

}

21.

22.

public X509Certificate[] getAcceptedIssuers() {

23.

return null;

24.

}

25.

}

这个证书管理器的作用就是让它信任我们指定的证书,上面的代码意味着信任所有证书,不管是否权威机构颁发。

证书有了,通用的https请求方法就不难实现了,实现代码如下:

view sourceprint?

01.

package org.liufeng.weixin.util;

02.

03.

import java.io.BufferedReader;

04.

import java.io.InputStream;

05.

import java.io.InputStreamReader;

06.

import java.io.OutputStream;

07.

import https://www.sodocs.net/doc/6c16233427.html,.ConnectException;

08.

import https://www.sodocs.net/doc/6c16233427.html,.URL;

09.

10.

import https://www.sodocs.net/doc/6c16233427.html,.ssl.HttpsURLConnection;

11.

import https://www.sodocs.net/doc/6c16233427.html,.ssl.SSLContext;

12.

import https://www.sodocs.net/doc/6c16233427.html,.ssl.SSLSocketFactory;

13.

import https://www.sodocs.net/doc/6c16233427.html,.ssl.TrustManager;

14.

15.

import net.sf.json.JSONObject;

16.

17.

import org.slf4j.Logger;

18.

import org.slf4j.LoggerFactory;

19.

20.

/**

21.

* 公众平台通用接口工具类

22.

*

23.

* @author liuyq

24.

* @date 2013-08-09

25.

*/

26.

public class WeixinUtil {

27.

private static Logger log = LoggerFactory.getLogger(WeixinUtil.class);

28.

29.

/**

30.

* 发起https请求并获取结果

31.

*

32.

* @param requestUrl 请求地址

33.

* @param requestMethod 请求方式(GET、POST)

34.

* @param outputStr 提交的数据

35.

* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)

36.

*/

37.

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) { 38.

JSONObject jsonObject = null;

39.

StringBuffer buffer = new StringBuffer();

40.

try {

41.

// 创建SSLContext对象,并使用我们指定的信任管理器初始化

42.

TrustManager[] tm = { new MyX509TrustManager() };

43.

SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");

44.

sslContext.init(null, tm, new java.security.SecureRandom());

45.

// 从上述SSLContext对象中得到SSLSocketFactory对象

46.

SSLSocketFactory ssf = sslContext.getSocketFactory();

47.

48.

URL url = new URL(requestUrl);

49.

HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();

50.

httpUrlConn.setSSLSocketFactory(ssf);

51.

52.

httpUrlConn.setDoOutput(true);

53.

httpUrlConn.setDoInput(true);

54.

httpUrlConn.setUseCaches(false);

55.

// 设置请求方式(GET/POST)

56.

httpUrlConn.setRequestMethod(requestMethod);

57.

58.

if ("GET".equalsIgnoreCase(requestMethod))

59.

httpUrlConn.connect();

60.

61.

// 当有数据需要提交时

62.

if (null != outputStr) {

63.

OutputStream outputStream = httpUrlConn.getOutputStream();

64.

// 注意编码格式,防止中文乱码

65.

outputStream.write(outputStr.getBytes("UTF-8"));

66.

outputStream.close();

67.

}

68.

69.

// 将返回的输入流转换成字符串

70.

InputStream inputStream = httpUrlConn.getInputStream();

71.

InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

72.

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

73.

74.

String str = null;

75.

while ((str = bufferedReader.readLine()) != null) {

76.

buffer.append(str);

77.

}

78.

bufferedReader.close();

79.

inputStreamReader.close();

80.

// 释放资源

81.

inputStream.close();

82.

inputStream = null;

83.

httpUrlConn.disconnect();

84.

jsonObject = JSONObject.fromObject(buffer.toString());

85.

} catch (ConnectException ce) {

86.

log.error("Weixin server connection timed out.");

87.

} catch (Exception e) {

88.

log.error("https request error:{}", e);

89.

}

90.

return jsonObject;

91.

}

92.

}

代码说明:

1)41~50行:解决https请求的问题,很多人问题就出在这里;

2)55~59行:兼容GET、POST两种方式;

3)61~67行:兼容有数据提交、无数据提交两种情况,也有相当一部分人不知道如何POST 提交数据;

Pojo类的封装

在获取凭证创建菜单前,我们还需要封装一些pojo,这会让我们的代码更美观,有条理。首先是调用获取凭证接口后,微信服务器会返回json格式的数据:{"access_token":"ACCESS_TOKEN","expires_in":7200},我们将其封装为一个AccessToken对象,对象有二个属性:token和expiresIn,代码如下:

package org.liufeng.weixin.pojo; /** * 微信通用接口凭证* * @author liufeng * @date 2013-08-08 */ public class AccessToken { // 获取到的凭证private String token; // 凭证有效时间,单位:秒private int expiresIn; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getExpiresIn() { return expiresIn; } public void setExpiresIn(int expiresIn) { this.expiresIn = expiresIn; } }接下来是对菜单结构的封装。因为我们是采用面向对象的编程方式,最终提交的json格式菜单数据就应该是由对象直接转换得到,而不是在程序代码中拼一大堆json数据。菜单结构封装的依据是公众平台API文档中给出的那一段json格式的菜单结构,如下所示:

view sourceprint?

01.

{

02.

"button":[

03.

{

"type":"click",

05.

"name":"今日歌曲",

06.

"key":"V1001_TODAY_MUSIC"

07.

},

08.

{

09. "type":"click",

10.

"name":"歌手简介",

11.

"key":"V1001_TODAY_SINGER"

12.

},

13.

{

14.

"name":"菜单",

15.

"sub_button":[

16.

{

17. "type":"click",

18.

"name":"hello word",

19.

"key":"V1001_HELLO_WORLD"

20.

},

21.

{

22. "type":"click",

23.

"name":"赞一下我们",

24.

"key":"V1001_GOOD"

25.

}]

}]

27.

}

首先是菜单项的基类,所有一级菜单、二级菜单都共有一个相同的属性,那就是name。菜单项基类的封装代码如下:

view sourceprint?

01.

package org.liufeng.weixin.pojo;

02.

03.

/**

04.

* 按钮的基类

05.

*

06.

* @author liufeng

07.

* @date 2013-08-08

08.

*/

09.

public class Button {

10.

private String name;

11.

12.

public String getName() {

13.

return name;

14.

}

15.

16.

public void setName(String name) {

17.

https://www.sodocs.net/doc/6c16233427.html, = name;

18.

}

19.

接着是子菜单项的封装。这里对子菜单是这样定义的:没有子菜单的菜单项,有可能是二级菜单项,也有可能是不含二级菜单的一级菜单。这类子菜单项一定会包含三个属性:type、name和key,封装的代码如下:

view sourceprint?

01.

package org.liufeng.weixin.pojo;

02.

03.

/**

04.

* 普通按钮(子按钮)

05.

*

06.

* @author liufeng

07.

* @date 2013-08-08

08.

*/

09.

public class CommonButton extends Button {

10.

private String type;

11.

private String key;

12.

13.

public String getType() {

14.

return type;

15.

}

16.

17.

public void setType(String type) {

18.

this.type = type;

19.

}

20.

21.

public String getKey() {

22.

return key;

23.

}

24.

25.

public void setKey(String key) {

26.

this.key = key;

27.

}

28.

}

再往下是父菜单项的封装。对父菜单项的定义:包含有二级菜单项的一级菜单。这类菜单项包含有二个属性:name和sub_button,而sub_button以是一个子菜单项数组。父菜单项的封装代码如下:

view sourceprint?

01.

package org.liufeng.weixin.pojo;

02.

03.

/**

04.

* 复杂按钮(父按钮)

05.

*

06.

* @author liufeng

07.

* @date 2013-08-08

08.

*/

09.

public class ComplexButton extends Button {

10.

private Button[] sub_button;

11.

12.

public Button[] getSub_button() {

13.

return sub_button;

14.

}

15.

16.

public void setSub_button(Button[] sub_button) {

17.

this.sub_button = sub_button;

18.

}

19.

}

最后是整个菜单对象的封装,菜单对象包含多个菜单项(最多只能有3个),这些菜单项即可以是子菜单项(不含二级菜单的一级菜单),也可以是父菜单项(包含二级菜单的菜单项),如果能明白上面所讲的,再来看封装后的代码就很容易理解了:

view sourceprint?

01.

package org.liufeng.weixin.pojo;

02.

03.

/**

04.

* 菜单

05.

*

06.

* @author liufeng

07.

* @date 2013-08-08

08.

*/

09.

public class Menu {

10.

private Button[] button;

11.

12.

public Button[] getButton() {

13.

return button;

14.

}

15.

16.

public void setButton(Button[] button) {

17.

this.button = button;

18.

}

19.

}

关于POJO类的封装就介绍完了。

凭证access_token的获取方法

继续在先前通用请求方法的类WeixinUtil.java中加入以下代码,用于获取接口访问凭证:view sourceprint?

01.

// 获取access_token的接口地址(GET)限200(次/天)

02.

public final static String access_token_url = "https://https://www.sodocs.net/doc/6c16233427.html,/cgi-bin/token?grant_type=client_credential&;appid=APPID&secret=A PPSECRET";

03.

04.

/**

05.

* 获取access_token

06.

*

07.

* @param appid 凭证

08.

* @param appsecret 密钥

09.

* @return

10.

*/

11.

public static AccessToken getAccessToken(String appid, String appsecret) {

12.

AccessToken accessToken = null;

14.

String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);

15.

JSONObject jsonObject = httpRequest(requestUrl, "GET", null);

16.

// 如果请求成功

17.

if (null != jsonObject) {

18.

try {

19.

accessToken = new AccessToken();

20.

accessToken.setToken(jsonObject.getString("access_token"));

21.

accessToken.setExpiresIn(jsonObject.getInt("expires_in"));

22.

} catch (JSONException e) {

23.

accessToken = null;

24.

// 获取token失败

25.

log.error("获取token失败errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));

26.

}

27.

}

28.

return accessToken;

29.

}

调用封装的方法创建自定义菜单

view sourceprint?

01.

// 菜单创建(POST)限100(次/天)

02.

public static String menu_create_url = "https://https://www.sodocs.net/doc/6c16233427.html,/cgi-bin/menu/create?access_token=ACCESS_TOKEN";

03.

04.

/**

05.

* 创建菜单

06.

*

07.

* @param menu 菜单实例

08.

* @param accessToken 有效的access_token

09.

* @return 0表示成功,其他值表示失败

10.

*/

11.

public static int createMenu(Menu menu, String accessToken) {

12.

int result = 0;

13.

14.

// 拼装创建菜单的url

15.

String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);

16.

// 将菜单对象转换成json字符串

17.

String jsonMenu = JSONObject.fromObject(menu).toString();

18.

// 调用接口创建菜单

19.

JSONObject jsonObject = httpRequest(url, "POST", jsonMenu);

20.

21.

if (null != jsonObject) {

22.

if (0 != jsonObject.getInt("errcode")) {

23.

result = jsonObject.getInt("errcode");

24.

log.error("创建菜单失败errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));

}

26.

}

27.

28.

return result;

29.

}

注意:在运行以上代码时,需要将appId和appSecret换成你自己公众号的。

整个工程的结构

\

为了保证文章的完整独立性和可读性,我是新建了一个Java Project(Java web工程也可以,没有太大关系),没有在前几篇文章所讲到的weixinCourse工程中添加代码。如果需要,读者可以自己实现将菜单创建的代码移到自己已有的工程中去。

图中所有Java文件的源代码都在文章中贴出并进行了说明,图中使用到的jar也是Java开发中通用的jar包,很容易在网上下载到。

工程中引入的jar包主要分为两类:

1)第一类是json开发工具包,用于Java对象和Json字符串之间的转换;json开发工具包一共有3个jar:ezmorph-1.0.6.jar,json-lib-2.2.3-jdk13.jar和morph-1.1.1.jar。

2)第二类是slf4j日志工具包,用于记录系统运行所产生的日志,日志可以输出到控制台或文件中。

整个工程中,唯一没有讲到的是src下的log4j.properties的配置,也把它贴出来,方便大家参考,这样才是一个完整的工程源码。log4j.properties文件的内容如下:

view sourceprint?

01.

log4j.rootLogger=info,console,file

02.

03.

log4j.appender.console=org.apache.log4j.ConsoleAppender

04.

https://www.sodocs.net/doc/6c16233427.html,yout=org.apache.log4j.PatternLayout

05.

https://www.sodocs.net/doc/6c16233427.html,yout.ConversionPattern=[%-5p] %m%n

06.

07.

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender

08.

log4j.appender.file.DatePattern='-'yyyy-MM-dd

09.

log4j.appender.file.File=./logs/weixinmpmenu.log

10.

log4j.appender.file.Append=true

11.

https://www.sodocs.net/doc/6c16233427.html,yout=org.apache.log4j.PatternLayout

12.

https://www.sodocs.net/doc/6c16233427.html,yout.ConversionPattern=[%-5p] %d %37c %3x - %m%n

如何响应菜单点击事件

自定义菜单的创建工作已经完成,那么该如何接收和响应菜单的点击事件呢,也就是说在公众帐号后台处理程序中,如何识别用户点击的是哪个菜单,以及做出响应。这部分内容其实在教程的第5篇各种消息的接收与响应中已经讲解清楚了。

来看一下第一篇教程weixinCourse项目中的CoreService类要怎么改写,才能接收响应菜单点击事件,该类修改后的完整代码如下:

view sourceprint?

001.

package org.liufeng.course.service;

002.

003.

import java.util.Date;

004.

import java.util.Map;

005.

006.

import javax.servlet.http.HttpServletRequest;

007.

008.

import org.liufeng.course.message.resp.TextMessage;

009.

import org.liufeng.course.util.MessageUtil;

010.

011.

/**

012.

* 核心服务类

013.

*

014.

* @author liufeng

015.

* @date 2013-05-20

*/

017.

public class CoreService {

018.

/**

019.

* 处理微信发来的请求

020.

*

021.

* @param request

022.

* @return

023.

*/

024.

public static String processRequest(HttpServletRequest request) { 025.

String respMessage = null;

026.

try {

027.

// 默认返回的文本消息内容

028.

String respContent = "请求处理异常,请稍候尝试!";

029.

030.

// xml请求解析

031.

Map requestMap = MessageUtil.parseXml(request); 032.

033.

// 发送方帐号(open_id)

034.

String fromUserName = requestMap.get("FromUserName"); 035.

// 公众帐号

036.

String toUserName = requestMap.get("ToUserName");

037.

// 消息类型

微信公众服务号自定义菜单开发合同-不含申请租用主机

微信公众平台定制开发合同 甲方: 乙方: 本合同甲方委托乙方进行甲方微信公众服务号(以下简称“服务号”)自定义菜单功能的设计与开发,并支付开发经费和报酬,乙方接受委托并进行此项开发工作。双方本着平等互利、友好合作的原则,经过协商,在真实、充分地表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议,并由双方共同恪守。 第一条开发项目的技术目标和主要内容 1.技术目标:服务号自定义菜单功能设计与开发。 2.技术内容: (1)服务号自定义菜单具体包括介绍、分店、活动、预订、会员卡申请和储储值管理; (2)提供后台编辑功能,能自定义智能回复; (3)此合同未涉及的其他后期需求变化导致的定制功能开发以另行约定协议为准。 3.技术路线: (1)服务号自定义菜单功能的设计和开发; (2)服务号运营数据库设计及运营维护接口开发。 第二条双方的权利和义务 1.甲方享有开发完成的服务号的所有权和使用权; 2.服务号内的客户信息资源归甲方所有,乙方不得在未获甲方许可的情况下擅自将甲方客户信息透露给第三方或者用于其他用途; 3.甲方应向乙方提供待开发的经认证微信公众平台服务号,并授权乙方对其进行自定义菜单开发; 4.甲方须配合乙方完成运营数据库主机租用流程; 5.甲方须提供乙方开发所需要的文字资料和图片资料; 6.甲方不得通过微信服务号发布违法违规的内容,并须对提供内容的真实性和合法性负完全责任,并保证如有因其内容所引起的纠纷、争议及所涉及的法律责任均由甲方承担; 7.乙方接受甲方委托进行服务号运营数据库服务器的租用、运营数据库的设计、自定

义菜单的功能设计和开发; 8.乙方承诺从合同订立之日起,向甲方提供该服务号为期一年技术支持和维护服务,其中数据维护服务不超过10次,如超过10次甲方须向乙方支付一定的维护费用; 9.开发期间,服务号自定义菜单构架、自定义菜单设计和图片文字等内容(甲方提供的文本、图形、音像资料未经乙方加工部分除外)的版权、设计权归乙方所有,未经乙方许可甲方不得擅自使用,不得复制或交由第三方使用; 10.开发代码的知识产权归乙方所有,甲方不得未经乙方许可擅自对外复制、转让、修改及授权他人使用,由此引发的服务中断及法律责任均由甲方承担; 11.在服务期内,由不可抗力如自然灾害造成的服务中断,甲方须第一时间通知乙方,乙方须为甲方数据容灾恢复提供支持服务,无须承担甲方由此造成的运营损失; 12.在服务期内,由第三方如主机租用商、微信平台、网络通信商造成的服务中断,甲方须第一时间通知乙方,乙方有义务同第三方进行协调沟通恢复服务,并及时向甲方说明相关情况和进展,由此造成的运营损失应由第三方负责。 第三条开发周期 1.乙方承诺自合同签订当日起15个工作日之内完成服务号开发,并在租用数据库服务器完成后的2个工作日内完成服务号上线运营; 2.甲方承诺合同签订即视为同意前款开发内容,在乙方开发期间不擅自进行开发内容的修改及变更,若确有内容要求的修改及变更,须及时向乙方协商并提出书面的变更意见,乙方根据开发内容变更情况顺延开发周期,并向甲方做出说明。 第四条合同金额以及付款方式 1.甲方委托乙方开发服务号,应向乙方支付开发费用共计人民币¥_______元,大写:人民币_________________________整。 2.甲方需在合同签订当日向乙方支付(合同金额的___%)_________元,余款______元需在服务号开发完成并验收合格后一次性付清,甲方付清应付给乙方的全部款项后,正式享有服务号的全部使用权利和乙方提供的支持维护服务。 第五条服务号验收 1.服务号自定义菜单达到双方预先约定的设计要求; 2.甲方检查服务号全部内容,包括文字、界面、链接; 3.乙方向甲方进行服务号正确使用及日常管理的培训; 4.在服务号检查完成的一周内甲方不提出书面修改意见,则视为默认验收合格; 5.如需修改,甲方应提出完整的书面修改意见,乙方完成全部修改并经甲方确认无误后,即验收合格;

微信公众平台每天必不可少的数据分析

微信公众平台每天必不可少的数据分析 微信公众平台提供部分数据显示和统计功能,例如关注人数的增加和减少,图文阅读量等信息,一直都是微信公众平台上的常规显示数据。这次我要给大家讲的数据主要就是 1.图文阅读 2.粉丝增长量 3.粉丝的回复 4.粉丝的分类 那下面我就具体说说这四项数据背后具体都说明了一个什么样的问题。 1.图文阅读量 图文的阅读主要能够分析的就是我们的每篇文章具体的阅读人数和转发收藏量,这个最能够说明我们的文章内容的标题怎么样,内容是否好。因为一篇文章的阅读量不能说明文章就是好的,还要看看转发收藏量才能说明,如图:

我们可以看到这些阅读量好的内容可以达到上千的阅读量,转发收藏量也很高。通过阅读量和转发收藏量这两者的对比我们就可以大概的估算出这篇文章的内容是否好。再看看最后一张虽然说有几十的浏览量,但是没有形成转发收藏量,

这就说明了一个问题,那就是我们的内容不好,即使是粉丝点击进去了但是我们的内容不吸引粉丝就无法形成转发收藏。在一个就是标题取得是否好,如“不识 字老婆给老公写的信,老公立马回家了!你看懂了吗”这个标题能够很好的吸引粉丝的阅读兴趣,是什么原因就立即回家了呢?这个设置了悬念,所以阅读量还是 比较好的。所以通过图文阅读能够说明我们的内容以及标题是否好,好的内容和标题能够吸引更多的粉丝阅读分享。 2.粉丝增长量 粉丝的增长量主要是能够说明我们的内容以及昨天的推广做的怎么样,以及我们的推广是否精准。如图: 我们通过数据可以看到,有时的粉丝增长量几十有时候几个甚至没有,基本上每天的取消关注量都是有的。这个说明了我们的内容不是属于这群粉丝想要的,这就是我们推广粉丝的时候不是精准的粉丝。那么我们今后推广的时候就要注意这点了,不是说什么类型的粉丝我们都可以推广的,我们一定要推广与自己公众号相符的粉丝,不然你辛苦推广来对你的内容不感兴趣,结果还是会取消关注的。

微信公众后台数据分析指导公众号运营

史上最详细微信公众后台数据分析,指导公众 号运营 干货君导读:微信后台数据更加详细之后,我对本号从7月9日到8月7日的数据进行了详细分析。主要分为3个部分,用户增长来源分析、图文阅读分析和用户属性分析,虽然我是科技类的自媒体,但是对于数据影响因素的分析还是具有一定的普适性,所以我希望通过解读本号数据背后影响因素,能给大家的微信公号运营,带来一些实质性帮助。 第一部分:用户增长来源分析 用户增长来源的5种方式 (1)搜索公众号名称,搜索微信公众号的名称获得关注,这类的号原本就有一定的品牌,或定位足够垂直,当用户有这方面需求时,就会自己通过关

键词搜索。比如可口可乐、杜蕾斯、汽车、减肥、羽毛球、北京(地方号)、移动互联网等。所以在取名的时候,可以取一个和公号定位相符的名字,有利于被搜索到。如果怕别人也用同样的名字,可以选择注册商标、认证、提高互动率等方式,提高公号排名。比如本号“今日干货”这个名字,就是一个很好的占位,而且在搜索的时候,一直排在第一名,必然会导入大量精准粉丝,所以在本号的粉丝来源里占了39%。 (2)搜索微信号,通过这种方式关注的用户,理论上应该都是来自微信ID 在别处的曝光,比如经常用的互推,还有微博、人人网、百度贴吧等SNS网站和传统媒体、线下等推广方式。微信ID是一串字母加数字的结合,记忆和输入都很难,所以最好是结合公众号的名称设定ID,不但让人好记还好输入。尽量减少用户的记忆和输入成本,会在一定程度上增加关注量。本号通过搜索微信ID的占比不是很高,才8%,这应该和我几乎不参加互推有关,如果经常参加互推的号,这个占比应该高很多。 (3)图文消息右上角菜单,这个关注按钮隐藏较深,很多人不知道阅读文章时的右上角按钮里还隐藏了这么多功能,而且需要经过2步才能到公众号介绍页,最坑爹的是这个按钮不是在所有阅读的情况下都会出现,所以通过这个方式关注公众号的占比很低。 (4)名片分享,直接的名片分享,一般应该都是通过口碑传播,这个数据占比越高,说明这个号的质量越好。

关于微信公众平台使用情况的数据分析

关于情况的调查问卷的数据分析 样本总数:30 份 数据与分析: 1、您的性别( ) [单选题] 选项小计比例 A男1550% B女1550% 本题有效填写人次30 2、您的年龄( ) [单选题] 选项小计比例 A18岁以下1 3.33% B18--25岁1653.33% C26--30岁516.67% D30岁以上826.67%本题有效填写人次30 3、您目前的最高学历是( ) [单选题] 选项小计比例 A初中及以下413.33%

B高中或高职(包括在读) 826.67% C大专或本科(包括在读) 1860% D研究生及以上(包括在读) 00% 本题有效填写人次30 4、您目前从事的职业( ) [单选题] 选项小计比例 A学生516.67% B销售人员413.33% C市场\公关\广告310% D财务\税务\金融1 3.33% E行政\人事\后勤826.67% F高级管理人员1 3.33% G秘书\文员00% H物流\贸易00% I公务员1 3.33% J教师00% K其他723.33%本题有效填写人次30 5、您的平均月收入( ) [单选题] 选项小计比例 A无收入516.67% B1080元以下310% C1081--3500元1446.67%

D3500元以上826.67%本题有效填写人次30 6、您使用微信主要是因为( )此题可多选[多选题] 选项小计比例 A省流量省资费826.67% B周围人都在用930% C好玩有趣1033.33% D打发时间620% E微信很“潮”310% F其他1136.67%本题有效填写人次30 7、您使用微信有多长时间了?( ) [单选题] 选项小计比例 A 3个月以内2 6.67% B 3--6个月413.33% C 6个月--12个月2 6.67% D一年以上2273.33%本题有效填写人次30 8、您使用微信的频率( ) [单选题] 选项小计比例

微信公众号运营月报模板 (3)

“世图乐学课堂”微信公众号运营月报 (4月11日—4月30日) 一、用户分析 1.汇总数据 月度新增关注人数____,取消关注人数____,净增人数____,累积人数____,总人数较上月数据增长____%。 2.用户主要来源 扫描二维码:本月新增关注人数中,有____%来源于二维码扫描,主要是推送图文内页所附带的公众号二维码。 3.新增关注主因 (1)原创内容:________________,____天净增长____人,占本月净增人数的____%。(2)活动效果:____________活动,____天净增长____人,占本月净增人数的____%。 4.取消关注主因 (1)提供的内容对其无价值。 (2)推送频率过于频繁,图文篇数过多。 二、内容分析 1.汇总数据 本月图文页阅读总次数____次,其中从公众号会话直接打开的占____%,从朋友圈打开的占____%,通过好友转发的占____%。

2.内容分析 (1)原创文章、活动文章对用户较有吸引力,阅读量较大,能吸引用户转发、收藏。(2)转化率略有增长,但依然非常低。关注公众号:世图乐学课堂免费获取本文档4月11日从热剧《人民的名义》看“哭穷”教育对孩子的影响向____名用 户推送,仅44人打开阅读,转化率为____%。 4月20日【有奖征稿转发有礼】《重点难点互动手册》上册同步作文征稿向 ____名用户推送,____人打开阅读,转化率为____%。 三、下月工作重点 1.总体方向 (1)注重原创,多发精品文章,打造几篇“爆款”,稳定老用户,吸引更多新用户。(2)计划举办一次活动,如小学生硬笔字书写比赛,广泛征集作品,最后以投票形式决出名次。投票活动是当前快速增长粉丝的有效途径。重点在于策划时如何 做好奖品设置,用户想要怎样的奖品,是否需要找赞助商,等等。 2.具体目标 (1)人数净增长率由____%提高到____%,即需净增____人。 (2)转化率达到____%。

微信公众平台:功能强大的自定义菜单

微信公众平台:功能强大的自定义菜单 最近,有部分公众账号发现,微信官方已经通过了一周前申请的自定义界面接口内测,可利用接口,在公众账号对话界面底部实现自定义菜单。如果说之前微信公众账号的自定义回复的互动让它向 App 迈进一步,现在借助自定义界面,公众账号已然是一个微信端的轻量级应用。 AD: 目前自定义菜单已经停止接受申请,但将来肯定会开放,微信公众平台后台的帮助文档里对自定义菜单的描述也很完善,所以现在我们先来看看它是什么样子,为未来准备一下。 自定义界面让公众账号大幅提高了交互属性,公众帐号从而可以直接在页面上显示内容分类,用户也只需要轻松点击菜单获取内容,无需输入指令。 先一起来体验一下自定义菜单。 它的入口在高级功能=》编辑模式=》自定义菜单-设置。 在公众账号微杂志后台(微信号:weixinzazhi),可以看到新增加的设置选项。首先进入高级功能的页面后,底部有一个自定义菜单栏。 点击设置后,进入下一级页面 设置好栏目后,可以发布相应内容。目前,美中不足的是,最多可以创建三个一级菜单,每个一级菜单下可以创建最多五个二级菜单,远远满足不了微杂志如此多内容的需求。不过,总算是向前迈了一小步。 设置好后,可以点击预览,会出来一个手机界面看到设置效果。然后点击发布,24小时内,所有用户就都可以看到菜单式的微杂志了。点击选项中的二级菜单,便可打开对应的微信消息。 需要说明的是,公众号调整并发布自定义菜单之后,旧订阅用户将在 24 小时生效。而对于新订阅的用户,将即时生效。 目前,普通用户可以通过先开启编辑模式中的自定义菜单功能,然后按需设置菜单和菜单项对应的动作;具备开发能力和服务器资源的开发者,更可以通过开发模式中的自定义菜单开发接口,来更灵活地实现该功能。 如果说之前微信公众账号的自定义回复的互动让它向 App 迈进一步,现在借助自定义界面,公众账号已然是一个微信端高山美人茶 https://www.sodocs.net/doc/6c16233427.html,的轻量级应用。不过,微杂志至今已推出了197期书影音,53节微信小说连载,以及下一站旅行也推出了几十期。目前自定义界面只支持两级菜单,对于微杂志来说,在设置上还远远满足不了需求。 设想一下,经过测试之后,微信官方可能逐步放开栏目设置,并打通微支付环节。有多个栏目的微杂志,俨然会成为一个精美的微信杂志,有的栏目可以作为免费栏目吸引人气,有的栏目,比如原创的微信小说,可以作为收费栏玛瑙 https://www.sodocs.net/doc/6c16233427.html,目。还可以增加多个作家的专栏,由于已聚集了25万文艺青年,每天收到4、5万条回复是家常便饭,所以在用户群、互动以及习惯上,基本上不存在太多问题。每天通过内容推送,直达粉丝手机桌面,这比目前的众多阅读类APP要更接近用户,其实基本就相当于一个轻量级的APP了。 笔者有理由相信,虽然目前微信自定义菜单还很初级。但随着微信的进一步进化,它将有可能颠覆现有的阅读类APP。基于微信的阅读类轻量级APP,将会如春笋般冒出来。 【编辑推荐】 征服Python—语言基础与典型应用

2019-微信自定义菜单word版本 (3页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == 微信自定义菜单 篇一:微信自定义菜单错误代码解决方法 公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回 码信息调试接口,排查错误。 全局返回码说明如下 篇二:微信公众平台:功能强大的自定义菜单 微信公众平台:功能强大的自定义菜单 最近,有部分公众账号发现,微信官方已经通过了一周前申请的自定义界面接 口内测,可利用接口,在公众账号对话界面底部实现自定义菜单。如果说之前 微信公众账号的自定义回复的互动让它向 App 迈进一步,现在借助自定义界面,公众账号已然是一个微信端的轻量级应用。 AD: 目前自定义菜单已经停止接受申请,但将来肯定会开放,微信公众平台后台的 帮助文档里对自定义菜单的描述也很完善,所以现在我们先来看看它是什么样子,为未来准备一下。自定义界面让公众账号大幅提高了交互属性,公众帐号从而可以直接在页面上显示内容分类,用户也只需要轻松点击菜单获取内容, 无需输入指令。 先一起来体验一下自定义菜单。 它的入口在高级功能=》编辑模式=》自定义菜单-设置。 在公众账号微杂志后台(微信号:weixinzazhi),可以看到新增加的设置选项。首先进入高级功能的页面后,底部有一个自定义菜单栏。 点击设置后,进入下一级页面 设置好栏目后,可以发布相应内容。目前,美中不足的是,最多可以创建三个 一级菜单,每个一级菜单下可以创建最多五个二级菜单,远远满足不了微杂志 如此多内容的需求。不过,总算是向前迈了一小步。

微信公众号运营之内容策略

微信公众号运营之内容策略 摘要:网络数据时代新媒体已经占领大片江山,如今竞争已十分激烈,想要存活或者脱颖而出就必须讲究运营策略。 一、 二、何为微信公众号 微信公众号是开发者在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家&个人可在微信平台上实现和特定群体的文字、图片、语音的全方位沟通、互动。微信公众号分为订阅号和服务号及企业号。 三、 四、运营微信公众号前所需元素 微信公众号的定位、内容与营销框架制定 在开始运营一个微信公众号之前,必须要明确定位,也就是说知道给谁看、想达到什么效果从而制定内容风格与细节。 五、 六、内容发布策略 无论何种微信账号,想要成功的存活下去,都应以内容为王,当内容有实用性、贴近性、趣味性,并满足粉丝分享的满足感、炫耀感时,可以说就成功了一大半。因为具有上述特征的内容,粉丝会主动分享,辐射到用户强关系链上的好友,促发更多基于真实关系的传播。

在谈论如何成功运营微信公众号之前,我们先要明确“被取消关注”的原因: 第一,有垃圾信息或者广告; 第二,提供的信息不实用; 第三,没有新意; 第四,提供的信息不足或者没有分量; 第五,消息提醒不够人性化; 第六,信息不准确; 第七,内容篇幅过长; 第八,信息时效性不强。 为避免以上问题出现,展开内容策划 1、内容定位 内容个性就是我们所要总结出来的内容定位,在后面的内容筛选中,要结合内容个性进行有效选取。不同微信公众号所体现的内容个性可以有所不同,根据自身微信号的定位,选取符合定位的发布文章内容。 2、内容筛选 结合所设定位,接下来就要进行内容的筛选,制定范围和标准。通常,发

最详细的微信公众后台数据分析

微信的数据分析主要分为3个部分,用户增长来源分析、图文阅读分析和用户属性分析。希望大家通过阅读本文,能解读公众号数据背后的影响因素,学习到微信公号运 营的实质性操作方法。 第一部分:用户增长来源分析 1:微易销用户增加来源的5种方式 (1)搜索公众号名称,搜索微信公众号的名称获得关注,这类的号原本就有一定的品牌,或定位足够垂直,当用户有这方面需求时,就会自己通过关键词搜索。比如可口可乐、杜蕾斯、汽车、减肥、羽毛球、北京(地方号)等。所以在取名的时候,可以取一个 和公号定位相符的名字,有利于被搜索到。如果怕别人也用同样的名字,可以选择注 册商标、认证、提高互动率等方式,提高公号排名。 (2)搜索微信号,通过这种方式关注的用户,理论上应该都是来自微信ID在别处的曝光,比如经常用的互推,还有微博、人人网、百度贴吧等SNS网站和传统媒体、线下 等推广方式。微信ID是一串字母加数字的结合,记忆和输入都很难,所以最好是结合公众号的名称设定ID,不但让人好记还好输入。尽量减少用户的记忆和输入成本,会在一定程度上增加关注量。

(3)图文消息右上角菜单,这个关注按钮隐藏较深,很多人不知道阅读文章时的右上角按钮里还隐藏了这么多功能,而且需要经过2步才能到公众号介绍页,这个按钮不是在所有阅读的情况下都会出现,所以通过这个方式关注公众号的占比很低。 (4)名片分享,直接的名片分享,一般应该都是通过口碑传播,这个数据占比越高,说明这个号的质量越好 (5)其他,大部分账号的粉丝来源,都是“其他”类最多,一般包括3个渠道,图文消息标题下蓝色链接、微信公众号二维码、广点通系统推广 a、图文消息标题下蓝色链接: 这种蓝色链接字体关注的方式是较为常见的一种关注方式,而且很方便,用户点击一下就可弹出关注界面。很多公众号都会在图文页面中加上提示,让用户关注公众号。 提示:最近看到不少微信公众号的微官网做的很炫、很漂亮,但是都没有引导用户关注公众号的快捷通道;这点需要注意一下,要不然辛辛苦苦做的宣传推广,反而没能带来粉丝的增加,就可惜了。(采用微易销打造的微官网,可以完全避免这个问题) b、微信公众号二维码(包含线上二维码跟线下二维码两部分内容) 线上二维码: 主要是通过PC端进行微信二维码的宣传,从而引导用户关注公众号;常见在pc端页面,视频广告中,或通过QQ群等方式进行公众号推广,直接扫描二维码更加方便。现在最新的微信版本中,在微信里出现的二维码,用户可以通过长按来识别,快速添加二维码,所以企业在如今的推广中,线上二维码显得特别重要。 线下二维码: 此种营销宣传的方式比较多,而且不固定,比如通过宣传单,商品包装盒,快递,线下促销活动海报、甚至是电视等等,这些都是线下二维码展示的案例! c、广点通系统推广 已开通广点通广告系统的公众号,点击文章最底部的蓝色链接,会跳转到新页面,直接通过右下角的“关注”按钮去关注公众号。有个叫“尚品宅配”的账号,利用广点通,一个多月积累了50多万粉丝,那这个“其他”的占比应该可以到95%以上 第二部分:图文阅读分析

微信运营三大项数据分析

https://www.sodocs.net/doc/6c16233427.html, 微信运营三大项数据分析 用户分析 一、用户分析模块查看方法 在微信公众平台=》统计=》用户分析=》用户增长/用户属性,即可查看粉丝人数的变化/当前公众平台粉丝的分布情况。 二、用户增长说明 在微信公众平台=》统计=》用户分析=》用户增长,可查看粉丝人数变化情况。 1、昨日关键指标模块:针对昨天的关注人数变化,以及与前天、7天前、3 0天前进行对比,体现为日、周、月的百分比变化。 2、关键指标详解趋势图:可选择7、14、30天或某个时间段的关注人数变化,也可以选择按时间对比。 3、指标说明: 新关注人数:新关注的用户数(不包括当天重复关注用户); 增长来源统计:可按照全部来源、搜索公众号名称、搜索微信号、图文消息右上角菜单、名片分享、其他来源查看新关注人数;(其他来源:通过二维码关注)

https://www.sodocs.net/doc/6c16233427.html, 取消关注人数:取消关注的用户数(不包括当天重复取消关注用户); 净增关注人数:新关注与取消关注的用户数之差; 累积关注人数:当前关注的用户总数。 温馨提示:数据导出方法:用户增长-详细数据-导出CSV 三、用户属性说明 微信公众平台所有用户会按性别、语言、省份的分布情况进行统计; 性别分布:按男、女和其他分类;(指粉丝微信里的设置) 语言分布:按简体中文、繁体中文、英文、未知分类;(指粉丝手机上设置的语言类型) 省份分布:按省份、未知城市分类;(指粉丝微信注册IP归属地) 终端分布:查看用户使用的手机终端; 机型分析:针对使用的手机机型展示排名TOP前10。(显示Apple-iPhon e4;1,位数4指的iPhone版本,位数1指的是苹果公司内部版本号) 四、关键指标更新时间 每日数据统计截至晚上24点,会在第二天中午12点前显示昨天的最新数据。由于服务器缓存,以及指标计算方法和统计时间的差异,数据可能出现微小误差。

微信的数据运营

在大数据时代下,数据与精准营销早已紧密联系在了一起,作为运营人员,要把点对面发展成点对点的精准模式,最终离不开数据统计。可以说,数据不是万能的,没有数据却万万不 能!对数据进行挖掘和分析,应该是运营人员具备的基本能力。 而对于微信公众号的运营来说,数据同样重要,从公众号系统后台的多次更新迭代图文分析就可以看出其不可或缺性。下面,就跟草莓君一起探索微信公众号图文分析不得不说的奥秘。 一、从图文分析的更新迭代中把握总体数据功能 1、公众号首次发布数据统计功能是在2013年8月。 在首次的图文分析功能中,包括了基本的数据统计,具体如下(图片中的文字出自微信公 众号后台系统公告): 2、公众号后台再次更新数据统计功能是在2014年8月。 微信公众号后台再次更新图文分析,增加和完善了部分功能,具体如下(图片中的文字出 自微信公众号后台系统公告): 由此可以看出图文分析包含的功能相当丰富,最大程度地满足了公众号运营人员获取数据的需要,接下来,草莓君将从两大方面为大家解读。 二、解读单篇图文分析里面的数据奥秘

单篇图文分析包含转化率、趋势图、用户分布、阅读来源以及阅读趋势。 1、转化率分析 理解一下转化率,为什么图文分析中要有转化率的存在呢?事实上,转化率是衡量一篇微信文章价值的重要因素,它可以直观地展现受众是否乐于为文章买单,是否获得良好的传播效果,甚至是病毒式传播。 转化率使用百分比表示,但并没有限制,换句话说就是可以超过100%。而且,转化率越高,说明文章的传播效果越好。下面盒草莓君以“企业微信来了,你需要了解的是...”为例,给大家讲解转化率。 这里的转化率,分为三种,首先是图文转化率,它是整个文章总的阅读转化情况,统计的用户包括已关注的粉丝和非关注人群。图文转化率=图文阅读人数/送达人数,因此在上图中,总的图文转化率=746/1210=162.1%;这说明图文的阅读量超过了推送的受众个数,是一次较为成功的传播,吸引了许多非关注受众的目光。 其次,是一次传播的转化率,那么,一次传播是什么呢?就是文章在公众号首次推送时送达给关注了该公众号的用户,用户通过会话阅读文章或者分享文章到朋友圈的行为。 这里的一次传播转化率有两个,其一:公众号会话阅读率=公众号会话阅读人数/送达人数=13.14%,说明有13.14%的关注粉丝在会话中点开并阅读了推送文章;其二:从公众号会话

基于微信公众平台的需求分析范文

目录 1. 引言 (2) 1.1 目的. (2) 1.2 定义. (2) 1.3 参考资料. (3) 2. 软件总体概述. (3) 2.1 软件标识. (3) 2.2 软件描述. (3) 2.2.1 系统属性. (3) 2.2.2 开发背景. (3) 2.2.3 软件功能. (4) 2.3 用户的特点. (7) 3. 具体需求. (8) 3.1 功能需求. (8) 3.2 性能需求. (11) 3.3 数据库需求. (11) 3.4 设计约束. (12) 3.4.1 技术约束. (12) 3.4.2 硬件约束. (12) 3.5 属性. (13) 3.5.1 可用性. (13) 3.5.2 可靠性. (13) 3.5.3 效率. (13) 3.5.4 安全性. (13) 3.5.5 可维护性. (13) 4. 数据字典. (14)

1.引言 1.1目的 微信公共平台是目前国内最大用户群的移动互联网应用——微信。它的相关用户体验已经非常的完善,用户的自由度非常的高,随着微信越来越大众化,普及化,国际化。微信的用户数量急剧增大,有很多的人每一天的空余时间都在刷微信,每一个人用在微信上的时间每一天是2至3小时。微信有大量的活跃用户。而微信公众平台是专为企业、组织部门、个人提供的平台。是微信增加的一种功能。 其中的用户订阅推送功能都能够自主选择,而且它加入的门槛非常的低,任何人都可以免费加入。如今,微信已成为一种潮流,几乎可以在每个人的手机里都可以看到这个软件的存在,不管你是用还是不用,因此,它具有广泛的市场需求。 信公众平台也可以说是微信的互动营销方式,对于大众化的媒体,明星以及 企业而言,微信开放平台和朋友圈的社交分享功能的开放,已经使得微信作为一种移动互联网上不可忽视的营销渠道,那么微信公众平台的上线,则使这种营销的渠道更加的细化和直接。微信公众平台是未来的一种新的商业模式(O2O),让用户与商家更好做线下线上的互动。基于微信平台的周边信息检索开发主要从这几 方面考虑。第一,微信用户数量庞大,微信用户有7.8亿。第二,便于商家和同学的互动。让学生了解周边吃、住、玩、培训考试、出行信息、招聘信息、打折 信息等。 而基于微信公众平台的周边信息检索系统,主要用户是大学城的周边学生。 有时候我们会听到同学们抱怨去哪里吃饭啊,周边宾馆的电话是多少啊?哪里最好玩啊?租车的电话是多少啊?哪里有优惠活动啊等等。商家关心的是我要做活动怎么及时的宣传到位啊,地点偏僻点的怎么让学生了解到我?我们基于微信公 众平台信息的检索主要解决的问题就是大家在身边遇到的这些问题,帮学生更好的了解周边,帮商家做宣传。基于微信公众平台的信息检索是一种信息的检索 互动。从而实现学生的方便,实现商家利润的最大化。 1.2定义 微信公众平台:是腾讯公司为个人、组织机构、企业提供的一个平台。基于 微信公众平台的周边信息检索系统:通过微信提供的接口,在微信公众平台的基础上新开发的一些功能。主要是把周边商家的信息收集起来,为学生提供信息检索。

微信自定义菜单错误代码解决方法

公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 全局返回码说明如下 返回码说明 -1 系统繁忙 0 请求成功 40001 获取access_token时AppSecret错误,或者access_token无效(可以重置试试)40002 不合法的凭证类型 40003 不合法的OpenID 40004 不合法的媒体文件类型 40005 不合法的文件类型 40006 不合法的文件大小 40007 不合法的媒体文件id 40008 不合法的消息类型 40009 不合法的图片文件大小 40010 不合法的语音文件大小 40011 不合法的视频文件大小 40012 不合法的缩略图文件大小 40013 不合法的APPID 40014 不合法的access_token

40016 不合法的按钮个数 40017 不合法的按钮个数 40018 不合法的按钮名字长度 40019 不合法的按钮KEY长度 40020 不合法的按钮URL长度 40021 不合法的菜单版本号 40022 不合法的子菜单级数 40023 不合法的子菜单按钮个数 40024 不合法的子菜单按钮类型 40025 不合法的子菜单按钮名字长度 40026 不合法的子菜单按钮KEY长度 40027 不合法的子菜单按钮URL长度 40028 不合法的自定义菜单使用用户 40029 不合法的oauth_code 40030 不合法的refresh_token 40031 不合法的openid列表 40032 不合法的openid列表长度 40033 不合法的请求字符,不能包含uxxxx格式的字符40035 不合法的参数 40038 不合法的请求格式

利用微信后台数据分析潜在客户

利用微信后台数据分析潜在客户 想运营好微信公众号,需要好好研究研究微信公众平台后台提供的数据显示以及统计功能更,比如增粉掉粉情况,图文阅读量留言点赞次数等信息,对于运营微信自媒体是很有益处的。这次要给大家讲的数据主要分为3个部分,用户增长来源分析、图文阅读分析和用户属性分析,虽然我是科技类的自媒体,但是对于数据影响因素的分析还是具有一定的普适性,所以小编希望通过解读本号数据背后影响因素,能给大家的微信公号运营,带来一些实质性帮助。 第一部分:用户分析 1:用户新增来源的5种方式 【搜索公众号名称】:即搜索微信微信公众号的名称获得关注,这类号一般是具有一定的品牌知名度,或定位足够垂直,或广告宣传到位,用户会自通过关键词搜索,例如杜蕾斯、汽车、北京(地方号)、移动互联网、PPT等。所以在取名的时候,要取与公号定位相符的名字,有利于被搜索到。如果怕别人也用同样的名字,可以选择注册商标、微信微信认证、提高粉丝互动率等方式,提高公号排名。 【搜索微信微信号】:通过这种方式关注的用户,一般属于较为精准的用户,毕竟微信微信ID是一串字母加数字的结合,记忆和输入都很难,所以最好是结合公众号的名称设定ID,不但好记还好输入。尽量减少用户的记忆和输入成本,会在一定程度上增加关注量。建议使用拼音、英文名、字母+简单数字等组合,不太建议在微信微信号中加个下划线或短杠,会导致输入困难,关注量下降。 【图文消息右上角菜单】:这个关注按钮隐藏较深,很多人不知道阅读文章时的右上角按钮里还隐藏了“查看公众号”的功能,所以通过这个方式关注公众号的占比很低。

【名片分享】:直接的名片分享,一般应该都是通过微信微信人与人,或微信微信群的口碑传播,这个数据占比越高,说明这个号的质量越好,受欢迎程度越高。 【扫二维码及其他】:大部分账号的粉丝来源,都是“其他”类最多,一般包括3个渠道,图文消息标题下蓝色链接、微信微信公众号二维码、广点通系统推广 a、图文消息标题下蓝色链接: 这种蓝色链接字体关注的方式是较为常见的一种关注方式,而且很方便,用户点击一下就可弹出关注界面。很多公众号都会在图文页面中加上提示,让用户关注公众号。 账号通常也会在页面底部提示大家点击阅读原文进行关注,其实也是利用这样的方式;只是跳转了一个页面,比如点击阅读原文后跳转到这么一个提示页面:

微信自定义菜单开发教程

自定义菜单开发模式详解 一、如何获取凭证(token) 话说微信的接口指南一直做得不咋地,这边鼓励大家都转服务号,这边给的说明文档除了码农真没几个能看明白的,一点也不考虑大量的小白运营者,干脆叫指北算了。 牢骚完毕先说下开发自定义菜单第一步要做的就是获取凭证,即access_token,这步非常重要,微信接下来会开放更多的开发接口,开发者要操作接口都要通过这个access_token,而这个凭证是需要通过接口来生成的,并且是有失效时间的。 生成凭证需要两个第三方的固定ID和秘钥,进入开发模式的页面,已经获取到自定义菜单接口权限的朋友会看到下图: 除了原来接口通讯url和自己设置的token多了两个新字段即Appid和AppSecret,也就是第三方的固定ID和秘钥,有了这个就能通过接口程序获取到临时的凭证。将这两个id放到代码如下图位置:

这段代码主要是初始化了memcache和curl类,分别是缓存和抓取用的,同时将ID和秘钥也赋值了。接下来就是通过接口获取token,代码如下图: 这是一个获取接口的函数,函数运行时首先是监测缓存中是否已经有token,如果有则直接从缓存中取,要知道官方限制每天只能获取100次token,所以做个

缓存很有必要。 如果缓存中没有token或者缓存时间过期,那么就使用curl这个类发送Appid 和AppSecret到接口获取token,curl_setopt是定义抓取属性的,curl_exec是运行抓取,想了解相关的可以百度一下。 获取的到是一个json格式数据,使用json_decode转化为数组,然后判断是否获取到,如果没有则输出错误信息,获取成功则将该token保存到缓存中,同时函数返回token退出。这样我们就很方便的拿到了凭证。 二、自定义菜单创建、查询和删除 拿到access_token以后我们就可以开始进行自定义菜单操作了,首先是创建自定义菜单,官方说明很简单“通过POST一个特定结构体,实现在微信客户端创建自定义菜单。”然后有一个特定结构体的示例,如下图:

微信订阅号开通自定义菜单流程

微信订阅号开通自定义菜单流程 大家都知道微信自定义菜单的好处,微信导航的功能极大的方便的各类营销活动。而订阅号每天可以发送消息,也起到了很好的推广作用。那么,订阅号如何获得自定义菜单功能呢?专业微信营销机构杰客科技指出,企业、政府、媒体、个体、个人、工作室、网站的订阅号均可帮忙开通自定义菜单接口,以下是详细流程。 ?订阅号菜单的形式 可创建最多3个一级菜单,每个一级菜单下可创建最多5个二级菜单。并且可设置订阅者点击菜单后,公众号做出的相应动作。如发送信息、跳转到网页(商品购买页面)。 ?订阅号如何开通菜单 企业、政府、媒体、个体、个人、工作室、网站的订阅号均开通自定义菜单接口,需要的资料为微信账号信息、身份证、手机、邮箱、联系地址等。将以上资料整理好发给杰客科技在线客服人员,即可帮忙开通自定义菜单功能。所需时间为3工作日左右,要求提供的照片清晰、信息准确。 ?自定义菜单设置方法 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示: 目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。 ?菜单功能按钮 目前自定义菜单接口可实现两种类型按钮,如下: click: 用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互; view:

微信公众号创建自定义菜单之前的准备工作

微信公众号创建自定义菜单之前的准备工作 微信公众号现在还没菜单,所以首页给我们的微信公众号创建几个菜单出来。想做出菜单,当然是通过代码来做,通过阅读微信文档发现,我们通过代码访问微信API时,会经常用到一个access_token,可以说accees_token就是我们访问API的钥匙。access_token是公众号的全局唯一票据,公众号调用各种接口时都需要使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个 字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。所 以我们首先解决的问题是,如何统一地来管理我们应用中的access_token,而不是每次需要时去生成一次,因为这样会非常低效。我们提供的解决方法就是使用缓存,第一次获取到access_token后将它放到缓存里并且设置缓存的过期时 间是2个小时,然后每次需要access_token时直接去缓存 获取,如果获取不到了说明过期了,我们就重新生成一次再丢入缓存,这样基本上只需要每隔2个小时左右生成一次access_token,而且因为大部分情况下我们都是直接从缓存中获取access_token的,所以效率很高。一般的PHP框架都提供了缓存的实现,我们只要知道怎么使用就好了,因为Think-php是目前国内使用最多的PHP框架,我们打算也随

大流,使用Thinkphp来作为我们的框架。(1)在官方下载3.2.3的完整版本。(2)将解压后的文件拷贝到edu83cn项目目录下。(3)在Eclipse里面刷新项目根目录,我们就可以看到所有被复制进来的文件。(4)重启WAMP服务器, 访问edu83cn项目地址,这样在我们的application目录下 就会自动生成Common和Home目录结构,如图所示。我 们将把access_token令牌管理类放在Application下面的Home/common目录下。我们在该目录下创建一个TokenUtil.class.php的类,其命名空间就是Home\Controller。增加一个静态方法fetchToken(),其目的就是判断缓存中 是否存在token,存在则返回,不存在则先获取保存到缓存中。ThinkPHP默认的缓存是文件缓存,默认情况下缓存数 据永不失效。在配置文件convention.php里面可以查看到,如图所示。我们来看看fetchToken()的实现代码,如图 所示。 代码很少但是完成的功能却很多,这也是PHP的一个优点。上面的代码中,我们省略了具体的获取最新Token的代码部分,因为它需要调用微信API来做,而调用微信API也需要做一个封装,所以放到后面统一来说。我们分析一下后台代码和微信平台之间的所有关联,发现有2种类型的交互:第1种就是当用户在手机端点击微信公众号而触发的各种动作,这种类型的交互是由用户发起,经过微信平台转发给我们的

史上最详细微信公众后台数据分析

史上最详细微信公众后台数据分析 数据分析微信公众号datadw 契约导读:微信后台数据更加详细之后,我在点点客北京研究院和助理对本号从7月9日到8月7日的数据进行了详细分析。主要分为3个部分,用户增长来源分析、图文阅读分析和用户属性分析,虽然我是科技类的自媒体,但是对于数据影响因素的分析还是具有一定的普适性,所以我希望通过解读本号数据背后影响因素,能给大家的微信公号运营,带来一些实质性帮助。 第一部分:用户增长来源分析 1:用户增来来源的5种方式

(1)搜索公众号名称,搜索微信公众号的名称获得关注,这类的号原本就有一定 的品牌,或定位足够垂直,当用户有这方面需求时,就会自己通过关键词搜索。比如可口可乐、杜蕾斯、汽车、减肥、羽毛球、北京(地方号)、移动互联网等。所以在取名的时候,可以取一个和公号定位相符的名字,有利于被搜索到。如果怕别人也用同样的名字,可以选择注册商标、认证、提高互动率等方式,提高公号排名。比如本号“移动互联网”这个名字,就是一个很好的占位,而且在搜索的时候,一直排在第一名,必然会导入大量精准粉丝,所以在本号的粉丝来源里占了39%。 (2)搜索微信号,通过这种方式关注的用户,理论上应该都是来自微信ID在别处的曝光,比如经常用的互推,还有微博、人人网、百度贴吧等SNS网站和传统媒体、线下等推广方式。微信ID是一串字母加数字的结合,记忆和输入都很难,所以最好是结合公众号的名称设定ID,不但让人好记还好输入。尽量减少用户 的记忆和输入成本,会在一定程度上增加关注量。本号通过搜索微信ID的占比不是很高,才8%,这应该和我几乎不参加互推有关,如果经常参加互推的号,这个占比应该高很多。 (3)图文消息右上角菜单,这个关注按钮隐藏较深,很多人不知道阅读文章 时的右上角按钮里还隐藏了这么多功能,而且需要经过2步才能到公众号介绍页,最坑爹的是这个按钮不是在所有阅读的情况下都会出现,所以通过这个方式关注公众号的占比很低。 (4)名片分享,直接的名片分享,一般应该都是通过口碑传播,这个数据占 比越高,说明这个号的质量越好 (5)其他,大部分账号的粉丝来源,都是“其他”类最多,一般包括3个渠道,图文消息标题下蓝色链接、微信公众号二维码、广点通系统推广

微信公众平台创建自定义菜单

微信公众平台如何创建自定义菜单? 方法/步骤 1 1. 登录【微信公众平台】,选择【功能】菜单下面的【高级功能】,进入【开发模式】。 2 2. 由于小编的微信公众平台还没通过认证,下面用【申请测试账户】为大家演示。

3 3. 微信公众平台接口测试帐号申请,无需公众帐号、快速申请接口测试号,直接体验和测试公众平台所有高级接口,直接用微信扫描左边的二维码。 4. 手机扫描后弹出【应用登录】,即将登录公众平台测试账户系统,确认即可。

5. 微信公众平台跳转到【管理测试号】页面,测试号有效期一年,这里有2个比较有用的信息,appID和appsecret,等一下调试接口需要用到。 6. 【管理测试号】页面往中间部分,有个【测试号二维码】,找用直接的个人微信扫描二维码就可以关注我们的测试平台了。

7. 【管理测试号】页面最后部分,是不是看到我们想要的接口了,那就是【会话界面自定义菜单】。 8. 点击进入【公众平台开发者文档】下的【自定义菜单创建接口】,当然这个文档我看了很多遍,都是没明白怎么弄。 9. 回到文档的最底部,有一个【使用网页调试工具调试该接口】链接,直接进去。

10. 进入【微信公众平台接口调试工具】,一接口类型:自定义菜单;二接口列表:自定义菜单创建接口/menu/create,三参数列表里面有2个带红色星号值是要我们必须填写的,即access_token和body。 11. 获取access_token(调用接口凭证),也是在本页【微信公众平台接口调试工具】获取,一接口类型:基础支持;二接口列表:获取access_token接口/token;三参数列表:grant_type不用管,appid和secret就是功能申请测试号叫大家记下的,也可以去管理测试号复制,填写好,按【检查问题】,请求成功,橙色字母就是我们想要的access_token。

相关主题