接着上次分享的服务器被动回复文本消息,这次分享的是图文消息(也叫文章消息),文本消息虽然可以处理大部分的业务需求,但美中不足的是消息过于死板不够活泼生动,为了丰富消息的内容和展现微信提供了图文消息供我们使用,这次分享的图文消息围绕必应的每日一图接口进行
一 bing的图片信息获取接口
这里我们只需要url属性即可,下面的工具类用于提取url
<?php
namespace util;
include_once __DIR__.DIRECTORY_SEPARATOR."RequestUtil.php";
class EveryDayImageUtil{
function getTodayImage(){
$reqUtil=new RequestUtil();
$res=$reqUtil->http_request("http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1");
$xml=simplexml_load_string($res);
$children=$xml->children()->children();
foreach ($children as $key => $value ) {
if("url"==$key){
return "http://www.bing.com".$value;
}
}
}
}
?>
二 流程和事件推送处理
我们知道被动回复消息需要先请求微信服务器,这里为了简便把获取图文消息设计成一个有事件推送性质的自定义菜单,点击菜单使用事件推送回复图文消息给用户
if($postObj->Event=="CLICK"){
if("today_picture"==$postObj->EventKey){
$imageUtil=new \util\EveryDayImageUtil();
$defaultMsgType="news";
$item1=array("title"=>"今日图片","description"=>"bing精选片","picurl"=>$imageUtil->getTodayImage(),"url"=>"http://cn.bing.com/");
$article=array($item1);
$result=$msgUtil->articleMessageToXml($fromUsername, $toUsername, $article);
$resultStr=$result;
}
}else{
$typeResult="事件推送消息";
}
一起欣赏下效果