1. 소개
이전 WeChat 기능 개발 문서에서는 각 WeChat의 기능이 독립적입니다. 대량 개발자와 고객의 요구를 충족하지 못하는 하나의 기능만 제공합니다. 따라서 본 글에서는 독자들의 참고를 위해 기존에 개발된 위챗 기능을 간략하게 통합해 보겠습니다.
2. 아이디어 분석
간단한 방법은 키워드를 가로채서 해당 함수 코드를 판단하고 실행하는 것입니다. 이 접근 방식은 기능이 거의 없는 간단한 WeChat에 더 적합합니다. 또 다른 접근 방식은 사용자가 쿼리할 때마다 각 기능에 번호를 지정한 다음 해당 기능 코드를 실행하는 것입니다. 이 접근 방식은 개발자가 자신의 필요에 따라 선택할 수 있는 많은 복잡한 기능을 통합하는 WeChat에 적합합니다. 이번 글에서는 날씨와 번역 기능의 통합에 대해 설명하겠습니다. 더 많은 기능의 통합도 비슷하다고 보시면 됩니다.
3. 키워드 차단 방법
3.1 키워드 차단
사용자가 보내는 메시지의 형식이 고정되어 있다고 정의합니다. 날씨 쿼리 형식은 "쑤저우 날씨", "베이징 날씨"와 같이 "지역 + 날씨"이므로 먼저 마지막 두 단어를 가로채서 "날씨"인지 확인합니다. " 키워드를 입력한 다음 이전 도시 이름을 가로채서 쿼리합니다. 같은 방식으로 번역도 처음 두 단어를 가로채서 "translation" 키워드인지 확인한 다음 쿼리 작업을 위해 다음 텍스트를 가로챕니다.
//截取关键字 $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"; }
지침: in 여기에서는 날씨 쿼리와 번역을 _weather() 및 _baiduDic() 함수로 캡슐화한 다음 이러한 파일을 가져와 여기에서 직접 호출했는데 이는 매우 편리합니다.
이렇게 해서 날씨와 번역 기능의 통합을 완료했습니다.
3.3 테스트
테스트에 성공했습니다.
4. 상태 기록 방법
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); }
지침: 사용자의 기존 상태와 새로 입력된 상태를 확인합니다. 상태가 다르고 입력된 키워드가 숫자인 경우 첫 번째 쿼리 프로세스처럼 $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 중국어 웹사이트를 주목하세요!