首頁  >  文章  >  微信小程式  >  微信公眾平台開發功能整合

微信公眾平台開發功能整合

高洛峰
高洛峰原創
2017-03-06 09:27:101536瀏覽

一、簡介

在前面的幾篇微信功能開發文件中,各個微信的功能都是獨立的,單一微信只能提供一種功能,這樣不符合大眾開發者和客戶的需求。所以在這篇文章中,我們將對前面發展出來的微信功能進行簡單整合,以供讀者參考。

二、思路分析

#一種簡單的做法是,截取關鍵字,然後判斷,執行對應功能代碼。這種做法比較適合功能不多,簡單的微信;另一種做法是,給各功能編號,然後記錄用戶選擇的功能狀態,用戶每次查詢的時候,先判斷他的狀態,然後執行對應功能代碼。這種做法適合功能整合比較多,複雜的微信;開發者可以依照自己的需求來進行選擇。在這篇文章中,我們將會講解天氣和翻譯功能的整合,更多功能的整合類似,大家可以參考著做一下。

三、關鍵字截取做法

#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微信号: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 測驗

 

#

更多微信大眾平台開發功能整合相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn