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

公众帐号自定义回复功能php

 原文:http://www.cnblogs.com/imaker/p/6249980.htmlhtml

微信官方其实并不推荐常常群发消息,更多的是但愿用户经过对话来本身获取服务或者进行搜索。今天咱们就讲下如何使用开发模式作自定义回复。数据库

 

目前公众帐号能够接收的用户提交消息请求有四种类型,分别是文字、图片、地理位置和连接,而公众帐号回复只有三种格式,文字、图文和音乐,也就是说用户互动的模式最多也就是12种,咱们今天先讲三种即文字回复文字、文字回复图文、文字回复音乐。数组

 

这强调一下,微信的消息接口通信有效时间是5秒,也就是说网络不稳定等缘由很容易形成用户在5秒内接收不到回复消息,而后就通信中断了,这几天有人反映关注ZTalk后没有消息提示就是这个问题。微信

 

1、文字回复文字之鹦鹉学舌网络

 

鹦鹉学舌你们都知道,就是你说什么它跟着你说什么,我们也能够在微信公众平台里玩一下,首先进入SAE平台,打开代码编辑,在以前的接口文件上进行修改。代码如图:数据结构

代码添加位置是在“事件消息”的注释前面,用户消息赋值以后,实际添加的代码是从图上20行开始到41行。微信公众平台

 

第21行是判断用户发送的消息类型是否文字消息,能够参考事件消息的判断,变更的只是消息类型标示。函数

 

第24行是判断若是用户发送了文字消息,那么获取用户发送的文字消息内容赋值给变量$form_Content 。学习

 

PS:这里有个函数“trim”,你们能够查下php的函数手册,这个函数做用是去除字符串首尾的空格,有时候用户误在头尾多敲了空格,若是不去除的话就会出现关键字没法匹配,好比“你好 ”若是不去掉尾部空格就没法匹配关键字“你好”。

 

第26行是判断用户发送的消息内容是否为空,能够参照第9行的逻辑,empty($form_Content)在$form_Content不为空的时候返回0,为空的时候返回1,非(!)0即1表示条件成立,用户发送的消息是有内容的。

 

第28行到第31行就是完成回复文字消息的功能,其中回复的内容直接用了$form_Content,也就是把用户发送的内容又给回复回去。

 

第34行是若是用户发送的内容为空白,则返回输入提示。所以第37行的回复消息就是"请输入些什么吧……"。

 

好了如今去测试下,当你向公众帐号输入文字时,公众帐号就会回复一样的内容给你,固然你也能够把$form_Content改为直接的字符串,这样就是自动回复了。

 

2、文字回复图文之餐馆菜单

 

有多少人能立刻说出编辑模式里最多能设多少个关键字?估计很少,固然用心看我教程的应该知道,是200个,到了开发模式这个关键字实际上是无限的,前面举了文字回复文字的简单例子,如今加点难度,能够识别关键字而且回复的是图文消息,我们就拿菜单来作例子吧,先作菜谱的类别,这个咱们用文字回复,代码如图下:

添加的代码位置在判断用户发送消息不为空的条件判断以后,默认回复以前,这里你们注意下默认回复其实就是将前面文字回复文字的变量用字符串代替了。增长的代码从第29行开始到41行。

 

第30行判断用户发送过来的消息是否为“菜谱”,这里注意判断是否等因而用两个“=”号。若是是则运行该判断条件下的代码。

 

第33行先赋值给$return_str一个初始字符串点菜提示“请输入字母编码浏览相应菜品:”,我这里加了两个\n表示空两行。

 

第34行是一个数组,数组的元素为菜谱的类别。

 

数组在程序中使用很是广泛,它是一种把具备相同类型的若干变量、数字或者字符串,有序组织起来的一种形式,有点像我们之前数学课教的集合概念。

 

数组的每一个元素都是由键和值关联组成,我在例子里的定义方式键值会默认生成,第一个元素的键值为0,元素值是“lc.冷菜\n”,数组的每一个元素值可使用“数组名[键值]”的方式获取或者输出,好比$return_arr[0]的值就是“lc.冷菜\n”。

 

数组能够用来作数据的存储、排序、检索等,它的概念比较复杂可是很重要,但愿你们可以去看些资料认真学习下。

 

第35行是用implode函数将$return_arr转化成字符串,而后加到以前赋值过的$return_str后面,其运行结果为:

"请输入字母编码浏览相应菜品:\n\nlc.冷菜\nhb.杭帮菜\nsk.烧烤\nwp.外婆烧\nml.麻辣\nrc.热菜\ntp.甜品"。

 

implode函数的使用方法为implode(分隔符,数组),将数组内元素转化成字符串,并将分隔符插入元素之间,我在例子里分隔符为空值,因此最后转化的字符串是首尾相连中间没有分隔符的。

 

后面的就不解释了,输出文字消息同时退出运行。

 

接着咱们来示例某个类别的详细菜单,我们用多图文消息来作,灵光的朋友已经想到了,呵呵,先写一个判断,而后把那段用户关注回复多图文消息的代码拷贝过来修改下就行了。固然我今天加了点料,示例以下:

 

添加的代码位置在菜谱的大括号后面。第42行到51行和以前的是同样的,惟一不一样的是ArticleCount我设置成了10,也就是图文消息条数为10条(编辑模式里多图文消息最多只有8条,开发模式里是10条),不清楚的能够看第十期教程,我直接讲下改进的部分。

 

第53行到105行我定义了一个数组$return_arr,这个数组里共有10个元素,每一个元素又是一个结构相同的数组,这些数组都有三个元素分别对应标题、图片和连接,为了偷懒,我9个列表消息只是换了标题,没有图片和链接,不知道你们看明白没有。

 

这个数组其实就至关于我把菜单的10道菜里不一样的数据按照相同的结构作了集合,而后使用一个循环读取语句将这些数据拼接成将要输出的图文消息。

 

第107行的foreach是一个将数组中每一个元素按照键值顺序遍历一遍的函数,通俗的说就是将$return_arr这个数组里的元素按照前后顺序读取出来,每次读取一个元素,读取出来的元素赋值给$value,因此这个$value的值会随着每次循环改变。即第一次循环时$value=$return_arr[0],第二次循环时$value=$return_arr[1]……

 

每次读取的$value其实就是$return_arr一个元素,根据上面的数据结构这个元素又是一个数组,里面有三个元素,分别对应了标题、图片和连接,值是$value[0]、$value[1]、$value[2],将这三个数据拼接到图文消息模板,同时与前一次的$resultStr拼接。这样作的好处在于减小了代码的长度,把图文消息模板复用了,另外这个数组的结构其实跟数据库里读取出来的结构是同样的,因此也是想让你们一点点熟悉起来。

 

等循环结束就执行第116行,完成最后的闭合拼接,而后输出结果。公众帐号就将这个包含10条菜品的图文消息发送给了用户。

 

3、文字回复音乐之表情传意

 

不少人,真的不少人,几乎天天都有人在公众平台上问我同一个问题,就是你怎么能够放超过60秒的歌曲,个人答案只有一个,就是用开发模式的音乐消息回复接口实现的。今天就给你们介绍下如何使用音乐接口来回复用户消息,让用户有好的欣赏体验。

 

回复音乐消息里的音乐是以连接形式加载到回复数据模板里的,相似我们回复图文消息里的图片连接,SO,咱们音乐文件的连接获取也参照图片链接方式,一种呢是找网上在线收听的连接,不过真不是很保险,不少是防盗链的,比图片还严格,另一种呢就是放到云存储平台上,这里建议你们若是要把音乐作成常态功能,必须选择专业的云存储平台,好比又拍云、七牛。

 

今天我图个方便就仍是上传到了SAE的Storage里了,以下图,我选了个人大爱曲婉婷成名曲《个人歌声里》(偷偷显摆下,曲婉婷跟我在微博上但是互相关注的噢,我是她第3729个粉丝!!)。

 

 

这个消息回复里支持的音乐格式目前我只测试过MP三、AAC两个,确定是没有问题的,这里须要注意的是上传的文件名必须用英文或数字,文件名里不要有中文、空格、单双引号等,大小写无所谓。若是资源容许能够上传一个低码率的音乐文件,再上传一个高码率的音乐文件,由于微信里听音乐会自动识别网络环境选择不一样音质的版本。

 

音乐文件准备好后我们就上代码了吧!我这里给的例子是用户发送表情,公众帐号回复歌曲,如图所示:

 

增长的代码加到前面菜单的代码后面就好了,只要在那个默认回复以前均可以。

 

第124行代码是判断用户发送的表情是否是微笑。就是微信表情第一排第一个,这里你们确定会很奇怪微笑表情符号不是“[微笑]”吗,老贼我最先也犯过这个错,折腾半天才发现其实微信接口发送过来的表情代码是这样的。

 

第127行这里是消息类型,音乐消息的类型是music。

 

第128行到137行就是调用wx_tpl.php里的音乐消息模板,用sprintf将格式化的数据写入到变量中去。其中“个人歌声里是”是title,“曲婉婷”是DESCRIPTION,第一首歌的连接是低码率的,第二首是高码率的,微信会根据环境自动选择。

 

后面就是输出到用户手机上,用户接收到的就是音乐播放器,点击播放键就能够欣赏音乐了,是否是很简单?

 

ZTalk秘籍

 

如何收集全部表情的代码呢?在第10期教程里有个秘籍是让你们调试接口时能够把输出结果文件保存到Storage上,而后查看文件检查程序是否正常。我们就用这个法子抓取全部表情的代码。

 

把抓取表情的代码放到这个位置:

 

而后到手机上往公众平台上发表情,按照顺序从第一个一直输入到最后一个,而后一块儿发送,而后你到Storage就会看到有bq.txt,打开后就能看到以下图:

 

 

这些就是真正的表情符号,我这里就发了第一屏幕的,你们抓取完就把代码都删除了吧,不然这里有个结束语句在那里,不去掉就不会执行后面的程序。

相关文章
相关标签/搜索