微信公众号可以向粉丝回复的消息分为:文本消息,图片消息,语音消息,视频消息,音乐消息,图文消息.各消息xml结构详见官方文档.
<?php
//文件名: http://szuzsq.tunnel.qydev.com/weixin/index.php
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();
class wechatCallbackapiTest {
public function responseMsg() {
//注:微信官方demo是使用$GLOBALS,而我使用的是file_get_contents的形式,来获取转发过来的xml内容.具体php配置不同,应采用不同的形式,请大家注意下,不然后可能粉丝收不到你的公众号回复的消息.
//$str = $GLOBALS["HTTP_RAW_POST_DATA"];
$str = file_get_contents("php://input");
if(!isset($str) || empty($str))
exit("");
libxml_disable_entity_loader(true);
$xml = simplexml_load_string($str, 'SimpleXMLElement', LIBXML_NOCDATA);
switch($xml->Content) {
case "1": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[text]]></MsgType>";
$rs .= "<Content><![CDATA[爸比,I miss you!]]></Content>";
$rs .= "</xml>";
echo $rs;
break;
}
case "2": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[image]]></MsgType>";
$rs .= "<Image>";
$rs .= "<MediaId><![CDATA[WGa-K54LXqGX71jU-Sct8RK_f2NEQhTkkj4S69P_yVokR4EmPSmbDy3BRJnmFcLs]]></MediaId>";
$rs .= "</Image>";
$rs .= "</xml>";
echo $rs;
break;
}
case "3": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[voice]]></MsgType>";
$rs .= "<Voice>";
$rs .= "<MediaId><![CDATA[TpyxHK_obZIjrW7o5rwAUUuVip67OOPiXrh_YyoxUPV68-Cz6hT815I0tiuTOdH-]]></MediaId>";
$rs .= "</Voice>";
$rs .= "</xml>";
echo $rs;
break;
}
case "4": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[video]]></MsgType>";
$rs .= "<Video>";
$rs .= "<MediaId><![CDATA[D2mVNU9Ils8RSCeM43uQWmV37Aq7MR-x_2UxLloerW-yMU3XiQJor6KkH_FbYmtq]]></MediaId>";
$rs .= "<Title><![CDATA[亲亲我的宝贝]]></Title>";
$rs .= "<Description><![CDATA[游泳很开心]]></Description>";
$rs .= "</Video>";
$rs .= "</xml>";
echo $rs;
break;
}
case "5": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[music]]></MsgType>";
$rs .= "<Music>";
$rs .= "<Title><![CDATA[后来]]></Title>";
$rs .= "<Description><![CDATA[演唱:刘若英]]></Description>";
$rs .= "<MusicUrl><![CDATA[http://szuzsq.tunnel.qydev.com/weixin/1.mp3]]></MusicUrl>";
$rs .= "<HQMusicUrl><![CDATA[http://szuzsq.tunnel.qydev.com/weixin/1.mp3]]></HQMusicUrl>";
$rs .= "<ThumbMediaId><![CDATA[06092N9ioZxEv3SE-B07zE13qvJQfNypVctofY4T47xHcPHxpYjtF53hUr7qPMG6]]></ThumbMediaId>";
$rs .= "</Music>";
$rs .= "</xml>";
echo $rs;
break;
}
case "6": {
$rs = "<xml>";
$rs .= "<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>";
$rs .= "<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>";
$rs .= "<CreateTime>1468221313</CreateTime>";
$rs .= "<MsgType><![CDATA[news]]></MsgType>";
$rs .= "<ArticleCount>1</ArticleCount>";
$rs .= "<Articles>";
$rs .= "<item>";
$rs .= "<Title><![CDATA[山塘街]]></Title>";
$rs .= "<Description><![CDATA[山塘街东起阊门渡僧桥,西至苏州名胜虎丘山的望山桥,长约七里,所以苏州俗语说“七里山塘到虎丘”...]]></Description>";
$rs .= "<PicUrl><![CDATA[http://mmsns.qpic.cn/mmsns/Gugib1CGulhxU7GQPb96z8PTwicX5ud6vIibKQQvzMGr140WicC5icVMESA/0]]></PicUrl>";
$rs .= "<Url><![CDATA[http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NDM0NTEyMg==&appmsgid=10000046&itemidx=1&sign=9e7707d5615907d483df33ee449b378d#wechat_redirect]]></Url>";
$rs .= "</item>";
$rs .= "</Articles>";
$rs .= "</xml>";
echo $rs;
break;
}
}
}
}
?>
效果图如下:
文本消息
图片消息
语音消息
视频消息
音乐消息
图文消息
其中,图文消息点击进入后的效果为:
我做了一个小变通,就是接口里面,需要通过素材管理中的接口上传多媒体文件得到的id以及其URL的地方,都是通过我的前一编文章<<微信公众号开发教程[003]-消息管理-接收消息>>,获得,而没有用到素材管理这些接口,读者在自己机子上测试时,记得换成自己的数据.这些id或url分别是:
图片消息
1).MediaId
WGa-K54LXqGX71jU-Sct8RK_f2NEQhTkkj4S69P_yVokR4EmPSmbDy3BRJnmFcLs
取自<<微信公众号开发教程[003]-消息管理-接收消息>>发送的图片消息的返回值.
语音消息
1).MediaId
TpyxHK_obZIjrW7o5rwAUUuVip67OOPiXrh_YyoxUPV68-Cz6hT815I0tiuTOdH-
取自<<微信公众号开发教程[003]-消息管理-接收消息>>发送的语音消息的返回值.
视频消息
1).MediaId
D2mVNU9Ils8RSCeM43uQWmV37Aq7MR-x_2UxLloerW-yMU3XiQJor6KkH_FbYmtq
取自<<微信公众号开发教程[003]-消息管理-接收消息>>发送的视频消息的返回值.不过这个接口打死看不到效果,有谁弄好了,请告诉我.
音乐消息
1).MusicUrl
http://szuzsq.tunnel.qydev.com/weixin/1.mp3
自已服务器上放了首歌.
2).HQMusicUrl
http://szuzsq.tunnel.qydev.com/weixin/1.mp3
自已服务器上放了首歌.
3).ThumbMediaId
06092N9ioZxEv3SE-B07zE13qvJQfNypVctofY4T47xHcPHxpYjtF53hUr7qPMG6
取自<<微信公众号开发教程[003]-消息管理-接收消息>>发送的视频消息的返回值(缩略图ID).
图文消息
1).PicUrl
http://mmsns.qpic.cn/mmsns/Gugib1CGulhxU7GQPb96z8PTwicX5ud6vIibKQQvzMGr140WicC5icVMESA/0
取自<<微信公众号开发教程[003]-消息管理-接收消息>>发送的图片消息的返回值(图片链接URL)
2).Url
http://mp.weixin.qq.com/mp/appmsg/show?__biz=MjM5NDM0NTEyMg==&appmsgid=10000046&itemidx=1&sign=9e7707d5615907d483df33ee449b378d#wechat_redirect
直接借鉴David_Tang大大的博文:<<微信公众平台开发(十) 消息回复总结>>