这篇文章介绍的内容是关于微信公众号开发完整教程二,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
因为工作的需要,这一两年对微信公众号和小程序,项目制作的比较多。所以我才打算写一篇全面的制作教程,当然了,最好的教程是微信工作平台的文档。我这里只是讲述一下我的工作中的制作流程。所有相关文章的源码,我托管在我自己的github上面,欢迎关注:地址点击打开链接。接下来开始我们的教程。
上述第一节我讲述了开发者模式的开启和简单的获取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://mmbiz.qpic.cn/mmbiz_jpg/e3tene8jstaqus3ic5qett4wl14ibbu4uaobarztvop18awt83hkzm0ai9xstapn4xay6ji4lfm0h7qnksfxqyva/0','url'=>'http://xiaomi.com')
);
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;
}
结果如下:
到此为止我们对所有的接受和回复的代码进行的书写和演示,所有的源码我会放在我的github上面,大家可以下载和关注,这一节到此为止,下一节开始使用我们的access_token开始我们的自定义菜单。
相关推荐:
微信公众号开发完整教程一
以上就是微信公众号开发完整教程二的详细内容。