接着上次分享的服務器被動回覆文本消息,這次分享的是圖文消息(也叫文章消息),文本消息雖然可以處理大部分的業務需求,但美中不足的是消息過於死板不夠活潑生動,爲了豐富消息的內容和展現微信提供了圖文消息供我們使用,這次分享的圖文消息圍繞必應的每日一圖接口進行
一 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="事件推送消息";
}
一起欣賞下效果