本帖最后由 灵感水手 于 2012-12-30 18:55 编辑 看了论坛里几个关于微信接口的应用的帖子,自已利用新浪分词服务做了简易的聊天功能,可关注微信号 easyrobot 测试:
简易安装部署步骤:
1.申请新浪SAE账号 http://sae.sina.com.cn/;
2.在SAE平台创建PHP应用,并创建chat.php文件(使用SVN上传或直接在SAE后台编辑);
3.注册微信公众平台账号 http://mp.weixin.qq.com/;
4.用微信公众号登录后台,在自动回复设置中设置接口配置URL 和 TOKEN;
5.在点击“提交”前需将SAE代码中 //$wechatObj->valid(); 这一句放开,绑定完成后再恢复。
注意:一定要开启 SAE 的 KVDB 和分词服务。
页面上贴的代码本来是可以直接用的,由于论坛页面功能有一些限制造成不便,比如 empty 会自动变成 emptyempty。我把源码帖到个人网站上了,可以到此外下载:http://www.easyapple.net/?p=1056。
或者从附件下载:
以下是完整源码:- define('TOKEN','此处填写你在微信后台设置的TOKEN');
- $wechatObj = new wechatCallbackapiTest();
- //$wechatObj->valid(); //首次验证时放开此句注释掉下面一句,验证完成时恢复
- $wechatObj->responseMsg();
-
- class wechatCallbackapiTest
- {
- public function valid()
- {
- $echoStr = $_GET['echostr'];
- if($this->checkSignature())
- {
- echo $echoStr;
- exit;
- }
- }
-
- public function responseMsg()
- {
- $postStr = $GLOBALS['HTTP_RAW_POST_DATA'];
- if (!emptyempty($postStr))
- {
- $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
- $fromUsername = $postObj->FromUserName;
- $toUsername = $postObj->ToUserName;
- $keyword = trim($postObj->Content);
- $time = time();
- $textTpl = '
-
-
- %s
-
-
- 0
- ';
-
- if(!emptyempty( $keyword ))
- {
- $msgType = 'text';
- $commonInfo = new commonInfo();
- $ipaddr = $commonInfo->getClientIp();
- $cityinfo = $commonInfo->getIpCity($ipaddr);
- $cityname = $cityinfo;
- $exinfo = $cityinfo;
- $pos = strpos($cityinfo, ' ', 3);
- if ($pos > -1)
- {
- $cityname = substr($cityinfo, 0, $pos);
- $exinfo = substr($cityinfo, $pos + 1, strlen($cityinfo) - $pos - 1);
- }
- if (strlen($cityname) > 3)
- {
- $cityflag = substr($cityname, 0, strlen($cityname) - 3);
- }
- else
- {
- $cityflag = '地球';
- }
- $welcomeinfo = '灵感机器人欢迎你!';
- $contentStr = '来自'.$cityflag.$exinfo.'的朋友'.$welcomeinfo.'\r\n';
- $contentStr .= '你的IP地址是:' . $ipaddr . '\r\n';
-
- if(strtolower($keyword) == 'weather' || $keyword == '天气')
- {
- //Wether Report
- $contentStr .= $commonInfo->getWeatherInfo($cityflag);
- }
- else
- {
- //Robot
- $talk = new talk();
- $reply = $talk->reply($keyword);
- if (emptyempty($reply))
- {
- //虫洞查询
- $tipinfo = '你可以输入‘help’教我学习聊天,或者输入‘天气’看看天气情况。\r\n你说的内容我不太懂,所以上网查了一下 ^_^\r\n\r\n';
- $queryinfo = file_get_contents('http://wap.unidust.cn/api/searchout.do?type=client&ch=1001&info='.$keyword);
- $pos = strpos($queryinfo,$keyword);
- $queryinfo = mb_strcut($queryinfo,$pos,1024,'utf-8');
- $queryinfo = str_replace('uzoo.cn','www.easyapple.net',$queryinfo);
- $queryinfo = str_replace('虫洞','EasyApple',$queryinfo);
- $reply = $tipinfo.$queryinfo;
-
- //自主学习
- $answer = $talk->getAnswer($keyword, substr($queryinfo,strlen($keyword),512));
- if(emptyempty($answer))
- {
- $contentStr .= $reply;
- }
- else
- {
- $contentStr = $answer;
- }
- }
- else
- {
- $contentStr = $reply;
- }
- }
-
- if (emptyempty($contentStr))
- {
- $contentStr = '亲爱的,跟你聊天我学到了不少东西,此时我不知道说什么好。。。';
- }
- $resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );
- echo $resultStr;
- }
- else
- {
- echo 'Input something…';
- }
- }
- else
- {
- echo '';
- exit;
- }
- }
-
- private function checkSignature()
- {
- $signature = $_GET['signature'];
- $timestamp = $_GET['timestamp'];
- $nonce = $_GET['nonce'];
- $token = TOKEN;
- $tmpArr = array($token, $timestamp, $nonce);
- sort($tmpArr);
- $tmpStr = implode( $tmpArr );
- $tmpStr = sha1( $tmpStr );
- if( $tmpStr == $signature )
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。