首页 > PHP资讯 > 工具库 > 微信公众平台开发消息回复总结介绍

微信公众平台开发消息回复总结介绍

工具库
一、简介

微信公众平台提供了三种消息回复的格式,即文本回复、音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用。

二、思路分析

对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐)。

三、文本回复

3.1 文本回复xml 结构

    12345678   

3.2 结构说明

3.5 封装成可调用的函数

我们可以将上面的内容封装成函数,在需要回复文本的地方直接调用,方便简洁,responseText.func.inc.php 代码如下。

function _response_text($object,$content){    $textTpl = "                                                %s                                                %d                ";    $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);    return $resultStr;}

这样,只要传入$object 和$content,然后在需要回复文本的文件中引入该文件,然后调用 _response_text() 方法,就可以直接回复文本了。

3.6 测试代码

3.6.1 在主文件中引入回复文本的函数文件

require_once 'responseText.func.inc.php';

3.6.2 普通消息回复

public function handleText($postObj)    {        $keyword = trim($postObj->Content);        if(!empty( $keyword ))        {            $contentStr = "微信公众平台-文本回复功能源代码";            //$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);            $resultStr = _response_text($postObj,$contentStr);            echo $resultStr;        }else{            echo "Input something...";        }}

3.6.3 关注时回复

public function handleEvent($object)    {        $contentStr = "";        switch ($object->Event)        {            case "subscribe":                $contentStr = "感谢您关注【卓锦苏州】"."n"."微信号:zhuojinsz";                break;            default :                $contentStr = "Unknow Event: ".$object->Event;                break;        }        $resultStr = _response_text($object, $contentStr);        return $resultStr;}

3.7 测试结果

回复文本成功。

四、图文回复

4.1 图文回复xml 结构

    12345678  
]]>

5.3.2 测试代码


$resultStr = _response_music($postObj,$keyword);echo $resultStr;


5.3.3 测试结果

CREATE TABLE IF NOT EXISTS `tbl_music` (  `music_id` int(11) NOT NULL,  `music_name` varchar(40) NOT NULL,  `music_singer` varchar(40) NOT NULL,  `music_lrc` text NOT NULL,  PRIMARY KEY (`music_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;INSERT INTO `tbl_music` (`music_id`, `music_name`, `music_singer`, `music_lrc`) VALUES(10001, 'Far Away From Home', 'Groove Coverage', 'far away from home'),(10002, 'The Dawn', 'Dreamtale', 'the dawn'),(20002, '董小姐', '宋冬野', '董小姐'),(20001, '左边', '杨丞琳', '左边');


5.4.2 _response_music() 函数编写

A. 引入数据库操作文件


require_once('mysql_bae.func.php');


B. 数据库操作及数据处理

$query = "SELECT * FROM tbl_music WHERE music_name LIKE '%$musicKeyword%'";$result = _select_data($query);$rows = mysql_fetch_array($result, MYSQL_ASSOC);$music_id = $rows[music_id];

注: $musicKeyword 为从主文件传入的歌曲名关键字,这里使用模糊查询,只取第一条数据。

C. 判断是否查询到


if($music_id <> ''){    $music_name = $rows[music_name];    $music_singer = $rows[music_singer];    $musicUrl = "http://thinkshare.duapp.com/music/".$music_id.".mp3";    $HQmusicUrl = "http://thinkshare.duapp.com/music/".$music_id.".mp3";    $resultStr = sprintf($musicTpl, $object->FromUserName, $object->ToUserName, time(), $music_name, $music_singer, $musicUrl, $HQmusicUrl);    return $resultStr;}else{    return "";    }


说明:如果查询到歌曲信息,按照xml 结构返回数据;如果未查询到,则返回空,用于主文件判断。

将以上代码封装成 _response_music() 函数并保存为responseMusic.func.inc.php 文件供主文件调用。

5.4.3 测试代码

A. 引入回复音乐和回复文本的函数文件


//引入回复音乐的函数文件require_once 'responseMusic.func.inc.php';//引入回复文本的函数文件require_once 'responseText.func.inc.php';


B. 调用


if(!empty( $keyword )){    $resultStr = _response_music($postObj,$keyword);    if($resultStr <> '')    {        echo $resultStr;    }else    {        echo _response_text($postObj,"未查询到【".$keyword."】的歌曲信息!");        }    }


说明:如果查询到歌曲信息,则返回所得信息,如果未查询到,则调用 _response_text() 函数返回文本信息。

5.5 模拟点歌测试

回复音乐测试成功。

更多微信公众平台开发消息回复总结介绍相关文章请关注PHP中文网!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持23不支持0