微信公众平台开发(四) 简单回复功能开发来源:David Camp 时间:2013-09-09 18:51:17
[导读] 一、简介微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。二、思路分 一、简介
微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。
二、思路分析
用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。
关键代码如下:
view source
print?
1.if($keyword=="你好"){
2. $contentStr = "hello";
3.}elseif($keyword=="苏州"){
4. $contentStr = "上有天堂,下有苏杭";
5.}else{
6. $contentStr = "感谢您关注【卓锦苏州】 微信号:zhuojinsz";
7.}
如果用户发送"你好",则回复"hello",如果用户发送"苏州",则回复"上有天堂,下有苏杭",其他信息,则回复你的欢迎词。
三、完整代码
view source
print?
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.五、关注
四、测试
|