守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 1380|回复: 0
打印 上一主题 下一主题

[入门资料] 微信公众平台开发(十一) 功能整合

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    52692
    钢镚
    1422

    开源英雄守望者

    跳转到指定楼层
    楼主
    发表于 2016-8-18 15:35:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    来源:http://www.cnblogs.com/mchina/p/3494906.html


    一、简介

    在前面的几篇微信功能开发文档中,各个微信的功能都是独立的,单一微信只能提供一种功能,这样不符合大众开发者和客户的需求。所以在这一篇文章中,我们将对前面开发出来的微信功能进行简单整合,以供读者参考。

    二、思路分析

    一种简单的做法是,截取关键字,然后进行判断,执行相应功能代码。这种做法比较适合功能不多,简单的微信;另一种做法是,给各功能编号,然后记录用户选择的功能状态,用户每次查询的时候,首先判断他的状态,然后执行相应功能代码。这种做法适合功能整合比较多,复杂的微信;开发者可以根据自己的需要来进行选择。在这篇文章中,我们将会讲解天气和翻译功能的整合,更多功能的整合类似,大家可以参考着做一下。

    三、关键字截取做法

    3.1 关键字截取

    我们定义用户发送过来的消息格式是固定好的,查询天气格式为 “地区+天气”,例如 “苏州天气”、“北京天气”,所以首先截取后两个字,判断是否为 “天气” 关键字,然后再截取前面的城市名,进行查询。同理,翻译也是截取前面的两个字,判断是否为“翻译”关键字,然后再截取后面的文字进行查询操作。

    关于关键字截取方法,请参考前面的文章介绍,地址是:http://www.cnblogs.com/mchina/p/3170551.html

    //截取关键字
    $weather_key = mb_substr($keyword,-2,2,"UTF-8");
    $city_key = mb_substr($keyword,0,-2,"UTF-8");
    $translate_key = mb_substr($keyword,0,2,"UTF-8");
    $word_key = mb_substr($keyword,2,200,"UTF-8");

    3.2 功能整合

    复制代码
    if($weather_key == '天气' && !empty($city_key) && $translate_key != '翻译'){
        $contentStr = _weather($city_key);
    }elseif($translate_key == '翻译' && !empty($word_key)){
        $contentStr = _baiduDic($word_key);
    }else{
        $contentStr = "感谢您关注【卓锦苏州】\n微信号:zhuojinsz";
    }
    复制代码

    说明:在这里,我们已经将查询天气和翻译封装成了函数 _weather() 和 _baiduDic(),然后引入这些文件,在这里直接调用即可,非常方便。

    这样,我们就完成了天气和翻译功能的整合。

    3.3 测试

    测试成功。

    四、状态记录做法

    4.1 说明

    首先,我们需要将各功能进行编号,比如:

    回复序号:

    1. 天气查询

    2. 翻译查询

    然后使用数据库记录用户的查询状态,用户每次输入消息,系统先从数据库中查询该用户的状态,然后进行相应操作。

    4.2 在数据库中创建用户状态表 user_flags.

    复制代码
    --
    -- 表的结构 `user_flags`
    --
    
    CREATE TABLE IF NOT EXISTS `user_flags` (
      `from_user` varchar(50) NOT NULL,
      `flag_id` int(4) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    复制代码

    4.3 引入数据库函数文件

    操作数据库,需要引入数据的操作文件,这里使用BAE 提供的MySQL 云数据库。

    //引入数据库文件
    require_once('includes/mysql_bae.func.php');

    4.4 判断用户状态

    复制代码
    //判断用户状态
    $sql = "SELECT flag_id FROM user_flags WHERE from_user = '$fromUsername' LIMIT 0,1";
    $result = _select_data($sql);
    while (!!$rows = mysql_fetch_array($result))
    {
      $user_flag = $rows[flag_id];
    }
    复制代码

    说明:从user_flags 表中获取flag_id 赋给$user_flag,用于下面的判断操作。

    4.5 判断用户存在的状态和新输入的状态

    if(trim($keyword) <> $user_flag && is_numeric($keyword))
    {
        $user_flag = '';
        $sql = "DELETE FROM user_flags WHERE from_user = '$fromUsername'";
        _delete_data($sql);
    }

    说明:判断用户存在的状态和新输入的状态,如果状态不一样,而且输入的keyword 是数字,则设置$user_flag 为空,数据库中清除状态,好像第一次查询流程

    4.6 用户状态判断

    A. 状态为空,即第一次查询

    复制代码
    if (empty($user_flag))
    {
        switch ($keyword)
        {
            case 1:    //查询天气
                $sql = "insert into user_flags(from_user,flag_id) values('$fromUsername','1')";
                $contentStr = "请输入要查询天气的城市:如北京、上海、苏州";
                break;
            case 2:    //翻译
                $sql = "insert into user_flags(from_user,flag_id) values('$fromUsername','2')";
                $contentStr = "请输入要翻译的内容:如:早上好、good morning、おはよう";
                break;
            default: //其他
                $sql = "";
                $contentStr = "感谢您关注【卓锦苏州】\n微信号:zhuojinsz\n请回复序号:\n1. 天气查询\n2. 翻译查询\n输入【帮助】查看提示\n更多内容,敬请期待...";
                break;
        }
        
        //判断并执行上面的插入语句
        if (!empty($sql))
        {
            _insert_data($sql);
        }
    }
    复制代码

    说明:用户状态为空,即第一次查询,如果用户输入的关键字是功能序号,即1或2,则将用户状态写入数据库,然后给出提示信息;如果用户输入的关键字不是功能序号,则给出帮助信息,提示用户输入。

    B. 用户状态不为空

    复制代码
    else{
        if ($user_flag == '1')
        {
            $contentStr = _weather($keyword);    //查询天气
        }elseif ($user_flag == '2')
        {
            $contentStr = _baiduDic($keyword);    //翻译
        }
    }
    复制代码

    说明:用户状态不为空,用户已经有查询操作,只要用户不切换功能,则一直保持在现有功能下,执行相应代码。

    4.7 测试

     

    五、完整代码获取

    请访问 乐思乐享 官方论坛

    URLhttp://pan.baidu.com/s/1c0s3Jby

    六、关注

    请关注 卓锦苏州 微信公众帐号,卓锦苏州 基于BAE 平台开发,针对于主流的微信功能进行开发测试。

    您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。

    1. 登录微信客户端,通讯录 -> 添加朋友 -> 查找公众号 -> zhuojinsz,查找并关注。

    2. 扫描二维码:

    卓锦苏州 功能列表:

     


    David Camp

    我们永远相信,分享是一种美德 | We Believe, Great People Share Knowledge...

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
    收藏收藏 分享分享 支持支持 反对反对 微信
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

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

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2024-4-19 16:26 , Processed in 0.047454 second(s), 34 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

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