美文网首页
php公众号自动回复机器人

php公众号自动回复机器人

作者: 程序猿吴彦祖 | 来源:发表于2017-06-26 16:21 被阅读0次

    作为一个php新手,更是第一次开发公众号,为了给女票一些便利,闲暇时间能有得玩,便想做一个专属的公众号,刚开始用的python 奈何,坑太多..上手太慢了,还是转战世界上最好的语言PHP(不要打脸),爬了N朵代码,终于成功,废话不多说,直接上代码.
    <pre>
    <?php
    //token 自己定义
    define("TOKEN", "shuiyun");
    $wechatObj = new wechatCallbackapiTest();
    //$wechatObj->valid();
    if (isset($_GET['echostr'])) {
    $wechatObj -> valid();
    } else {
    $wechatObj -> responseMsg();
    }

    class wechatCallbackapiTest
    {
    public function valid()
    {
    $echoStr = $_GET["echostr"];

        //valid signature , option
        if($this->checkSignature()){
            header('content-type:text');
            echo $echoStr;
            exit;
        }
    }
    
    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    
        if (!empty($postStr)){
            
                   the best way is to check the validity of xml by yourself */
                libxml_disable_entity_loader(true);
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>";             
                if(!empty( $keyword ))
                {
                    $msgType = "text";
                    
                    if($keyword=="功能"){
                        $contentStr = "查询快递123456789\n讲个笑话\n讲个故事\n成语接龙一诺千金\n北京天气\n今天北京到上海的飞机\n今天北京到上海的火车\n天安门到王府井的公交有哪些\n北京的邮编\n脑筋急转弯\n影视搜索\n等等";
                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                        echo $resultStr;
                    }else{
                            $apiKey = "36f74a73b1084469a168858d9922f01f";
                        $apiURL = "http://www.tuling123.com/openapi/api?key=KEY&info=INFO";
                        $reqInfo = $keyword;
                        $url = str_replace("INFO", $reqInfo, str_replace("KEY", $apiKey, $apiURL));
                        $res = file_get_contents($url);
                        $contentStr = json_decode($res)->text;
                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                        echo $resultStr;
                    }
                }else{
                    echo "你还想要我怎样?";
                }
    
        }else {
            echo "";
            exit;
        }
    }
        
    private function checkSignature()
    {
        if (!defined("TOKEN")) {
            throw new Exception('TOKEN is not defined!');
        }
        
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
                
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
    

    }

    ?>
    </pre>
    用的是图灵机器人免费版

    相关文章

      网友评论

          本文标题:php公众号自动回复机器人

          本文链接:https://www.haomeiwen.com/subject/xddjcxtx.html