微信公众号之自动回复文字 -- PHP

7 篇文章 0 订阅

 

首先得设置一个 可以接受 微信服务器 发过来 的东西的 无权限  的接收信息的网址

怎么设置自己去官方文档上看看

微信公众号开发文档链接

 

然后微信 会 发个东西来 验证一下你 的这个网址是否正确

具体验证操作代码如下

/**
     * 微信接入
     */
    function sss() {
        //$this->responseMsg();
//如果相等,验证成功就返回echostr 只需 一次调用
        if ($this->checkSignature()) {
            //返回echostr
            $echostr = $_GET['echostr'];
            if ($echostr) {
                echo $echostr;
            } else {
                echo "Access error.";
            }
        }
        exit;
    }

 


    //检查标签
    function checkSignature() {
        //先获取到这三个参数
        $signature = $_GET['signature'];
        $nonce = $_GET['nonce'];
        $timestamp = $_GET['timestamp'];
        //把这三个参数存到一个数组里面
        $tmpArr = array($timestamp, $nonce, $this->token);//微信公众号自己设置的值
        //进行字典排序
        sort($tmpArr);
        //把数组中的元素合并成字符串,impode()函数是用来将一个数组合并成字符串的
        $tmpStr = implode($tmpArr);
        //sha1加密,调用sha1函数
        $tmpStr = sha1($tmpStr);
        //判断加密后的字符串是否和signature相等
        if ($tmpStr == $signature) {
            return true;
        }
        return false;
    }

 

那么验证成功后需要注意的一点

从现在开始,这个发送的网址就已经生效了,需要做的是

把这个验证代码给去掉,去写你的业务逻辑代码

 

接下来就好处理了,微信公众号上 用户 发的消息,都会经过 微信服务器 转发到你写的这个 方法来

 

 

  public function responseMsg() {
        //get post data, May be due to the different environments
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //接收微信发来的XML数据
        //extract post data
        if (!empty($postStr)) {
            //解析post来的XML为一个对象$postObj
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName; //请求消息的用户
            $toUsername = $postObj->ToUserName; //"我"的公众号id
            $keyword = trim($postObj->Content); //接受到用户的消息内容
            $Latitude = $postObj->Latitude; //纬度
            $Longitude = $postObj->Longitude; //经度
            $Precision = $postObj->Precision; //地理位置精度
            $Event = $postObj->Event; //事件类型
            $time = time(); //时间戳
            $msgtype = 'text'; //消息类型:文本
            $textTpl = "<xml>
  <ToUserName><![CDATA[%s]]></ToUserName>
  <FromUserName><![CDATA[%s]]></FromUserName>
  <CreateTime>%s</CreateTime>
  <MsgType><![CDATA[%s]]></MsgType>
  <Content><![CDATA[%s]]></Content>
  </xml>";
            /**
             * 地理位置确认
             */
            if ($Event == 'LOCATION') {
                $useraddress = $this->upuser($fromUsername, $Longitude, $Latitude, $Precision);
//                 $this->sendmsg($textTpl, $fromUsername, $toUsername, $time, $msgtype, "您当前位置是:{$useraddress}");
                die;
            }
            //签到设置
            if (strpos($keyword, "签到") !== false ) {
                    $contentStr = "签到成功。";
                }
            }

            if (empty($ary[$keyword]) && empty($contentStr)) {
                $contentStr = M("setting")->where("id = 6 and state = 1")->getField("setval");
                $contentStr = $contentStr ? $contentStr : '欢迎关注乖宝宝儿童摄影。';
            } else {
                $contentStr = $contentStr ? $contentStr : $ary[$keyword];
            }
            $this->sendmsg($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
        } else {
            echo "";
        }
    }

 

/**

*返回消息给 微信服务器,注意格式。。。

*/

 function sendmsg($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr) {
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
        echo $resultStr;
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP微信公众号自动回复是指通过ASP编程语言实现的一种功能,当用户在微信公众号中发送消息时,公众号会根据预设的规则和条件自动回复相应的内容。 通过ASP微信公众号自动回复,可以实现以下功能: 1. 关键词回复:根据用户发送的关键词,自动回复相应的内容。可以预设一系列常见问题的关键词,当用户发送匹配的关键词时,公众号自动回复相应的答案。 2. 模糊匹配:可以设置关键词的模糊匹配规则,即使用户输入了略有不同的关键词,公众号也可以根据相似度自动回复相应的答案。 3. 自定义回复:用户可以根据实际需求自定义回复的内容,包括文本、图片、语音等形式。可以根据用户的消息类型进行不同的回复,提供更丰富的交互体验。 4. 多场景回复:可以根据用户所在的场景进行不同的回复。例如,当用户在购物场景中发送消息时,公众号可以自动回复商品信息和优惠信息;当用户在咨询场景中发送消息时,公众号可以自动回复相关问题的答案。 5. 定时回复:可以设置定时任务,根据预设的时间进行自动回复。例如,可以设置每天早上9点自动回复早安,晚上10点自动回复晚安。 通过ASP微信公众号自动回复,可以提高公众号的效率和服务质量,实现自动化的客户互动。同时,也可以节省人力资源,让公众号能够更好地应对大量用户的咨询和需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值