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

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

来源:David Camp   时间:2013-09-09 18:51:17   阅读数:18821
分享到: 2

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

一、简介

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

二、思路分析

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

关键代码如下:

 
1. if($keyword=="你好"){
2.   $contentStr = "hello";
3. }elseif($keyword=="苏州"){
4.   $contentStr = "上有天堂,下有苏杭";
5. }else{
6.   $contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
7. }
 

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

三、完整代码

001. 一、简介
002.  
003. 微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。
004.  
005. 二、思路分析
006.  
007. 用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。
008.  
009. 关键代码如下:
010.  
011.  
012. if($keyword=="你好"){
013.   $contentStr "hello";
014. }elseif($keyword=="苏州"){
015.   $contentStr "上有天堂,下有苏杭";
016. }else{
017.   $contentStr "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
018. }
019.  
020. 如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。
021.  
022. 三、完整代码
023.  
024.  
025. <!--?php
026. /**
027. * wechat php test
028. */
029.  
030. //define your token
031. define("TOKEN""zhuojin");
032. $wechatObj new wechatCallbackapiTest();
033. $wechatObj--->responseMsg();
034. //$wechatObj->valid();
035.  
036. class wechatCallbackapiTest
037. {
038. /*public function valid()
039. {
040. $echoStr = $_GET["echostr"];
041.  
042. //valid signature , option
043. if($this->checkSignature()){
044. echo $echoStr;
045. exit;
046. }
047. }*/
048.  
049. public function responseMsg()
050. {
051. //get post data, May be due to the different environments
052. $postStr $GLOBALS["HTTP_RAW_POST_DATA"];
053.  
054. //extract post data
055. if (!emptyempty($postStr)){
056.  
057. $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA);
058. $RX_TYPE = trim($postObj->MsgType);
059.  
060. switch($RX_TYPE)
061. {
062. case "text":
063. $resultStr $this->handleText($postObj);
064. break;
065. case "event":
066. $resultStr $this->handleEvent($postObj);
067. break;
068. default:
069. $resultStr "Unknow msg type: ".$RX_TYPE;
070. break;
071. }
072. echo $resultStr;
073. }else {
074. echo "";
075. exit;
076. }
077. }
078.  
079. public function handleText($postObj)
080. {
081. $fromUsername $postObj->FromUserName;
082. $toUsername $postObj->ToUserName;
083. $keyword = trim($postObj->Content);
084. $time = time();
085. $textTpl = "<xml>
086. <tousername><!--[CDATA[%s]]--></tousername>
087. <fromusername><!--[CDATA[%s]]--></fromusername>
088. <createtime>%s</createtime>
089. <msgtype><!--[CDATA[%s]]--></msgtype>
090. <content><!--[CDATA[%s]]--></content>
091. <funcflag>0</funcflag>
092. </xml>";            
093. if(!emptyempty$keyword ))
094. {
095. $msgType "text";
096.  
097. if($keyword=="你好"){
098. $contentStr "hello";
099. }elseif($keyword=="苏州"){
100. $contentStr "上有天堂,下有苏杭";
101. }else{
102. $contentStr "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
103. }
104. $resultStr = sprintf($textTpl$fromUsername$toUsername$time,$msgType$contentStr);
105. echo $resultStr;
106. }else{
107. echo "Input something...";
108. }
109. }
110.  
111. public function handleEvent($object)
112. {
113. $contentStr "";
114. switch ($object->Event)
115. {
116. case "subscribe":
117. $contentStr "感谢您关注【卓锦苏州】"."\n"."微信号:zhuojinsz"."\n"."卓越锦绣,名城苏州,我们为您提供苏州本地生活指南,苏州相关信息查询,做最好的苏州微信平台。"."\n"."目前平台功能如下:"."\n"."【1】 查天气,如输入:苏州天气"."\n"."【2】 查公交,如输入:苏州公交178"."\n"."【3】 翻译,如输入:翻译I love you"."\n"."【4】 苏州信息查询,如输入:苏州观前街"."\n"."更多内容,敬请期待...";
118. break;
119. default :
120. $contentStr "Unknow Event: ".$object->Event;
121. break;
122. }
123. $resultStr $this->responseText($object$contentStr);
124. return $resultStr;
125. }
126.  
127. public function responseText($object$content$flag=0)
128. {
129. $textTpl = "<xml>
130. <tousername><!--[CDATA[%s]]--></tousername>
131. <fromusername><!--[CDATA[%s]]--></fromusername>
132. <createtime>%s</createtime>
133. <msgtype><!--[CDATA[text]]--></msgtype>
134. <content><!--[CDATA[%s]]--></content>
135. <funcflag>%d</funcflag>
136. </xml>";
137. $resultStr = sprintf($textTpl$object->FromUserName, $object->ToUserName, time(), $content$flag);
138. return $resultStr;
139. }
140.  
141.  
142. private function checkSignature()
143. {
144. $signature $_GET["signature"];
145. $timestamp $_GET["timestamp"];
146. $nonce $_GET["nonce"];   
147.  
148. $token = TOKEN;
149. $tmpArr array($token$timestamp$nonce);
150. sort($tmpArr);
151. $tmpStr = implode( $tmpArr );
152. $tmpStr = sha1( $tmpStr );
153.  
154. if$tmpStr == $signature ){
155. return true;
156. }else{
157. return false;
158. }
159. }
160. }
161.  
162. ?>
163.  
164. 四、测试
165.  
166.  
167.  
168. 五、关注

四、测试

\

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页