微信公众平台开发功能整合
一、简介
在前面的几篇微信功能开发文档中,各个微信的功能都是独立的,单一微信只能提供一种功能,这样不符合大众开发者和客户的需求。所以在这一篇文章中,我们将对前面开发出来的微信功能进行简单整合,以供读者参考。
二、思路分析
一种简单的做法是,截取关键字,然后进行判断,执行相应功能代码。这种做法比较适合功能不多,简单的微信;另一种做法是,给各功能编号,然后记录用户选择的功能状态,用户每次查询的时候,首先判断他的状态,然后执行相应功能代码。这种做法适合功能整合比较多,复杂的微信;开发者可以根据自己的需要来进行选择。在这篇文章中,我们将会讲解天气和翻译功能的整合,更多功能的整合类似,大家可以参考着做一下。
三、关键字截取做法
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 = '';$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微信号:zhuojinszn请回复序号: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 测试
更多微信公众平台开发功能整合相关文章请关注PHP中文网!
- 上一篇
函数sum的功能是什么?
SUM函数指的是返回某一单元格区域中数字、逻辑值及数字的文本表达式之和。如果参数中有错误值或为不能转换成数字的文本,将会导致错误。 SUM函数是一
- 下一篇
China's Way out of U.S. Chip Blockade
Yan Yu Senior Research Fellow of the Chinese Academy of Social Sciences Amid escalating China-U.S. tensions and the U.S. ban on Huawei’s access to the global chip supply chain, the chip has become th