如何利用微信公众号实现对用户的意见收集

一、背景

背景是私营主高某想要做一个类似于“民意调查”的东西,但是这个东西要形式友好,做好有二维码作为推广物料,并且让参与的人愿意参与操作简单不抵触

一开始我们的方案是使用电子问卷,比如问卷星这样的H5产品,但是问卷这东西大家都懂,现在太铺天盖地,当别人发给你一份问卷的时候,第一反应就是头大。所以显然问卷不符合我们形式友好、操作简单的诉求。于是自然而言想到微信公众号这个主流平台,微信背书,产品友好,而且自然流量巨大,容易推广。

二、准备工作

第一步就是需要有个微信公众号,最好是企业订阅号,这一点高某已经满足,并且公众号有专人维护。那么接下来就是要把微信公众号本身提供的强大的运营功能用起来。

作为从事过微信生态开发的人都知道,微信生态具备强大的可开发性(公众号、订阅号、小程序、小游戏),公众号内部还可以跳转网页,而微信本身为网页加载提供了专门的Webview作为容器进行承载,所以任何由开发者维护合法H5网页都可以通过微信公众号内部打开。

但是高某的诉求是方案一定是要同时面向使用者和维护者都简单易用,不能搞的太复杂,而且实现快,所以我们最好是利用微信公众平台提供的现有功能来实现这一诉求。

三、方案实施

微信公众平台

我们看一下一个普通的微信公众号管理后台是什么样的,可以做什么。☞ 传送门

image

我们这次的方案主要使用到【自动回复】【自定义菜单】【消息管理】这3个菜单,分别看一下

第一步:自动回复

我们通过编辑被关注回复设置用户关注本公众号后的首次问候如下

image

第二步:收到消息回复

这里的内容用于在收到用户向公众号发送消息后的立即响应,可以给用户一个良好的反馈感

image

第三步:自定义菜单

这里我们可以自定义设置用户关注公众号后看到的公众号底部菜单,通过如下设置,进入到我们的公众号后便可在底部看到

image

效果如下

image

四、消息收集

当我们做好这个功能以后,如何管理用户发给我们的消息,微信公众平台提供了消息管理菜单给我们查看最多近五天的所有用户消息

image

但是高某希望能够不仅限于通过微信公众平台来看用户消息,而想能够把这些内容导出到excel表格中,这个能不能做到呢?

从微信公众平台只管来看,是没有为我们提供消息导出功能的,但这功能又想实现,怎么办。是时候展现真正的技术了!

五、奇淫技巧

控制台分析XHR请求

首先我们实现的方案前提是尽可能少的通过开发手段解决,那就只能利用现有资源进行组合来实现我们的诉求。消息既然已经能看到,那我们打开浏览器控制台看看有没有接口可以用来捕捉数据。

image

原来消息列表竟然不是通过接口请求获得的,那么看一下URL地址

image

消息竟然是通过URL请求直接返回页面资源并内嵌其中的,既然PC端走不通,那我们考虑一下移动端抓包。因为查看公众号消息不仅可以通过微信公众平台查看,还可以使用官方提供的小程序【公众平台助手】在移动设备上管理粉丝消息,如下

image

移动端抓包

再看看这个小程序我们抓包抓到了什么

image
image

JSON解析

通过JSON工具解析一下如下

image

六、数据处理

实现JSON转Excel

既然我们已经能够拿到序列化后的JSON数据,那后续操作就简单了,就是简单地实现将JSON整理导出为excel文件,实现代码如下

<html>
<head>
  <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件</p>
  <button onclick='tableToExcel()'>导出</button>
</head>
<body>
  <script>
    function prefixDate(origin) {
      const str = origin && origin.toString()
      if (str.length === 2) return origin
      if (str.length === 1) return '0' + str
    }
    function getDate(dateValue) {
      let temp = dateValue
      if (temp && temp.toString().length === 10) temp = temp * 1000
      const date = new Date(temp)
      const year = date.getFullYear()
      let month = prefixDate(date.getMonth() + 1)
      let when = prefixDate(date.getDate())
      let hour = prefixDate(date.getHours())
      let minute = prefixDate(date.getMinutes())
      let sec = prefixDate(date.getSeconds())
      return `${year}-${month}-${when} ${hour}:${minute}:${sec}`
    }
    function tableToExcel() {
      const jsonData = [
        ...
      ]
      //列标题,逗号隔开,每一个逗号就是隔开一个单元格
      let str = `微信名称,消息内容,是否已回复,发送时间,微信头像\n`;
      //增加\t为了不让表格显示科学计数法或者其他格式
      for (let i = 0; i < jsonData.length; i++) {
        const data = jsonData[i]
        const nick_name = data.nick_name.toString()
        const content = data.content.toString()
        const has_reply = data.has_reply === 1 ? '是' : '否'
        const dateStr = getDate(data.date_time)
        const avatar = data.wx_headimg_url.toString()
        str += `${nick_name}\t,${content}\t,${has_reply}\t,${dateStr}\t,${avatar}\n`
      }
      //encodeURIComponent解决中文乱码
      let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
      //通过创建a标签实现
      let link = document.createElement("a");
      link.href = uri;
      //对下载的文件命名
      link.download = "用户消息.xls";
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    }
  </script>
</body>
</html>

导出下载

使用浏览器打开这个HTML文件

image

点击【导出】,最终得到效果如下

image

七、如何使用

  1. 配置微信公众平台
  2. 使用公众平台助手小程序抓包得到数据源
  3. 将数据源配置到导出脚本
  4. 导出下载Excel文件

八、总结

方案实现流程

image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容