微信开发第十章 公众账号发送欢迎图文消息
当用户关注公众账号时自动回复一个多图文消息,每个图文消息可以对应一篇文章或者自己网站的某个网页,用户点击就可以查看,是不是非常棒,特别适合一些企业用来做公司业务介绍。现在就教大家如何实现,顺便就可以把图文消息的回复讲了。
一、使用SAE的分布式存储服务
其中图片是用图片链接(在上图标签PicUrl处)的形式出现,也就是图片得先上传到服务器,然后将图片连接放置到输出代码里,这里提供三种图片连接生成方法:
直接复制第三方网站的图片链接,比如我们在百度图片搜索到某张图片,将该图片的链接直接复制过来就可以,非常方便,但是如果第三方网站把图片删除或者说有防盗链机制,就会造成图片不显示。所以不推荐这类方式,除非可以保证该图片链接永久有效。
将图片上传到新浪微博、腾讯微博这些地方发微博(微信的素材管理图片链接不能使用),然后将图片链接复制过来,这里要注意的是记得把微博水印关掉,否则这个图片上就带着你的微博名字了。
咱们都已经在用云计算平台了,就顺便用下云存储服务吧,我目前自己是在用又拍云存储,那个有点复杂后面做具体完整项目时再介绍。
现在先使用SAE的 Storage存储服务,这是SAE为开发者提供分布式文件存储,因为SAE平台限制使用本地存储,所有需要持久化的文件比如图片、音乐等只能保存到Storage上。
- 存储空间的名称,只能由数字和字母组成,根据自己喜好取个吧。
- 存储空间的介绍,用来提示该空间的用途,比如我这个是用来放图片和音乐文件的。
- 是否私有云存储,如果打勾则无法通过URL直接访问,只能通过程序接口读取访问,咱们不用搞那么复杂所以别打勾了
- 缓存时间。这个可以减少服务器的负担,一般设6小时就可以了。
- 防盗链设置。可以设置能够访问文件的白名单网址,咱们也不用搞那么复杂所别打勾了。
存储空间属性修改,除了名称不能修改以外其他都可以,包括设置访问权限、说明、防盗链以及缓存时间修改等。
删除该存储空间,删除时将会将会把该空间内所有文件都删除,所以小心操作。
下载客户端,直接用应用程序管理存储空间,有点像FTP管理,咱们现在是初学者,不用去管这个。
返回Storage的管理首页。
新建子目录方便文件分类,比如可以建一个目录叫pic,里面存放图片文件。
点击图片名称就会在新窗口打开该图片,复制浏览器的URL就是该图片的链接,可以直接用到图文消息的代码里。
可能有朋友会说为什么不把图片直接上传到SAE的代码管理目录里访问,确实可以这样做,但是不推荐这样做,一个是代码的空间大小默认只有100M,扩容会增加开销,二是代码空间是用来跑脚本的,同等流量费用要高很多,三是代码空间不允许写入文件,将来无法实现通过程序上传图片的功能。
二、制作多图文消息
啰嗦一大堆朋友们都等急了吧,现在我们开始做图文消息欢迎词!
注释多行代码使用/...../来包含,在中间的所有内容都不再被执行。
代码从30行开始,前面的跟昨天是一样的,就是监测是否用户订阅事件。
首先是赋值给$resultStr这个变量图文消息的数据头部,跟文本消息的差不多,只是昨天是用了sprintf这个函数直接将数据写到模板里去了,今天是拿模板直接来用,实际效果是一样的,与文字消息不同的是:
第34行,MsgType变成了news;
第35行多了一个ArticleCount,这个值表示多图文消息的条数,包括了封面消息在内,我这里是5,各位可以根据自己实际修改。
当ArticleCount为1,只放一条消息时则为单图文消息,大于2,放了两条消息以上则为多图文消息。
第36行是图片消息列表标签的开始,最后会有一个来闭合整个图文消息列表。
PS:在php里字符串的拼接使用“.”,echo "A"."B";输出的是AB。当然高级程序猿为了提高运行效率会使用其他方法来拼接字符串,这里就不说了。
这里可以看到$resultStr和“=”之间多了一个“.”,这也是字符串拼接语法,等于$resultStr=$resultStr.“....”,将新的字符串拼接到之前已经赋值的$resultStr后面再赋值给$resultStr。
图文消息里用
第41行,图文消息的标题
第42行,图问消息的摘要,如果是多图文可以为空不填写,如果是单图文消息需要填写。
第43行,封面图片,放置图片链接,官方给出较好的效果为大图即多图文的封面消息图片为640320,小图即列表消息的缩略图8080,注意这里的图片其实可以跟实际链接打开的文章图片不一致。
第44行,文章链接,放置点击该图文消息时打开的页面,这里可以放置自己的网页链接,比如淘宝店的或者自己网站的,当然也可以放置微信公众平台的图文消息链接(ZTalk的文章查询里其实放的都是微信文章链接,省事又省流量,哈哈哈)。
第76行就是我前面说的闭合图文消息内容;
第77行是用来星标用户请求消息的,由于这个消息是其实是用户订阅事件,不用打星标,所以这里的值为0。
第78行是闭合整个输出图文消息结构的。
好了,现在保存下,重新关注下公众账号,看看是否成功回复了一个图文菜单,是不是很有成就感!
给大家一个作业:试试关注时回复单条图文或者5条以上的多图文消息。
前面说了SAE不允许在本地生成文件,所以我们得把文件生成到Storage存储空间去。
第87行是新建一个Storage的对象,定义为$s;
第88行是写入一个文件到Storage空间,格式为$s->write(空间名称,写入文件名,写入的内容)
主要是监测有没有收到微信的请求,我直接用字符串"get_post"(记得字符串要用双引号包含)来代替之前的变量,然后在公众号里发送任意字符,再查看Storage里的test.txt文件,如果正常文件应该生成,并且里面应该有“get_post”,否则就是出错了,那要检查公众平台是否已经和SAE应用正常通讯了。
今天的课就先到这里,明天讲关键字回复以及……N多人关心的如何播放音乐!!!!
相关文章
- 微信开发第一章 微信公众号的注册、设置与登陆
- 微信开发第二章 公众平台后台介绍
- 微信开发第三章 公众平台群发消息
- 微信开发第四章 公众平台编辑模式(上)
- 微信开发第五章 公众平台编辑模式(下)
- 微信开发第六章 公众账号自动回复
- 微信开发第七章 公众平台开发模式
- 微信开发第八章 新浪云计算平台注册和使用
- 微信开发第九章 用微信开发模式做欢迎词
- 微信开发第十章 公众账号发送欢迎图文消息
- 微信开发第十一章 公众账号自定义回复功能
- 微信开发第十二章 公众账号接收非文字消息
- 微信开发第十三章 公众账号接收非文字消息
- 微信开发第十四章 公司通讯录开发(一)
- 微信开发第十四章 公司通讯录开发(二)
- 微信开发第十四章 公司通讯录开发(三)
- 微信开发第十四章 公司通讯录开发(四)
- 微信开发教程 微信问答系统
- 微信开发第十五章 自定义菜单开发
- 微信开发第十六章 微信音乐播放器(一)
- 微信开发第十六章 微信音乐播放器(二)
- 微信开发第十六章 微信音乐播放器(三)