易腾动力社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7083|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-28 16:16:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一、简介
微信公众平台可以根据用户发送的信息进行判断,然后给出对应的回复,具有良好的交互性。下文将模拟简单的回复功能,根据这个案例,开发者也可以基本理解微信交互的原理,进行更深层次的开发。
二、思路分析
用户发送过来的文本信息,我们可以提取关键字,通过简单的 if...elseif...else... 实现。
如果用户发送"你好",则回复"hello",如果用户发送"吃了吗",则回复"吃过了",其他信息,则回复你的欢迎词。
三、完整代码
  1. <?php

  2. define("TOKEN", "yitens");
  3. $wechatObj = new wechatCallbackapiTest();
  4. $wechatObj->responseMsg();

  5. class wechatCallbackapiTest
  6. {
  7.     public function responseMsg()
  8.     {
  9.         //get post data, May be due to the different environments
  10.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

  11.           //extract post data
  12.         if (!empty($postStr)){
  13.                
  14.                   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  15.                 $RX_TYPE = trim($postObj->MsgType);

  16.                 switch($RX_TYPE)
  17.                 {
  18.                     case "text":
  19.                         $resultStr = $this->handleText($postObj);
  20.                         break;
  21.                     case "event":
  22.                         $resultStr = $this->handleEvent($postObj);
  23.                         break;
  24.                     default:
  25.                         $resultStr = "Unknow msg type: ".$RX_TYPE;
  26.                         break;
  27.                 }
  28.                 echo $resultStr;
  29.         }else {
  30.             echo "";
  31.             exit;
  32.         }
  33.     }

  34.     public function handleText($postObj)
  35.     {
  36.         $fromUsername = $postObj->FromUserName;
  37.         $toUsername = $postObj->ToUserName;
  38.         $keyword = trim($postObj->Content);
  39.         $time = time();
  40.         $textTpl = "<xml>
  41.                     <ToUserName><![CDATA[%s]]></ToUserName>
  42.                     <FromUserName><![CDATA[%s]]></FromUserName>
  43.                     <CreateTime>%s</CreateTime>
  44.                     <MsgType><![CDATA[%s]]></MsgType>
  45.                     <Content><![CDATA[%s]]></Content>
  46.                     <FuncFlag>0</FuncFlag>
  47.                     </xml>";            
  48.         if(!empty( $keyword ))
  49.         {
  50.             $msgType = "text";

  51.             if($keyword=="你好"){
  52.                 $contentStr = "hello,有什么能帮到你吗?";
  53.             }elseif($keyword=="吃了吗"){
  54.                 $contentStr = "吃过了";
  55.             }elseif($keyword=="JC"){
  56.                 $contentStr = "请咨询QQ:745286359";
  57.             }else{
  58.                 $contentStr = "感谢您关注【易腾建站】 微信号:yitens_net";
  59.             }
  60.             $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  61.             echo $resultStr;
  62.         }else{
  63.             echo "Input something...";
  64.         }
  65.     }

  66.     public function handleEvent($object)
  67.     {
  68.         $contentStr = "";
  69.         switch ($object->Event)
  70.         {
  71.             case "subscribe":
  72.                 $contentStr = "感谢您关注【易腾建站】"."\n"."微信号:yitens_net"."\n"."把复杂变得容易,让事业讯速飞腾,我们为您提供建站咨询,微信开发,空间域名服务,誓做最好的建站服务平台。"."\n"."目前平台功能如下:"."\n"."【1】 查服务,如输入:JC"."\n"."【2】 查域名,如输入:DMyitens.net"."\n"."【3】 查空间,如输入:HTyitens"."\n"."【4】 查微信,如输入:WX"."\n"."更多内容,敬请期待...";
  73.                 break;
  74.             default :
  75.                 $contentStr = "Unknow Event: ".$object->Event;
  76.                 break;
  77.         }
  78.         $resultStr = $this->responseText($object, $contentStr);
  79.         return $resultStr;
  80.     }
  81.    
  82.     public function responseText($object, $content, $flag=0)
  83.     {
  84.         $textTpl = "<xml>
  85.                     <ToUserName><![CDATA[%s]]></ToUserName>
  86.                     <FromUserName><![CDATA[%s]]></FromUserName>
  87.                     <CreateTime>%s</CreateTime>
  88.                     <MsgType><![CDATA[text]]></MsgType>
  89.                     <Content><![CDATA[%s]]></Content>
  90.                     <FuncFlag>%d</FuncFlag>
  91.                     </xml>";
  92.         $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
  93.         return $resultStr;
  94.     }
  95. }

  96. ?>
复制代码
四、测试

五、关注
请关注 易腾建站 微信公众帐号:yitens_net 基于BAE 平台开发,针对于主流的微信功能进行开发测试。
您可以关注 易腾建站 公众帐号进行功能测试,以及获取新的应用开发。
1. 登录微信客户端,通讯录 -> 添加朋友 -> 查找公众号 -> yitens_net,查找并关注。
2. 扫描二维码:

业务合作,请联系作者QQ:745286359
我的微信号:JKun26
给我写信:janku@yitens.net
我们永远相信,分享是一种美德 | We Believe, Great People Share Knowledge...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易腾动力 ( 粤ICP备12094338号 )

GMT+8, 2025-5-4 21:46 , Processed in 0.047766 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2024 Yidz Inc.

快速回复 返回顶部 返回列表