微学网

热门关键词:   as  thinkphp  ecshop  xxx  php分页  商务通
热门: ASP.NET PHP编程 ASP编程 JSP编程 Python

微信公众号开发教程一:消息的处理及回复

发布时间:2019-12-18 来源:未知 点击:

上述第一节我讲述了开发者模式的开启和简单的获取access_token并缓存,以及简单的测试,这一节我们暂时并不需要使用这个

access_token的参数,大部分先讲述我们的测试代码的那一部分,并完善一下:(其中会引入百度地图和图灵机器人等技术)

1.消息的接受:

接受消息时微信会根据用户的内容将消息进行划分。分别有文本消息、图片消息、语言消息、视频、连接等消息。当用户与公众平台产生了消息互动每次消息都会请求自定义的URL地址。在请求的过程中各种参数是使用xml格式传输。接受消息即从微信请求的过程中获取相关的数据。

代码中使用的变量替换,使用了PHP的函数

sprintf

大家可以查阅一下,它的作用无非就是让变量可以依次替换掉。

1.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>";

测试的结果大家在第一节已经看到,我再次就不在演示

1.2接受图片消息:

代码如下:

 

 

 

// 图片模板

 

$picTpl="<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Image>

<MediaId><![CDATA[%s]]></MediaId>

</Image>

</xml>";

代码如下:

测试结果为:

 

1.3:接受语言消息:

模板如下:

代码如下:

 

}elseif($msgType=="voice"){

$contentStr ="语音消息MediaId为:".$postObj->MediaId.'具体内容为:'.$postObj->Recognition;

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,'text', $contentStr);

echo $resultStr;

}

结果如下:上述代码中我们使用了一个:

再附上一张我测试有结果的图:

1.4接受视频消息:

文档如下:

代码如下:

 

 

 

elseif($msgType=="video"){

$contentStr ="视频消息MediaId为:".$postObj->MediaId;

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,'text', $contentStr);

echo $resultStr;

}

1.5:接受地理位置:

代码:

 

 

 

elseif($MsgType == 'location'){

$contentStr = "经度为:".$postObj->Location_Y.'维度'.$postObj->Location_X.'具体地址为:'.$postObj->Label;

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);

file_put_contents('2', $resultStr);

echo $resultStr;

}

结果如下:

1.6:接受链接消息:

文档如下:

代码如下:

 

 

 

elseif($MsgType == 'link'){

$contentStr = '消息的标题为'.$postObj->Title;

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);

file_put_contents('2', $resultStr);

echo $resultStr;

}

结果如下:

上述几种情况都是使用的text模板接受的消息。设置微信回复的内容。接下来我们对回复内容的格式进行丰富:

2.消息的回复:

2.1回复文本消息:

格式如下:

代码如下:

2.2:回复图片的消息:

代码如下:

结果如下:

2.3回复语音的消息:

模板:

 

 

$voiceTpl="<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Voice>

<MediaId><![CDATA[%s]]></MediaId>

</Voice>

</xml>";

回复代码:

 

 

 

elseif($keyword == '语音'){

// 关于此MediaId需要从素材库中获得,没有可以临时使用消息返回的媒体ID

$MediaId = '3XlXZ4-r2OTNYTFAkcmpWv4QjWtwg_15B4PytQJVwOAwHpOfc38mGZTSDkDXx9po';

$resultStr = sprintf($voiceTpl, $fromUsername, $toUsername, $time, 'voice',$MediaId);

echo $resultStr;

}

结果如下:

2.4:回复视频的消息:

模板如下:

 

在线调试接口上传视频素材:

视频模板:

 

 

$VideoTpl="<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<Video>

<MediaId><![CDATA[%s]]></MediaId>

<Title><![CDATA[%s]]></Title>

<Description><![CDATA[%s]]></Description>

</Video>

</xml>";

回复代码如下:

 

 

 

elseif($keyword=="视频"){

//关于此MediaId需要从素材库中获得,没有可以使用临时消息返回的媒体id

$MediaId="xxMyAoPbUt1u3q5Z95xrhafNzyvL3Tg08E-9Ub2m6db_Elj4XAJHr2pUOqLhREyB";

$Title = $Description ="视频还是好看的";

$resultStr = sprintf($VideoTpl, $fromUsername, $toUsername, $time, 'video', $MediaId, $Title,$Description);

echo $resultStr;

}

结果如下:

2.5:回复图文消息:

文档信息:

图文模板:

 

 

// 图文模板

 

$newsTpc="<xml>

<ToUserName><![CDATA[%s]]></ToUserName>

<FromUserName><![CDATA[%s]]></FromUserName>

<CreateTime>%s</CreateTime>

<MsgType><![CDATA[%s]]></MsgType>

<ArticleCount>%d</ArticleCount>

<Articles>%s</Articles>

</xml>";

回复代码:

 

 

 

elseif($keyword=="图文"){

$data = array(

array('Title'=>'图文消息','Description'=>'效果好像还不错啊','PicUrl'=>'http://www.weixuecn.cn/images/0','Url'=>'http://www.weixuecn.cn')

);

file_put_contents('2',$data[0]['Title']);

for ($i=0; $i <count($data); $i++) {

$Articles .="<item>

<Title><![CDATA[{$data[$i]['Title']}]]></Title>

<Description><![CDATA[{$data[$i]['Description']}]]></Description>

<PicUrl><![CDATA[{$data[$i]['PicUrl']}]]></PicUrl>

<Url><![CDATA[{$data[$i]['Url']}]]></Url>

   </item>";

}

$count = count($data);

$resultStr = sprintf($newsTpc, $fromUsername, $toUsername, $time, 'news',$count,$Articles);

echo $resultStr;

}

结果如下:

 

到此为止我们对所有的接受和回复的代码进行的书写和演示,,这一节到此为止,下一节开始使用我们的access_token开始我们的自定义菜单。

 


这就是微学网-程序员之家为你提供的"微信公众号开发教程一:消息的处理及回复"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/7393.html
网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 框架 | 微信公众号 | 小程序 | 服务器 | APP开发 |

凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2018 微学网 版权所有,并保留所有权利。 备案号:粤ICP备09051474号-1

电脑版 | 移动版