微信二次开发之关键词自动回复

学习微信二次开发已经有一段时间了,现在我们学习了微信中的关键词自动回复,学习它的都知道不管回复图片、回复图文、音乐、还有视频。这些都属于媒体,上传到微信服务器后都会生成一个MediaID,相当于每个文件的"身份证"。今天就说下回复图文的,因为回复图片和文本结合起来就是图文。

我们需要准备两个数据表来进行对图文信息的存储,另外一个是对图文中的标题、内容、图片信息的存储。


有了数据表接下来就是把表单的信息存储到数据库中了。_initialize()方法确认哪个公众号在使用中。(特别注意下永久图片接口每天只能运行10次,大家慎用)。
public function _initialize()
	{    //_initialize()进行初始化,并对公众号的使用状态进行判断
		$mp = getCurrentMp();
		if (empty($mp)) {
			$this->error('无此公众号',U('mp/index'));
		}else{
			$this->mp=$mp;
		}
	}
public function news_addkey()
	{
		$mp = $this->mp;
		$mp_id = $mp['id'];//获取公众号的状态

		$url = I('post.url');
		$file = realpath('.' . $url);//将本地路径图片改为绝对路径

		$title = I('post.title');
		$content = I('post.content');
		$content_source_url = I('post.content_source_url');//获取表单信息

		$access_token = getAccess_token();
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		$api = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=$access_token&type=image";
		$data['media'] = "@" . $file;
		$ret = Curl::callWebServer($api,$data,'post',true,false);//运用LaneWeChat框架

		$news['picurl'] = $ret['url'];
		$news['title'] = $title;
		$news['description'] = $content;
		$news['url'] = $content_source_url;
        //将信息插入到数据库中并获取$reply_id
		$reply_id = M('mp_reply_news')->add($news);

		$key['reply_id'] = $reply_id;
		$key['keyword'] = I('post.keyword');
		$key['type'] = 'news';
		$key['mp_id'] = $mp_id;
        //将信息插入到数据库
		$ret = M('mp_rule')->add($key);
		if ($ret) {
			$this->ajaxReturn(array('msg'=>'添加成功'));
		}else{
			$this->ajaxReturn(array('msg'=>'shibai '));
		}
	}

信息成功添加到数据库中之后,就要考虑如何能在微信中能自动回复啦。这是运用的LaneWeChat框架。(注意下:$item[]输出的是数组)

public static function text(&$request){
        $mp_id = $_GET['id'];//获取正在使用的公众号
        $content = $request['content'];

        $where['mp_id'] = $mp_id;
        $where['keyword'] = $content;
        $data = M('mp_rule')->where($where)->find();//查询到那个公众号中的关键词
        if ($data) {
            $reply_id = $data['reply_id'];//进行数据表连接
            $type = $data['type'];//获取type判断回复类型
            //判断回复类型
            switch ($type) {
                case 'news':
                    $reply=M('mp_reply_news')->find($reply_id);
                    if($reply){
                        $item[] =  ResponsePassive::newsItem($reply['title'],$reply['description'],$reply['picurl'],$reply['url']);
                    //多图文
                     // $item[] =  ResponsePassive::newsItem($reply['title'],$reply['description'],$reply['picurl'],$reply['url']);
                     //  $item[] =  ResponsePassive::newsItem($reply['title'],$reply['description'],$reply['picurl'],$reply['url']);

                        return ResponsePassive::news($request['fromusername'],$request['tousername'],$item);
                    }else{
                        $reply_text='出错啦';
                        return ResponsePassive::text($request['fromusername'],$request['tousername'],$reply_text);
                    }
                break;
        .................
            }
        }else{
                return 'success';
            }
    }
这样基本就能成功了!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值