1. 云栖社区>
  2. PHP教程>
  3. 正文

【玩转微信公众平台之十】 图文消息回复讲解

作者:用户 来源:互联网 时间:2017-12-01 13:33:23

图片音乐用户信息

【玩转微信公众平台之十】 图文消息回复讲解 - 摘要: 本文讲的是【玩转微信公众平台之十】 图文消息回复讲解,我们回复用户的消息类型有多种,可以是简单的文字回复,也可以是音乐回复,或者是图文信息回复(不能只回复一张图片,一定要夹带着文字)。为什么本篇我就只将图文回复呢。原因有多个:1、音乐回复我没搞过;2、文字回复前一篇说过;3、图文回复个人觉得偏

我们回复用户的消息类型有多种,可以是简单的文字回复,也可以是音乐回复,或者是图文信息回复(不能只回复一张图片,一定要夹带着文字)。为什么本篇我就只将图文回复呢。原因有多个:
1、音乐回复我没搞过;
2、文字回复前一篇说过;
3、图文回复个人觉得偏难了点,所以重点讲;
4、博主又要凑博客篇数了...(没错,答对了)

--------------------------
1、在开始讲解图文消息回复之前,我要补讲一些东西:在示例代码讲解的那篇博客里,我下面这段代码跳过去了:
$textTpl = "<xml>			<ToUserName><![CDATA[%s]]></ToUserName>			<FromUserName><![CDATA[%s]]></FromUserName>			<CreateTime>%s</CreateTime>			<MsgType><![CDATA[%s]]></MsgType>			<Content><![CDATA[%s]]></Content>			<FuncFlag>0</FuncFlag>			</xml>";

$textTpl这货怎么看起来如此眼熟。没错,我们在回复用户的文字消息(注意是文字消息)时,都会用到它,如下面这句:
$msgType = "text";$contentStr = "感谢您的关注,回复“1”查看博主ID;回复“2”查看博主爱好";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;

它的作用就是将我们要发给用户的文字消息合成为xml格式文本,这个文本里包含用户的OpenID,公众号的ID,系统时间,消息类型,回复的文字内容。那么,什么是xml格式呢。

XML是一种简单的数据存储语言,它要求每一个标签都有开始和结束标记,可以进行嵌套,它里面的每个字段(就是每种信息)都必须以<>开头,</>结尾,如下:
<xml><content><id>博主ID</id><age>博主年龄</age></content></xml>
xml简单分析到这里,下面回过头来继续看$textTpl这个变量
$textTpl = "<xml>//这里表明是xml格式			<ToUserName><![CDATA[%s]]></ToUserName>//存储微信公众号的ID			<FromUserName><![CDATA[%s]]></FromUserName>//存储用户OpenID			<CreateTime>%s</CreateTime>//存储系统时间			<MsgType><![CDATA[%s]]></MsgType>//存储消息类型			<Content><![CDATA[%s]]></Content>//存储要发送到消息内容			<FuncFlag>0</FuncFlag>//是否星标(别管这个)			</xml>";
恩,上面的代码注释还算比较好理解吧,可能唯一不理解的就是[CDATA[%S]]这货是什么玩意,CDATA表示不转义,不理解也没事,主要还是看%s,它表示要转换成字符串的数据类型。翻译成白话文就是%s表示一个刚出生的婴儿,这个婴儿的类型的字符串类型(可以理解为女的),我们都知道婴儿刚出生时全部信息都是一片空白,没有姓名,没有户口之类的,这就是%s的含义,表示一片空白,等待你来开发如下面这句:
<Content><![CDATA[%s]]></Content>
此时Content里是没有内容的,所以就需要我们来传送内容进入,怎么传呢。用sprintf()这个函数,它的格式如下:
sprintf(baby,$name,$country,...);
第一个参数baby表示将要被传送内容的xml格式变量(婴儿),将$name传给baby中第一个出现%s的位置,将$country传给第2个出现%s的位置,以此类推

最后我们再回过头来看下这句:
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;
是不是知道怎么回事了。$textTpl就是xml格式变量,接下来将$fromUsername传给textTpl,然后是tuUsername,然后...,最后将全新的textTpl传给resultStr这个变量,然后发送给用户。
2、下面进入正题,如何回复图文消息。
下面是回复图文消息的一些格式:
【玩转微信公众平台之十】 图文消息回复讲解运行效果如下:
【玩转微信公众平台之十】 图文消息回复讲解

好了,就这样。

本来是安排一周的时间将微信这个系列教程写完的,结果因为各种原因只完成了十篇。所以呢,就先写到这吧,等下次有抽出时间再继续吧...

后会有期~~

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索图片 , 音乐 , 用户 信息 ,以便于您获取更多的相关知识。