+发表新主题
查看: 1229|回复: 0

[开发入门] 微信开发入门系列教程(二)-- 关注公众号自动回复

[复制链接]

[开发入门] 微信开发入门系列教程(二)-- 关注公众号自动回复

[复制链接]
风的传说自由 发表于 2015-8-13 17:36:07 浏览:  1229 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
社区有开发者在提问,自己写的关注自动回复没有实现,所以给大家提供一个简单的事例,用法非常简单,就是一个简单的消息回复,主要就是判定下消息的类型。在之前的教程有简单提过事件推送,关注公众号的自动回复属于“关注/取消关注事件”,微信服务器传送过来的消息格式如下:

  1. <xml>

  2. <ToUserName><![CDATA[toUser]]></ToUserName>

  3. <FromUserName><![CDATA[FromUser]]></FromUserName>

  4. <CreateTime>123456789</CreateTime>

  5. <MsgType><![CDATA[event]]></MsgType>

  6. <Event><![CDATA[subscribe]]></Event>

  7. </xml>有关事件推送消息格式的详细说明,请参考微信开发入门系列教程(二)-- 接收事件推送微信开发入门系列教程(二)-- 接收事件推送,或者也可以参阅微信公众平台开发者文档。
  8. 其中事件类型Event参数:subscribe表示关注、unsubscribe表示取消关注。
  9. 这里我直接在关注的时候回复一条简单的文本信息,完整的代码在附件中,供新手做个参考。

  10.                 if (!empty($postStr)){

  11.                 /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,

  12.                    the best way is to check the validity of xml by yourself */

  13.                 libxml_disable_entity_loader(true);

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

  15.                 $fromUsername = $postObj->FromUserName;

  16.                 $toUsername = $postObj->ToUserName;

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

  18.                 $msgType=$postObj->MsgType;

  19.                 $time = time();

  20.                 $textTpl = "<xml>

  21.                             <ToUserName><![CDATA[%s]]></ToUserName>

  22.                             <FromUserName><![CDATA[%s]]></FromUserName>

  23.                             <CreateTime>%s</CreateTime>

  24.                             <MsgType><![CDATA[%s]]></MsgType>

  25.                             <Content><![CDATA[%s]]></Content>

  26.                             </xml>";

  27.                 switch ($msgType) {

  28.                     case "text":

  29.                         if(!empty( $keyword ))

  30.                         {

  31.                            

  32.                             $contentStr = "自动回复!";

  33.                         }

  34.                         break;

  35.                     case "event":

  36.                         if($postObj->Event=="subscribe"){



  37.                             $contentStr = "欢迎关注微信开发者社区";

  38.                         }

  39.                         breaK;

  40.                     default:

  41.                         break;

  42.                 }

  43.                 $msgType = "text";

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

  45.                 echo $resultStr;

  46.         }else {

  47.                 echo "";

  48.                 exit;

  49.         }
复制代码
173549anyk6hxj0h68xki3.png


游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网