easywechat6.7+webman如何响应事件消息?

建站管家

问题描述

当用户向公众号发送文本消息时,公众号自动回复消息,麻烦帮忙看看下面代码如何改进,才能让用户收到公众号回复的消息?

<?php
namespace app\controller;
use support\Request;
use EasyWeChat\OfficialAccount\Application;
use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;

class Wechat {
    // 处理微信服务器推送的事件
    public function serve(Request $request){
        $config = config('socialite.wechat');
        $app = new Application($config);
        $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
        $symfony_request->headers = new HeaderBag($request->header());
        $app->setRequestFromSymfonyRequest($symfony_request);
        $server = $app->getServer();

        $server->addEventListener('text', function($message, \Closure $next) {
            return '文本消息';
        });

        $response = $server->serve();
        return response($response->getBody()->getContents(), $response->getStatusCode(), $response->getHeaders());
    }
}
230 2 0
2个回答

Tinywan

这和webman有什么关系?

  • 暂无评论
小Z先生

我这个是easywechat 5.x的 你可以参考一下,没有使用6.x但是我想应该方法变化不大

        $app = new Application($config);
        $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
        $symfony_request->headers = new HeaderBag($request->header());
        //主要注意
        $app->rebind('request', $symfony_request);
        $app->server->push(function ($message) {
            // $message['FromUserName'] // 用户的 openid
            // $message['MsgType'] // 消息类型:event, text....
            switch ($message['MsgType']) {
                case 'event':
                    return '收到事件消息' . $message['FromUserName'];
                case 'text':
                    return '收到文字消息' . $message['FromUserName'];
//                case 'image':
//                    return '收到图片消息';
                default:
                    return "您好!欢迎使用 coleWechat";
            }
        });

        $response = $app->server->serve();
        //主要注意
        return $response->getContent();
  • 暂无评论
×
🔝