>  기사  >  위챗 애플릿  >  WeChat 공개 플랫폼 개발 기능 통합

WeChat 공개 플랫폼 개발 기능 통합

高洛峰
高洛峰원래의
2017-03-06 09:27:101535검색

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 테스트

WeChat 공개 플랫폼 개발 기능 통합

테스트에 성공했습니다.

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;

WeChat 공개 플랫폼 개발 기능 통합

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 공개 플랫폼 개발 기능 통합

WeChat 공개 플랫폼 개발 기능 통합과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.