微信公众号教程(9)公众账号发送欢迎图文消息

第十章 公众账号发送欢迎图文消息

昨天已经讲了如何实现用户订阅公众账号时发送欢迎词,但这个貌似体现不出开发模式的优势啊,我用编辑模式做不是更加简单嘛,那么今天就来个升级版的欢迎词吧。先看最后的效果,如下图:

当用户关注公众账号时自动回复一个多图文消息,每个图文消息可以对应一篇文章或者自己网站的某个网页,用户点击就可以查看,是不是非常棒,特别适合一些企业用来做公司业务介绍。现在就教大家如何实现,顺便就可以把图文消息的回复讲了。

一、使用SAE的分布式存储服务

在编辑模式里做图文消息回复时,直接通过关键字回复就可以很方便的实现,但是编辑模式下的关注回复不能用图文消息,所以大家都是用文字的,但是在开发模式里就可以使用了,图文消息的输出格式如下:

其中图片是用图片链接(在上图标签PicUrl处)的形式出现,也就是图片得先上传到服务器,然后将图片连接放置到输出代码里,这里提供三种图片连接生成方法:

1、直接复制第三方网站的图片链接,比如我们在百度图片搜索到某张图片,将该图片的链接直接复制过来就可以,非常方便,但是如果第三方网站把图片删除或者说有防盗链机制,就会造成图片不显示。所以不推荐这类方式,除非可以保证该图片链接永久有效。

2、将图片上传到新浪微博、腾讯微博这些地方发微博(微信的素材管理图片链接不能使用),然后将图片链接复制过来,这里要注意的是记得把微博水印关掉,否则这个图片上就带着你的微博名字了。

3、咱们都已经在用云计算平台了,就顺便用下云存储服务吧,我目前自己是在用又拍云存储,那个有点复杂后面做具体完整项目时再介绍。

现在先使用SAE的 Storage存储服务,这是SAE为开发者提供分布式文件存储,因为SAE平台限制使用本地存储,所有需要持久化的文件比如图片、音乐等只能保存到Storage上。

首先是启动Storage服务,进入咱们的应用首页,在左边导航里找到”Storage”这个选项,如下图:

点击打开后右边页面会进入开启“Storage”服务的设置页面,如下图:

点击“新建一个domain”按钮,进入存储空间的设置页面,如下图:

  1. 存储空间的名称,只能由数字和字母组成,根据自己喜好取个吧。
  2. 存储空间的介绍,用来提示该空间的用途,比如我这个是用来放图片和音乐文件的。
  3. 是否私有云存储,如果打勾则无法通过URL直接访问,只能通过程序接口读取访问,咱们不用搞那么复杂所以别打勾了
  4. 缓存时间。这个可以减少服务器的负担,一般设6小时就可以了。
  5. 防盗链设置。可以设置能够访问文件的白名单网址,咱们也不用搞那么复杂所别打勾了。

创建成功以后在右边会出现存储空间管理,如图:

  1. 存储空间属性修改,除了名称不能修改以外其他都可以,包括设置访问权限、说明、防盗链以及缓存时间修改等。
  2. 删除该存储空间,删除时将会将会把该空间内所有文件都删除,所以小心操作。
  3. 管理存储空间。点击后进入管理页面,可以看到存储空间默认的容量是10G,肯定够用,如下图:

  1. 下载客户端,直接用应用程序管理存储空间,有点像FTP管理,咱们现在是初学者,不用去管这个。
  2. 返回Storage的管理首页。
  3. 新建子目录方便文件分类,比如可以建一个目录叫pic,里面存放图片文件。

    上传文件,点击后弹出文件上传窗口,跟普通的文件上传操作一样,支持批量上传,我就不多介绍了,微信开发模式只支持jpg和png文件,请注意图片文件格式。另外需要注意的是文件名需要规范,不要和之前的已经上传的文件同名,否则会覆盖掉,建议每次上传前使用日期+编号+文件名的方式。这里给大家一个我上传图片后的样例:

点击图片名称就会在新窗口打开该图片,复制浏览器的URL就是该图片的链接,可以直接用到图文消息的代码里。

可能有朋友会说为什么不把图片直接上传到SAE的代码管理目录里访问,确实可以这样做,但是不推荐这样做,一个是代码的空间大小默认只有100M,扩容会增加开销,二是代码空间是用来跑脚本的,同等流量费用要高很多,三是代码空间不允许写入文件,将来无法实现通过程序上传图片的功能。

二、制作多图文消息

啰嗦一大堆朋友们都等急了吧,现在我们开始做图文消息欢迎词!

昨天我教大家的是用户订阅后回复文字消息,最后实际输出的是一个经过拼装的符合文字消息回复格式的字符串,其结构如下图:

里面的一些带“$”的变量在前面代码都赋了值,最后回复到微信公众平台接口的实际消息是这样:

现在打开SAE的代码管理,进入编辑模式,修改我们的微信接口文件,首先将代码中第29行到第31行的三行代码注释掉,就是输出文本消息的三行代码,如图所示:

注释多行代码使用/*.....*/来包含,在中间的所有内容都不再被执行。

然后在注释前面开始写图文消息回复,前面我们看到过图文消息回复的格式了,现在就是要拼接出一个符合图文消息回复格式的字符串,当用户关注时回复给用户,首先我们把图文消息的公共部分先赋值,如图:

代码从30行开始,前面的跟昨天是一样的,就是监测是否用户订阅事件。

首先是赋值给$resultStr这个变量图文消息的数据头部,跟文本消息的差不多,只是昨天是用了sprintf这个函数直接将数据写到模板里去了,今天是拿模板直接来用,实际效果是一样的,与文字消息不同的是:

第34行,MsgType变成了news;

第35行多了一个ArticleCount,这个值表示多图文消息的条数,包括了封面消息在内,我这里是5,各位可以根据自己实际修改。

当ArticleCount为1,只放一条消息时则为单图文消息,大于2,放了两条消息以上则为多图文消息。

第36行是图片消息列表标签的开始,最后会有一个</Articles>来闭合整个图文消息列表。

PS:在php里字符串的拼接使用“.”,echo "A"."B";输出的是AB。当然高级程序猿为了提高运行效率会使用其他方法来拼接字符串,这里就不说了。

然后是封面消息,如图下:

这里可以看到$resultStr和“=”之间多了一个“.”,这也是字符串拼接语法,等于$resultStr=$resultStr.“....”,将新的字符串拼接到之前已经赋值的$resultStr后面再赋值给$resultStr。

图文消息里用<item>...</item>来区分各条消息,每条图文消息数据格式都一样,分别为:

第41行,图文消息的标题

第42行,图问消息的摘要,如果是多图文可以为空不填写,如果是单图文消息需要填写。

第43行,封面图片,放置图片链接,官方给出较好的效果为大图即多图文的封面消息图片为640*320,小图即列表消息的缩略图80*80,注意这里的图片其实可以跟实际链接打开的文章图片不一致。

第44行,文章链接,放置点击该图文消息时打开的页面,这里可以放置自己的网页链接,比如淘宝店的或者自己网站的,当然也可以放置微信公众平台的图文消息链接(ZTalk的文章查询里其实放的都是微信文章链接,省事又省流量,哈哈哈)。

剩下就是放四个列表消息,结构跟封面消息其实是一样的,只是在多图文消息模式下默认会将第一个消息作为封面消息,如图:

只需要将前面的封面消息复制粘贴一下,然后把标题、摘要、图片和连接这些修改下就可以了。

最后是把图文消息的尾巴加上,如图:

第76行就是我前面说的闭合图文消息内容;

第77行是用来星标用户请求消息的,由于这个消息是其实是用户订阅事件,不用打星标,所以这里的值为0。

第78行是闭合整个输出图文消息结构的。

好了,现在保存下,重新关注下公众账号,看看是否成功回复了一个图文菜单,是不是很有成就感!

给大家一个作业:试试关注时回复单条图文或者5条以上的多图文消息。

ZTalk秘籍

微信开发的调试是个很麻烦的事情,为什么呢?因为接口是微信来调用的,所有的结果都是返回到微信公众平台去的,我们无法得到运行结果,除了语法错误还可以直接打开接口网页看错误提示,比如下图表示我的代码第16行语法错了:

其他错误就全得从公众账号里看了,但实际上只要有错,公众账号里啥反应都没有了,一般来说就是逻辑出错或者变量没有获取到值什么的,这个时候就需要设置一些断点来检查,比如我们在今天的这个课程中如果发现订阅后没有任何欢迎提示,我们可以在输出前设置一个断点,将结果先保存成一个文件,然后查看该文件检查结果是否正确,如图:

前面说了SAE不允许在本地生成文件,所以我们得把文件生成到Storage存储空间去。

第87行是新建一个Storage的对象,定义为$s;

第88行是写入一个文件到Storage空间,格式为$s->write(空间名称,写入文件名,写入的内容)

然后我们取消并重新订阅公众账号后,到Storage会看到多了一个test.txt的文件,如图:

点击打开后就可以看到内容,如果正常的话里面内容就是多图文消息的XML数据,如图:

如果文件没有生成,或者文件里面是空的,就说明程序运行有问题,咱们把断点上移,因为程序运行一般是从上至下的,所以我们可以把断点放到第一个逻辑判断处,如图我移动到了是否接收到微信接口发送消息的判断位置:

主要是监测有没有收到微信的请求,我直接用字符串"get_post"(记得字符串要用双引号包含)来代替之前的变量,然后在公众号里发送任意字符,再查看Storage里的test.txt文件,如果正常文件应该生成,并且里面应该有“get_post”,否则就是出错了,那要检查公众平台是否已经和SAE应用正常通讯了。

断点一般是检查变量的赋值是否正确,或者是否从接口获取到了值,或者代码逻辑是否正确。比如可以移到图中这个逻辑判断后面,文件写入内容直接用字符串比如"subscribe",然后取消关注再订阅公众号,监测是否收到了订阅事件,如果文件里有subscribe字样就表示运行正常,否则就是出错了:

今天的课就先到这里,明天讲关键字回复以及……N多人关心的如何播放音乐!!!!

有朋友反映:手机上图文消息显示长的英文网址有问题,昨天的下载链接就没有显示完整导致无法下载,建议大家接下来可以在网页上看教程,方法是点击右上角的按钮,在弹出的菜单里选择“复制链接”,然后将链接通过邮件等方法发送到PC上,然后在PC上打开看会比较方便。

时间: 2024-10-06 01:21:49

微信公众号教程(9)公众账号发送欢迎图文消息的相关文章

有原创保护能力的公众帐号可申请页面模版功能和图文消息正文插入历史群发链接

之前微信公众平台仅针对开通了微信支付的公众号支持插入图文消息链接,现在微信团队对有原创保护能力的公众帐号开放页面模版功能.开放图文消息正文插入历史图文链接.(也许有人会把页面模版和模板消息混淆,模板消息是认证服务号向用户发送重要的服务通知的功能,具体请点击链接了解详情) 公众号图文消息可插入历史图文消息链接 1. 图文消息的正文编辑器中新增超链接图标,公众帐号可选择历史已发送的图文消息. 2. 添加图文链接更便捷.公众帐号可直接添加指定的超链接到一段文本或一张图片上. 也可直接添加指定的超链接后

用java开发微信公众号:测试公众号与本地测试环境搭建(一)

俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境. 测试公众号 微信公众号有订阅号.服务号.企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质才可以.这里所说的微信公众号开发指的是订阅号和服务号. 另外,未认证的个人订阅号有一些接口是没有权限的,并且目前个人订阅号已不支持微信认证,也就是说个人订阅号无法调用一些高级的权限接口,下图就是一个未认证的个人订阅号所具备权限列表,像生成二

用公众号获取 任意公众号文章列表 软件还是免费

用公众号获取 任意公众号文章列表 软件还是免费还不快点下载 下载 地址  https://pan.baidu.com/s/1jI44Wjs

微信公众号教程(11)公众账号接收非文字消息

公众账号接收非文字消息 在微信公众平台上用户都是用使用文字在进行交互的,但是有时候使用图片.语音.视频以及地理位置等可以实现一些非常棒的功能,比如"语音提醒"公众号里的发送语音就可以实现定时的事件提醒功能:比如ZTalk曾经搞过微信拍照晒电脑桌面的活动(响应的人太少,桑心--):比如一些预定本地化服务的公众号里发送当前地理位置就可以查询周边商家. 要实现这些功能首先得学会接收这些消息类型,比文字消息类型肯定要复杂很多了,目前我们能够接收的消息类型只有图片.地理位置以及退订消息,其他的如

微信公众号教程(10)公众账号自定义回复功能

公众账号自定义回复功能 微信官方其实并不推荐经常群发消息,更多的是希望用户通过对话来自己获取服务或者进行搜索.今天我们就讲下如何使用开发模式做自定义回复. 目前公众账号可以接收的用户提交消息请求有四种类型,分别是文字.图片.地理位置和链接,而公众账号回复只有三种格式,文字.图文和音乐,也就是说用户互动的模式最多也就是12种,我们今天先讲三种即文字回复文字.文字回复图文.文字回复音乐. 这强调一下,微信的消息接口通讯有效时间是5秒,也就是说网络不稳定等原因很容易造成用户在5秒内接收不到回复消息,然

微信公众号教程(1)微信公众账号注册、设置、登陆

原文:http://www.cnblogs.com/imaker/p/6247323.html 从今天开始微信公众平台教程开写,前面部分会比较浅,已经在玩的朋友可以忽略. 第一章 微信公众账号注册.设置.登陆 一.微信公众平台注册   注册前的准备工作,很重要!   1.一个没有注册过公众账号的邮箱,如果是qq邮箱那么对应的qq号也要没有注册过公众账号.顺便提一下,公众账号用gmail邮箱邮箱是注册不了的,只有国内邮箱才能注册成功!   2.身份证扫描件,每个身份证可以注册5个公众账号   3.

微信公众号教程(3)微信公众平台群发消息

微信公众平台最常用到的就是群发消息,这种一对多.几乎百分百到达的传播方式,取代了短信群发,并且具有多媒体形态,还可以直接引导转化.因此编辑一条好的内容,挑选恰当的时候发送,既可以给用户带来有价值的信息,又有机会给公众账号带来新的关注和收益.本期将重点为大家讲解素材管理该怎么玩,群发消息需要注意些什么. 第三章 微信公众平台群发消息 一.微信公众平台后台素材管理   点击公众平台后台导航的"素材管理",或者在群发消息或者与用户聊天页面时,选择发送多媒体内容时快捷进入.这个页面主要是用来管

微信公众号中添加外部链接地址的图文教程

2017-9-18,长沙,有点闷,有点热. 本教程教大家如何在微信公众号中,添加外部的链接,网络有很多教程,但由于表述不太清楚,出个教程吧.最终实现在微信后台管理平台"原文链接"处插入外部链接,用户点击发布好的图文文章底部左下角的"阅读原文",就可以跳转到您添加的外部链接页面中去. 第1步. 使用微信公众管理帐号登陆微信管理后台 > 素材管理 > 图文消息 >  新建图文消息或者编辑文章都可以,如下图所示: 第2步. 之后,将页面向下拉,看到底部&

微信公众号之主动给用户发送消息

前一段时间项目中遇到一个稍微麻烦一点的问题. 即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面. 于是乎,当时脑子一热,想着没什么大的问题,so easy.模板消息不就得了. 后来在写代码的过程中却发现,并不行. 微信公众号中模板消息有很严格的限制. 1.必须有用户主动触发事件方可发送模板消息 2.模板消息一分钟只能发送六十条,超过六十条,不好意思.你懂. 于是乎,就想到了另一种方法:群发消息 但是一看文档中群发消息的限制,发现悲催了 群发消息服务号每