前两天受人之托写一个小接口,还被要求要使用特定的类和方法,因此就娱乐性的写了这个小接口。最后实现大部分功能,特别是聊天小机器人后,发现挺好玩的。并且看到网上没有多少关于wechat.class.php里类和方法的讲解,因此分享下这个当是小实例吧!事不宜迟,咱们开始吧。php
首先接口配置和调试你们能够到网上搜,那里有比较详细的图文解说,这里就不赘述了;其次是到https://github.com/dodgepudding/wechat-php-sdk下载wechat.class.php和snoopy.class.php,或者本身百度谷歌都会有的。好了以后就把下面的代码放上去就好了,示例比较简单,因此注释就能够说明咯。git
若是发现什么问题,欢迎讨论,谢谢你们。祝学习进步。
github
<?php //导入微信函数库 include "wechat.class.php"; //导入采集函数库 include "snoopy.class.php"; //填写你设定的key $options = array( 'token'=>'yrw' ); $weObj = new Wechat($options); $weObj->valid(); //得到用户发送过来的消息的类型,有"text","music","image"等 $type = $weObj->getRev()->getRevType(); switch($type) { case Wechat::MSGTYPE_TEXT: //得到用户发送过来的文字消息内容 $content=$weObj->getRev()->getRevContent(); //从消息的结尾数第二个字开始截取,截取两个字 $str = mb_substr($content,-2,2,"UTF-8"); //从消息的开头开始,截掉末尾的两个字,便得关键字。 $str_key = mb_substr($content,0,-2,"UTF-8"); //而后加以判断是否为关键字,是否为空,符合要求则调用函数查询翻译数据 if($str == '翻译' && !empty($str_key)) { $url1="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=9peNkh97N6B9GGj9zBke9tGQ&q={$str_key}&from=auto&to=auto";//百度翻译地址 //实例化采集类 $spy=new Snoopy; //获取采集来的数据 $spy->fetch($url1); //将结果赋给$con_json $con_json=$spy->results; //json解析,转换为object对象类型 $transon=json_decode($con_json); //读取翻译内容 $con_str = $transon->trans_result[0]->dst; //以文字的形式输出结果 $weObj->text("{$con_str}")->reply(); } //判断是否为关键字,是否为空,符合要求则调用函数查询书本数据 if($str=='书本' && !empty($str_key)) { $url="http://222.206.65.12/opac/search_rss.php?dept=ALL&title={$str_key}&doctype=ALL&lang_code=ALL&match_flag=forward&displaypg=20&showmode=list&orderby=DESC&sort=CATA_DATE&onlylendable=no"; $spp=new Snoopy; $spp->fetch($url); $fa=$spp->results; //将采集获取的XML数据转换成object对象类型 $f=simplexml_load_string($fa); $da1=$f->channel->item[0]->title; $da2=$f->channel->item[1]->title; $da3=$f->channel->item[2]->title; $weObj->text("{$da1}\n{$da2}\n{$da3}")->reply(); } //判断是否为关键字,是否为空,符合要求则调用函数查询天气数据 if($str == '天气' && !empty($str_key)) { $url="http://api.map.baidu.com/telematics/v2/weather?location={$str_key}&ak=1a3cde429f38434f1811a75e1a90310c"; $sp=new Snoopy; $sp->fetch($url); $l_xml=$sp->results; $f=simplexml_load_string($l_xml); $city=$f->currentCity; $da1=$f->results->result[0]->date; $da2=$f->results->result[1]->date; $da3=$f->results->result[2]->date; $w1=$f->results->result[0]->weather; $w2=$f->results->result[1]->weather; $w3=$f->results->result[2]->weather; $p1=$f->results->result[0]->wind; $p2=$f->results->result[1]->wind; $p3=$f->results->result[2]->wind; $q1=$f->results->result[0]->temperature; $q2=$f->results->result[1]->temperature; $q3=$f->results->result[2]->temperature; $k1=$f->results->result[0]->dayPictureUrl; $k2=$f->results->result[1]->dayPictureUrl; $k3=$f->results->result[2]->dayPictureUrl; $d1=$city.$da1.$w1.$p1.$q1; $d2=$city.$da2.$w2.$p2.$q2; $d3=$city.$da3.$w3.$p3.$q3; $weObj->text("{$d1}\n{$d2}\n{$d3}")->reply(); } if($content=="hi") { $weObj->text("hello,I'm pauky")->reply(); }else if($content=="超连接") { $weObj->text("http://m.baidu.com")->reply(); }else if($content=="音乐") { //推送音乐消息 $weObj->music("music","pauky","http://jiekouphp.duapp.com/hls.mp3","http://jiekouphp.duapp.com/hls.mp3")->reply(); } /* 剩下的任务就交给咱们的小黄鸭机器人; 下面这个是临时密钥,只有几天使用期限,你们能够在http://developer.simsimi.com/申请,而后修改下面url的key值就能够了。 */ else { $strurl="http://sandbox.api.simsimi.com/request.p?key=7bff80d9-cff9-489e-92fb-167b31392e91&lc=ch&ft=1.0&text={$content}"; $xhy=new Snoopy; $xhy->fetch($strurl); $x_json=$xhy->results; $strjson=json_decode($x_json); $contentStr = $strjson->{'response'}; $weObj->text("{$contentStr}")->reply(); } break; case Wechat::MSGTYPE_LOCATION: //接收消息的地理位置 $arr1=$weObj->getRev()->getRevGeo(); $snoopy=new Snoopy; $url="http://api.map.baidu.com/telematics/v2/distance?waypoints=116.68183799999997,23.353299;{$arr1['x']},{$arr1['y']}&ak=1a3cde429f38434f1811a75e1a90310c"; $snoopy->fetch($url); $lines_string=$snoopy->results; $fk=simplexml_load_string($lines_string); $juli=$fk->results->distance; $contentstring="你和个人距离有{$juli}米远"; $weObj->text("{$contentstring}")->reply(); break; //接收到图片消息后随机回复一句话 case Wechat::MSGTYPE_IMAGE: $b=" "; $a=rand(1,3); switch ($a) {case 1; $b="健康好人缘,婚姻幸福美满"; break; case 2; $b="贵人相助化险为夷的好运纹"; break; default; $b="才华横溢好研究,知识丰富事业有成"; } $weObj->text("哈哈我知道这是图片\n祝你:{$b}")->reply(); //exit; break; //实现首次关注回复功能 case Wechat::MSGTYPE_EVENT: $msgEvent=$weObj->getRev()->getRevEvent(); $weObj->text("感谢您关注回禄持苇\n查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n还可选择发送图片,小黄鸭机器人也会来和你们聊天哦!\n更多内容,敬请期待...")->reply(); break; default: $weObj->text("查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n还可选择发送图片,谢谢你的关注,更多内容,敬请期待...")->reply(); }
注:微信公众平台SDK更新,因此在上述wechat.class.php里面相应的位置按下图标记的地方修改。json