zoukankan      html  css  js  c++  java
  • 【玩转微信公众平台之九】 第一个功能:消息自己主动回复

    这篇就来实现我们微信公众平台的第一个功能:消息自己主动回复。

    -------------
    尽管之前已经通过了前面的开发人员验证,可是我们的微信公众平台仍然不会自己主动回复消息。为什么呢?原因就在于自己主动回复消息的功能并没有“打开。还记得上篇我说过,在wechatCallbackapiTest这个类中有三个函数valid,responseMsg,checkSignature,valid和checkSignature主要是用来验证用的,而responseMsg则是用来回复消息的。
    以下看下wx_sample.php 文档里的第8、9行
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->valid();
    第8行的意思是将wechatCallbackapiTest这个类由抽象转成实体化,什么意思呢?假设wechatCallbackapiTest是一个手机,尽管你想要用这个手机做非常多事,但前提是这个手机要是你的啊!无论这个手机再好,但它终究是抽象的,和你没关系的。那要怎么变成你的呢?非常easy,用new 来购买下,将这个手机买下来。等快递送手机上门时,你手里拿着手机才会有那种实实在在的感觉。
    好了,既然手机已经拿到了,那肯定就能够使用手机里的功能了,眼下手机有两大功能,一个是验证接口,一个是回复消息。第9行这行代码就是调用valid()这个函数来实现接口验证,可是我们之前已经验证接口成功了(要不然你以为自己是怎么成为开发人员的?),所以以后都不须要验证接口,那么就将这行代码删掉或者凝视掉,例如以下:
    $wechatObj = new wechatCallbackapiTest();
    //$wechatObj->valid();
    以下就要调用消息回复的函数,相似调用接口验证的写法,我们这样写:
    $wechatObj->responseMsg();//调用回复消息的函数
    既然回复消息的“开关”打开了,想必如今我们的公众平台应该能够自己主动回复消息了吧?在測试之前要先将上面改动的代码打包成zip文件,然后依照之前的方法上传到SAEserver上(假设忘了猛戳这里)。
    1、这时候向你的公众平台发送随意文字,就能够返回信息
    ,例如以下:

    这里的"Welcome to wechat world!"几个字是怎么来的呢?看代码48行是不是又这么一句:
    $contentStr = "Welcome to wechat world!";
    没错,仅仅要将我们要回复的文字放到$contentStr这个变量中,那么微信就会自己主动回复我们想要的文字。以下我将这句话换成“风一般的男纸”,代码例如以下:
    $msgType = "text";
    $contentStr = "风一般的男纸!";
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    echo $resultStr;
    上传到SAE上试试,例如以下图:

    2、关键词自己主动回复。在之前我们实用编辑模式实现过关键词自己主动回复,这次我们用开发模式来试试。
    在上一篇的代码分析力我们知道第35行的 $keyword保存着client用户发来的文本信息,因此我们假设跟处理用户发来的关键词,那就要先处理$keyword。代码例如以下:
    $msgType = "text";
    if($keyword == "1")
    {
    	$contentStr = "博主ID:star特530";
    }
    else if($contentStr == "2")
    {
    	$contentStr = "博主爱好:唱歌、跳舞、看书";
    }
    else
    {
    	$contentStr = "能说人话吗?";
    }
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    echo $resultStr;

    上面代码实现的功能是:当用户发“1”过来时,微信平台回复他“博主ID:star特530”;当用户发来“2”时,微信平台回复“博主爱好:唱歌、跳舞、看书”;当用户发来的消息不是"1"也不是"2"时,微信平台就回复”能说人话吗?“。
    保存,上传到SAE,效果例如以下:

    3、关注回复。所谓关注回复,就是当别人关注你时须要回复他的内容,这个我之前在编辑者模式的使用时有提到过。
    在代码45行之前加入以下这么一段代码:

    $type = $postObj->MsgType;//获取用户发来的消息类型(可能是文字,也可能是事件推送)
    $customevent = $postObj->Event;//获取用户是关注还是取消关注
    //当消息类型为事件推送,而且customevent 为 subscribe(关注)的情况时
    if($type == "event" and $customevent == "subscribe")
    {
    	$msgType = "text";
    	$contentStr = "感谢您的关注,回复“1”查看博主ID;回复“2”查看博主爱好";
    	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    	echo $resultStr;
    }

    以下我又一次关注下公众号,測试例如以下:


    最后补充一下,就是微信回复的消息,除了英文部分外,其它都是乱码,这是怎么回事呢?由于微信传输信息採用的是XML格式,而XML格式採用的是UTF-8编码,因此我们要将中文转码为UTF-8编码。方法例如以下:

    在Dreamweaver中“改动”菜单 中选择 “页面属性”,然后选择“标题/编码”,在编码的下拉列表中选择最上端的Unicode(UTF-8)保存更新后就可以正常显示。

    any question?

    no!

    OK!,that is all.

    恩,本篇到此结束。


    尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/25916211
  • 相关阅读:
    jQuery(Ajax)
    博文相关接口
    登录接口设计和实现
    CSS-层叠样式表
    Google Kaptcha 生成图形验证码
    IDEA中如何修改生成javadoc里默认的author
    maven项目resources文件在target找不到
    IDEA 获取 resources 下的文件
    免安装版 mysql5.7.zip 的配置记录
    从前端模块化 到 webpack 再到使用 vue文件
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3899474.html
Copyright © 2011-2022 走看看