热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信公众平台开发功能整合

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

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

二、思路分析

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

三、关键字截取做法

3.1 关键字截取

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

//截取关键字
$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 = &#39;&#39;;
    $sql = "DELETE FROM user_flags WHERE from_user = &#39;$fromUsername&#39;";
    _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(&#39;$fromUsername&#39;,&#39;1&#39;)";
            $cOntentStr= "请输入要查询天气的城市:如北京、上海、苏州";
            break;
        case 2:    //翻译
            $sql = "insert into user_flags(from_user,flag_id) values(&#39;$fromUsername&#39;,&#39;2&#39;)";
            $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 == &#39;1&#39;)
    {
        $cOntentStr= _weather($keyword);    //查询天气
    }elseif ($user_flag == &#39;2&#39;)
    {
        $cOntentStr= _baiduDic($keyword);    //翻译
    }
}

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

4.7 测试

更多微信公众平台开发功能整合相关文章请关注PHP中文网!

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了通过mysql命令查看mysql的安装路径的方法,提供了相应的sql语句,并希望对读者有参考价值。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
author-avatar
wentingcool_533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有