微信开发自动回复

众所周知,微信有一个特别重要的一个功能就是自动回复,就是用户访问订阅号并发送消息,订阅号会根据用户输入字符回复用户,我写了自动回复文字,图片和图文。

每一个自动回复都是一个网页,分别是

<extend name="Common:base" />
<block name="body">
<h2>回复文本</h2>
<form class="layui-form" action="" style="padding-right: 10px;" method="post">
    <div class="layui-form-item">
        <label class="layui-form-label">回复关键词</label>
        <div class="layui-input-block">
            <input type="text" name="keyword" required  lay-verify="required"   placeholder="请输入关键词" autocomplete="off" class="layui-input">
        </div>
    </div>
   
    <div class="layui-form-item">
        <label class="layui-form-label">回复内容</label>
        <div class="layui-input-block">
            <textarea name="content" required  lay-verify="required" placeholder="请输入内容" class="layui-textarea"></textarea>
        </div>
    </div>
    
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="SBT">提交</button>
            <a href="{:U('keywords',['type'=>'text'])}" class="layui-btn layui-btn-primary">返回</a>
        </div>
    </div>
</form>

<script>
  
layui.use('form', function(){
    var form = layui.form
    form.on('submit(SBT)', function(data){
        var load = layer.load();
        $.post("{:U('replytext')}",data.field,function (res) {
           
            layer.close(load);
            layer.msg(res.msg,{time:1000},function () {
                // window.location.href=res.url;
            });
          
        })
        return false;
    });

});

</script>
</block>
<extend name="Common:base" />
<block name="css">
 <style type="text/css">
    .meterial{
        position: relative;
        width: 120px;
        height: 120px;
        padding: 10px;
        float: left;
    }
    .meterial img{
        width: 100%;
        height: 100%;
    }
    .select{

        text-align: center;
        vertical-align: middle;
         opacity: 0.5;  
        color: #0f0;  
        background: rgba(0,0,0,0.8);
    
    }
  </style>
</block>

<block name="body">
<h2>回复图片</h2>
<form class="layui-form" action="" style="padding-right: 10px;" method="post">
    <div class="layui-form-item">
        <label class="layui-form-label">关键词</label>
        <div class="layui-input-block">
            <input type="text" name="keyword" required  lay-verify="required"   placeholder="请输入关键词" autocomplete="off" class="layui-input">
        </div>
    </div>
   <div class="layui-form-item">
        <label class="layui-form-label">回复图片</label>
        <div class="layui-input-block">
            <input type="hidden" id="media_id" name="media_id">
            <input type="hidden" id="url" name="url">
            <img src="" id="img_logo" width="100" height="100" />
            <button type="button" class="layui-btn" id="btn_upload">
              <i class="layui-icon"></i>选择本地图片
            </button>
           <!--  <button type="button" class="layui-btn" id="btn_select">
              <i class="layui-icon"></i>选择素材库中图片
            </button> -->
        </div>
   </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="SBT">提交</button>
            <a href="{:U('keywords',['type'=>'image'])}" class="layui-btn layui-btn-primary">返回</a>
        </div>
    </div>
</form>

<script>
   
layui.use('form', function(){
    var form = layui.form
    form.on('submit(SBT)', function(data){
        var load = layer.load();
        $.post("{:U('replyimage')}",data.field,function (res) {
            // if(res.status=='0'){
                layer.close(load);
                layer.msg(res.msg);
            // }
            // if(res.status=='1'){
            //     layer.close(load);
            //     layer.msg(res.msg,{time:1000},function () {
            //         window.location.href=res.url;
            //     });
            // }
        })
        return false;
    });

});

//图片上传
layui.use('upload', function(){
  var upload = layui.upload;
   
  //执行实例
  var uploadInst = upload.render({
    elem: '#btn_upload', //绑定元素
    accept: 'images', //允许上传的文件类型
    url: "{:U('upload')}", //上传接口
    done: function(res){
      //上传完毕回调
      if(res.code=='0'){
        var url ="__ROOT__" + res.url;
        console.log(url);
        $("#img_logo").attr("src",url);
        $("#url").val(res.url);
      }else{
         layer.msg(res.msg);
      }

    },
    error: function(){
      //请求异常回调
    }
  });
});


$("#btn_select").click(function(){
    layui.use('layer', function(){
      var layer = layui.layer;
      
      layer.open({
          type: 2,
          title: '永久素材',
          shadeClose: true,
          shade: 0.5,
          area: ['680px', '300px'],
          content: '{:U('common/selectImage')}',
          btn:['确定','取消'],
          yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            // console.log(body.html());
            var img = body.find('.select').siblings('img');
            $("#img_logo").attr('src',img.attr('src'));
            $("#media_id").val(img.attr('media-id'));
            $("#url").val(img.attr('url'));
            layer.close(index); 
          }

        });
    }); 
})
</script>
</block><extend name="Common:base" />
<block name="css">
 <style type="text/css">
    .meterial{
        position: relative;
        width: 120px;
        height: 120px;
        padding: 10px;
        float: left;
    }
    .meterial img{
        width: 100%;
        height: 100%;
    }
    .select{

        text-align: center;
        vertical-align: middle;
         opacity: 0.5;  
        color: #0f0;  
        background: rgba(0,0,0,0.8);
    
    }
  </style>
</block>

<block name="body">
<h2>回复图片</h2>
<form class="layui-form" action="" style="padding-right: 10px;" method="post">
    <div class="layui-form-item">
        <label class="layui-form-label">关键词</label>
        <div class="layui-input-block">
            <input type="text" name="keyword" required  lay-verify="required"   placeholder="请输入关键词" autocomplete="off" class="layui-input">
        </div>
    </div>
   <div class="layui-form-item">
        <label class="layui-form-label">回复图片</label>
        <div class="layui-input-block">
            <input type="hidden" id="media_id" name="media_id">
            <input type="hidden" id="url" name="url">
            <img src="" id="img_logo" width="100" height="100" />
            <button type="button" class="layui-btn" id="btn_upload">
              <i class="layui-icon"></i>选择本地图片
            </button>
           <!--  <button type="button" class="layui-btn" id="btn_select">
              <i class="layui-icon"></i>选择素材库中图片
            </button> -->
        </div>
   </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="SBT">提交</button>
            <a href="{:U('keywords',['type'=>'image'])}" class="layui-btn layui-btn-primary">返回</a>
        </div>
    </div>
</form>

<script>
   
layui.use('form', function(){
    var form = layui.form
    form.on('submit(SBT)', function(data){
        var load = layer.load();
        $.post("{:U('replyimage')}",data.field,function (res) {
            // if(res.status=='0'){
                layer.close(load);
                layer.msg(res.msg);
            // }
            // if(res.status=='1'){
            //     layer.close(load);
            //     layer.msg(res.msg,{time:1000},function () {
            //         window.location.href=res.url;
            //     });
            // }
        })
        return false;
    });

});

//图片上传
layui.use('upload', function(){
  var upload = layui.upload;
   
  //执行实例
  var uploadInst = upload.render({
    elem: '#btn_upload', //绑定元素
    accept: 'images', //允许上传的文件类型
    url: "{:U('upload')}", //上传接口
    done: function(res){
      //上传完毕回调
      if(res.code=='0'){
        var url ="__ROOT__" + res.url;
        console.log(url);
        $("#img_logo").attr("src",url);
        $("#url").val(res.url);
      }else{
         layer.msg(res.msg);
      }

    },
    error: function(){
      //请求异常回调
    }
  });
});


$("#btn_select").click(function(){
    layui.use('layer', function(){
      var layer = layui.layer;
      
      layer.open({
          type: 2,
          title: '永久素材',
          shadeClose: true,
          shade: 0.5,
          area: ['680px', '300px'],
          content: '{:U('common/selectImage')}',
          btn:['确定','取消'],
          yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            // console.log(body.html());
            var img = body.find('.select').siblings('img');
            $("#img_logo").attr('src',img.attr('src'));
            $("#media_id").val(img.attr('media-id'));
            $("#url").val(img.attr('url'));
            layer.close(index); 
          }

        });
    }); 
})
</script>
</block>

<extend name="Common:base" />
<block name="body">
<h2>回复图文</h2>
<form class="layui-form" action="" style="padding-right: 10px;" method="post">
    <div class="layui-form-item">
        <label class="layui-form-label">回复关键词</label>
        <div class="layui-input-block">
            <input type="text" name="keyword"    placeholder="请输入关键词" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">标题</label>
        <div class="layui-input-block">
            <input type="text" name="title" placeholder="请输入标题" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <label class="layui-form-label">封面图</label>
        <div class="layui-input-block">
            <input type="hidden" id="media_id" name="media_id">
            <input type="hidden" id="url" name="url">
            <img src="" id="img_logo" width="100" height="100" />
           <button type="button" class="layui-btn" id="btn_upload">
              <i class="layui-icon"></i>选择本地图片
            </button>
           <!--  <button type="button" class="layui-btn" id="btn_select">
              <i class="layui-icon"></i>选择素材库中图片
            </button> -->
        </div>
    </div>
    <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容</label>
        <div class="layui-input-block">
            <textarea name="content" placeholder="请输入图文内容" class="layui-textarea"></textarea>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label">原文地址</label>
        <div class="layui-input-block">
            <input type="text" name="content_source_url"  placeholder="请输入原文地址如:http://xxxx.com/……" autocomplete="off" class="layui-input">
        </div>
    </div>
    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit lay-filter="SBT">提交</button>
            <a href="{:U('keywords',['type'=>'news'])}" class="layui-btn layui-btn-primary">返回</a>
        </div>
    </div>
</form>

<script>
 
layui.use('form', function(){
    var form = layui.form
    form.on('submit(SBT)', function(data){
        var load = layer.load();
        $.post("{:U('replynews')}",data.field,function (res) {
            // if(res.status=='0'){
                layer.close(load);
                layer.msg(res.msg);
            // }
            // if(res.status=='1'){
            //     layer.close(load);
            //     layer.msg(res.msg,{time:1000},function () {
            //         window.location.href=res.url;
            //     });
            // }
        })
        return false;
    });

});

//图片上传
layui.use('upload', function(){
  var upload = layui.upload;
   
  //执行实例
  var uploadInst = upload.render({
    elem: '#btn_upload', //绑定元素
    accept: 'images', //允许上传的文件类型
    url: "{:U('upload')}", //上传接口
    done: function(res){
      //上传完毕回调
      if(res.code=='0'){
        var url ="__ROOT__" + res.url;
        console.log(url);
        $("#img_logo").attr("src",url);
        $("#url").val(res.url);
      }else{
         layer.msg(res.msg);
      }

    },
    error: function(){
      //请求异常回调
    }
  });
});

$("#btn_select").click(function(){
    layui.use('layer', function(){
      var layer = layui.layer;
      
      layer.open({
          type: 2,
          title: '永久素材',
          shadeClose: true,
          shade: 0.5,
          area: ['680px', '300px'],
          content: '{:U('common/selectImage')}',
          btn:['确定','取消'],
          yes: function(index, layero){
            var body = layer.getChildFrame('body', index);
            // console.log(body.html());
            var img = body.find('.select').siblings('img');
            $("#img_logo").attr('src',img.attr('src'));
            $("#media_id").val(img.attr('media-id'));
            $("#url").val(img.attr('url'));
            layer.close(index); 
          }

        });
    }); 
})

</script>
</block>

而且注意的是上面的3个网页对应的是3个数据表,注意的是回复图片,是用media_id来返回图片,而回复图文是要的返回的url

<?php
namespace Home\Controller;



use Think\Controller;
use LaneWeChat\Core\Curl;



class AutoreplyController extends Controller {
	private $mp;
	public function _initialize(){
		$mp=getCurrentMp();
		if(empty($mp)){
			$this->error('无使用公众号',U('index'));
		}else{
			$this->mp=$mp;
		}
	}
	public function replytext(){
		if(IS_GET){
			$this->display();
		}else{
			$content=I('post.content');
			$keyword=I('post.keyword');
			$model=M('mp_reply_text');
			$data['content'] = $content;
			$reply_id=$model->add($data);
			if(isset($reply_id)){
				$mp=$this->mp;
				$data['mp_id']=$mp['id'];
				$data['type']='text';
				$data['keyword']=$keyword;
				$data['reply_id']=$reply_id;
				M('mp_rule')->add($data);
				$this->ajaxReturn(array('msg'=>'添加成功'));
			}else{
				$this->ajaxReturn(array('msg'=>'添加失败'));
			}


		}

	}
	public function replyimage(){
		if(IS_GET){
			$this->display();
		}else{
		$url=I('post.url');//图片在本地服务器上的路径
		//相对路径转换成绝对路径
		$file=realpath('.'.$url);
		// echo $file;
		// exit;	
		$access_token=getAccess_token();
		include APP_PATH.'LaneWeChat/lanewechat.php';		
			//永久素材
		$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image";		
		$data['media']=Curl::addFile($file);		
		$ret=Curl::callWebServer($url,$data,'post',true,false);
		if(isset($ret['media_id'])){
			$mp=getCurrentMp();
			$data['url']=$ret['url'];
			$data['media_id']=$ret['media_id'];
			$reply_id=M('mp_reply_image')->add($data);
			$keyword=I('post.keyword');
			if(isset($reply_id)){				
				$data['mp_id']=$mp['id'];
				$data['type']='image';
				$data['keyword']=$keyword;
				$data['reply_id']=$reply_id;
				if($mp['is_use']==1){
					$data['status']=1;
				}else{
					$data['status']=0;
				}
				M('mp_rule')->add($data);
				$this->ajaxReturn(array('msg'=>'添加成功'));
			}else{
				$this->ajaxReturn(array('msg'=>'添加失败'));
			}
		}else{
			$this->ajaxReturn(array('msg'=>'添加失败'));
		}
		// $this->ajaxReturn($ret);
		}
	}
	public function replynews(){
		if(IS_GET){
			$this->display();
		}else{
		$keyword=I('post.keyword');
		$title=I('post.title');
		$description=I('post.content');
		$link=I('post.content_source_url');
		$url=I('post.url');//图片在本地服务器上的路径
		//相对路径转换成绝对路径
		$file=realpath('.'.$url);
		// echo $file;
		// exit;	
		$access_token=getAccess_token();
		include APP_PATH.'LaneWeChat/lanewechat.php';		
			//永久素材
		$url="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image";		
		$data['media']=Curl::addFile($file);		
		$ret=Curl::callWebServer($url,$data,'post',true,false);
		if(isset($ret['media_id'])){
			$mp=getCurrentMp();
			$data['title']=$title;
			$data['description']=$description;
			$data['picurl']=$ret['url'];
			$data['url']=$link;
			$reply_id=M('mp_reply_news')->add($data);
			if(isset($reply_id)){				
				$data['mp_id']=$mp['id'];
				$data['type']='news';
				$data['keyword']=$keyword;
				$data['reply_id']=$reply_id;
				if($mp['is_use']==1){
					$data['status']=1;
				}else{
					$data['status']=0;
				}
				M('mp_rule')->add($data);
				$this->ajaxReturn(array('msg'=>'添加成功'));
			}else{
				$this->ajaxReturn(array('msg'=>'添加失败'));
			}
		}else{
			$this->ajaxReturn(array('msg'=>'添加失败'));
		}
		
		}
		
	}
	 public function upload(){



		$upload = new \Think\Upload();// 实例化上传类



		$upload->maxSize = 3145728 ;// 设置附件上传大小



		$upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型



		$upload->rootPath = './Uploads/'; // 设置附件上传根目录



		$upload->savePath = ''; // 设置附件上传(子)目录



		// 上传文件



		$info = $upload->uploadOne($_FILES['file']);



		if(!$info) {// 上传错误提示错误信息



			// $this->error($upload->getError());



			$this->ajaxReturn(array('code'=>1,'msg'=>$upload->getError()));



		}else{// 上传成功



			// $this->success('上传成功!');



			$file = '/Uploads/' . $info['savepath'] . $info['savename'];



			$this->ajaxReturn(array('code'=>0,'msg'=>'上传成功','url'=>$file));



		}



	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值