微信公众平台开发(四) 简单回复功能开发

来源:互联网 时间:1970-01-01

一、简介

微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。

二、思路分析

用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。

关键代码如下:

 

if($keyword=="你好"){

$contentStr = "hello";

}elseif($keyword=="苏州"){

$contentStr = "上有天堂,下有苏杭";

}else{

$contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";

}

 

如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。

三、完整代码

一、简介

微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。

二、思路分析

用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。

关键代码如下:

if($keyword=="你好"){

$contentStr = "hello";

}elseif($keyword=="苏州"){

$contentStr = "上有天堂,下有苏杭";

}else{

$contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";

}

如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。

三、完整代码

responseMsg();

//$wechatObj->valid();

class wechatCallbackapiTest

{

/*public function valid()

{

$echoStr = $_GET["echostr"];

//valid signature , option

if($this->checkSignature()){

echo $echoStr;

exit;

}

}*/

public function responseMsg()

{

//get post data, May be due to the different environments

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

//extract post data

if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$RX_TYPE = trim($postObj->MsgType);

switch($RX_TYPE)

{

case "text":

$resultStr = $this->handleText($postObj);

break;

case "event":

$resultStr = $this->handleEvent($postObj);

break;

default:

$resultStr = "Unknow msg type: ".$RX_TYPE;

break;

}

echo $resultStr;

}else {

echo "";

exit;

}

}

public function handleText($postObj)

{

$fromUsername = $postObj->FromUserName;

$toUsername = $postObj->ToUserName;

$keyword = trim($postObj->Content);

$time = time();

$textTpl = "

%s

0

";

if(!empty( $keyword ))

{

$msgType = "text";

if($keyword=="你好"){

$contentStr = "hello";

}elseif($keyword=="苏州"){

$contentStr = "上有天堂,下有苏杭";

}else{

$contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";

}

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

echo $resultStr;

}else{

echo "Input something...";

}

}

public function handleEvent($object)

{

$contentStr = "";

switch ($object->Event)

{

case "subscribe":

$contentStr = "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待...";

break;

default :

$contentStr = "Unknow Event: ".$object->Event;

break;

}

$resultStr = $this->responseText($object, $contentStr);

return $resultStr;

}

public function responseText($object, $content, $flag=0)

{

$textTpl = "

%s

%d

";

$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);

return $resultStr;

}

private function checkSignature()

{

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = TOKEN;

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){

return true;

}else{

return false;

}

}

}

?>

四、测试

五、关注

四、测试




相关阅读:
Top