1. はじめに
前述の WeChat 機能開発ドキュメントでは、各 WeChat の機能は独立して 1 つの機能しか提供できませんが、これは大量の開発者や顧客のニーズと一致しません。 。 必要。したがって、この記事では、読者の参考のために、以前に開発された WeChat の機能を簡単に統合します。
2. アイデア分析
簡単な方法は、キーワードをインターセプトし、対応する関数コードを判断して実行することです。このアプローチは、機能が少ない単純な WeChat に適しています。別のアプローチは、各機能に番号を付け、ユーザーがクエリを実行するたびに、最初にステータスを確認してから、対応する機能コードを実行することです。このアプローチは、多くの複雑な機能を統合する WeChat に適しており、開発者は独自のニーズに応じて選択できます。この記事では、天気と翻訳機能の統合について説明します。その他の機能の統合も同様です。
3. キーワード傍受方法
3.1 キーワード傍受
ユーザが送信するメッセージ形式は固定とし、天気クエリ形式は「地域+天気」などと定義する。 Suzhou "Weather"、"Beijing Weather" であるため、最初に最後の 2 つの単語をインターセプトして、それが "weather" キーワードであるかどうかを判断し、次にクエリのために前の都市名をインターセプトします。同様に、翻訳では最初の 2 つの単語をインターセプトして、それらが「翻訳」キーワードであるかどうかを判断し、その後、クエリ操作のために次のテキストをインターセプトします。
//截取关键字 $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. ステータスの記録方法
4.1 説明
まず、
応答番号:
1. 翻訳クエリ
のように、各機能に番号を付ける必要があります。次に、データベースを使用してユーザーのクエリ ステータスを記録します。ユーザーがメッセージを入力するたびに、システムはまずデータベースからユーザーのステータスをクエリし、対応する操作を実行します。
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;
データベースを操作するには、MySQL のデータの操作ファイルを導入する必要があります。ここでは BAE が提供するクラウドを使用します。
//引入数据库文件 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); }
ユーザーの既存のステータスと新たに入力されたステータスが異なり、入力されたキーワードが数字である場合に判定します。その後、$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 テスト
WeChat パブリック プラットフォーム開発機能の統合に関するその他の記事については、PHP 中国語 Web サイトに注目してください。