laravel+easywechat对接微信公众号自动回复图文消息

laravel+easywechat对接微信公众号自动回复图文消息

  • 图文回复消息创建
  • 对接数据库根据关键词返回图文信息

  • 前面我们对接配置了微信公众号,laravel5.4 对接微信公众号使用laravel-wechat拓展包,并实现的简单的消息回复功能
  • 但是这种回复功能过于简陋单一,不够灵活,我们很多时候是根据用户的关键字再以图文的方式展现给用户

图文回复消息创建

  • 根据easywechat官网的文档,我们找到了图文回复需要引用News类,根据文档的例子,创建单个图文消息
<?php

namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;
use EasyWeChat\Message;


class WechatController extends Controller
{
    public function serve()
    {
        $wechat = app('wechat');
        $wechat->server->setMessageHandler(function($message){

            $tt =new Message\News();
            $tt->title = "一个失败的网恋故事";
            $tt->url = 'http://s3sy.com/show/71';
            $tt->description = '就是2017年十一月份的某一天晚上,在距离那么远的他,和我在一起了,现在想来,都感到很不可思议的样子。';
            $tt->image ='http://image.s3sy.com/iigMws8sJTHKm6hu5oFJcVOVwYPYPIKB18mR6cZd.jpeg';


            return $tt;
        });
        return $wechat->server->serve();
    }
}
  • 我们在微信公众号进行测试,返回了我们组装的图文信息:
    laravel+easywechat对接微信公众号自动回复图文消息_第1张图片

对接数据库根据关键词返回图文信息

  1. 区分关注和消息事件,选择回复
  2. 根据关键词查询数据库,组装图文信息返回
<?php

namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;
use EasyWeChat\Message;


class WechatController extends Controller
{
    public function serve()
    {
        $wechat = app('wechat');
        $wechat->server->setMessageHandler(function($message){
            //关注
            if ($message['MsgType']=='event'){
                if ($message['Event']=='subscribe'){
                    return "感谢关注,请回复关键字,获取文章";
                }
            }
            if ($message['MsgType']=='text'){
                $article = Article::where('title','like','%'.$message['Content'].'%')->first();

                if ($article){
                    $tt =new Message\News();
                    $tt->title = $article->title;
                    $tt->url = 'http://s3sy.com/show/'.$article->id;
                    $tt->description = $article->description;
                    $tt->image =$article->image;
                    return $tt;
                }else{
                    $article = Article::inRandomOrder()->first();
                    $tt = new Message\News([
                        'title'=>$article->title,
                        'url'=>'http://s3sy.com/show/'.$article->id,
                        'description'=>$article->description,
                        'image'=>$article->image
                    ]);

                    return $tt;
                }

            }


        });
        return $wechat->server->serve();
    }
}
  • 根据用户输入的关键词返回了相应的图文信息,一个简单的自动回复功能就完成了

laravel+easywechat对接微信公众号自动回复图文消息_第2张图片

你可能感兴趣的:(laravel,微信)