當(dāng)用戶向公眾號(hào)發(fā)送文本消息時(shí),公眾號(hào)自動(dòng)回復(fù)消息,麻煩幫忙看看下面代碼如何改進(jìn),才能讓用戶收到公眾號(hào)回復(fù)的消息?
<?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 {
// 處理微信服務(wù)器推送的事件
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());
}
}
我這個(gè)是easywechat 5.x的 你可以參考一下,沒有使用6.x但是我想應(yīng)該方法變化不大
$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();