has('appid') ? $request->input('appid') : '';
// if(empty($appid)) {
// return response()->error("PARAM_EMPTY");
// }
$event = $request->has('event') ? $request->input('event') : '';
$uid = $request->has('uid') ? $request->input('uid') : '';
$openid = $request->has('openid') ? $request->input('openid') : '';
\Log::info('-------------------------');
\Log::info($openid);
if(empty($event)) {
return response()->error("PARAM_EMPTY");
}
$content = $request->has('content') ? $request->input('content') : '';
$officialAccount = OfficialAccount::officialAccountByAppid($appid);
$distribution_channel_id = '';
if (!empty($officialAccount)) {
$distribution_channel_id = $officialAccount['distribution_channel_id'];
}else{
$distribution_channel_id = '';
}
if($event == "text"){
if(empty($content)) {
return response()->error("PARAM_EMPTY");
}
}
$encode_distribution_channel_id = encodeDistributionChannelId($distribution_channel_id);
// 判断渠道是否是外站派单(需要我们帮生成强关用户)
$channel = Channel::getById($distribution_channel_id);
$is_outer_site = isset($channel->is_outer_site)?$channel->is_outer_site:'0';
$is_domain_simple = isset($channel->is_domain_simple)?$channel->is_domain_simple:'0';
if($is_domain_simple == '1'){
$encode_distribution_channel_id = $distribution_channel_id;
}
$is_yq_move = '0';
// 新站
if(isset($channel->is_yq_move) && $channel->is_yq_move){
\Log::info('new_has_move_site:'.$distribution_channel_id);
$is_yq_move = 1;
}
// 已经迁移过的站,回复也要有老站
$yqMoveChannel = YqMoveChannel::get_yq_move_channel($distribution_channel_id,1);
if(!empty($yqMoveChannel)){
\Log::info('old_has_move_site:'.$distribution_channel_id);
$is_yq_move = 1;
}
$params['openid'] = $openid;
$forceSubscribeUser = ForceSubscribeService::forceSubscribeUsersByOpenid($params);
$uid = isset($forceSubscribeUser->uid)?$forceSubscribeUser->uid:'0';
\Log::info('distribution_channel_id:'.$distribution_channel_id.' is_outer_site:'.$is_outer_site.' is_yq_move:'.$is_yq_move.' uid:'.$uid);
if ($event == "text") {
// 搜索写入
if($content != 'search_get_recommend_book'){
if(strlen($content) <= 100){
BookSearchStatService::create($uid,$openid,'wechat',$content);
}
}
// 单独推送一本智能推荐的书
if($content == 'search_get_recommend_book'){
\Log::info('get_recommend_book:'.$openid);
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
// 有自定义不回复内容的渠道
$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'recommend_book_noreply');
if(!empty($distribution_self_define_config)){
\Log::info('distribution_self_define_config_no_recommend_book: distribution_channel_id:'.$distribution_channel_id);
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
$bid = isset($forceSubscribeUser->bid)?$forceSubscribeUser->bid:'0';
$params['openid'] = $openid;
$recommend_book = BookConfigService::getSimpleChannelBookLoop($bid,1,$uid);
$feedback['text'] = '';
if(!empty($recommend_book)){
$bookUrl = env('PROTOCOL').'://site'.encodeDistributionChannelId($distribution_channel_id).'.'.env('WECHAT_CUSTOM_HOST').'.com';
$bookUrl = $bookUrl.$recommend_book[0]->url.'&fromtype='.$content.'&source=wechatmsg&fromsource=smart_push';
$feedback['text'] = '新书推荐: 《' . $recommend_book[0]->book_name . '》';
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'get_one_recommend_book');
}
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
if($content == '签到'){
//调洋哥的接口发送签到客服消息
\Log::info('text_sign:'.$openid);
$feedback['text'] = UserSignService::userSignReturnContent3($openid,$distribution_channel_id);
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'text_sign');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
$booksInfo = array();
// 判断是否自定义关键字
$special_keyword = WechatKeywordMsgs::wechatKeywordByDistributionChannelIdAndKeyword($distribution_channel_id,$content,1);
if(!empty($special_keyword)){
\Log::info('officialInteractiveEventFeedback_has_special_keyword:'.$distribution_channel_id.' content:'.$content);
\Log::info($special_keyword);
$bid = Hashids::decode($special_keyword['bid'])[0];
\Log::info('bid:'.$bid);
$book_conf = BookConfig::getBookById($bid);
\Log::info('$book_conf');\Log::info($book_conf);
if(!empty($book_conf)){
$special_keyword_new = array();
$special_keyword_new['book_name'] = isset($special_keyword['send_title']) && !empty($special_keyword['send_title'])?$special_keyword['send_title']:$book_conf['book_name'];
$special_keyword_new['cover'] = isset($special_keyword['send_cover']) && !empty($special_keyword['send_cover'])?$special_keyword['send_cover']:$book_conf['cover'];
\Log::info('keyword_book_name:'.$special_keyword_new['book_name'].' cover:'.$special_keyword_new['cover']);
$special_keyword_new['intro'] = $book_conf['intro'];
// 此处为自定义的章节链接https://site163.leyuee.com/reader?bid=N948JQDWpb7mx0K6zaKV5j2zOeZABdaL&cid=382260&fromtype=custom_3070&soid=30771
// 有派单id的关键字不做统计
if(isset($special_keyword['send_order_id']) && $special_keyword['send_order_id'] > 0){
$special_keyword_new['book_url'] = '/yun/'.$special_keyword['send_order_id'];
}else{
$special_keyword_new['book_url'] = '/reader?bid='.$special_keyword['bid'].'&cid='.$special_keyword['cid'].'&fromtype=keyword_'.$special_keyword['id'];
}
$special_keyword_new['bid'] = $special_keyword['bid'];
$booksInfo[] = $special_keyword_new;
}else{
\Log::info('book_conf_null:'.$distribution_channel_id.' content:'.$content);
}
}else{
$booksInfo = BookConfig::getBooksByKey($content,3);
}
\Log::info('event_booksInfo');
\Log::info($booksInfo);
if(count($booksInfo) == 0){
$feedback['text'] = '未找到相关小说,'."\n".'您可以试试:'."\n"."\n".'查看阅读记录 >> '."\n"."\n".'去书城首页看看 >> '."\n"."\n".'联系客服:'."\n".'点击菜单栏 “用户中心“ > ”联系客服”';
// $feedback['text'] = "未找到您想要的书\n点我进入书城\n\n";
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'text_search');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}else{
$data=[];
for ($i=0; $i < count($booksInfo); $i++) {
$bid = $booksInfo[$i]['bid'];
\Log::info('wechat_log_info:book');\Log::info($booksInfo[$i]);
$base_url = env('PROTOCOL').'://site'.$encode_distribution_channel_id.'.'.env('WECHAT_CUSTOM_HOST').'.com'.$booksInfo[$i]['book_url'];
$instro_len = strlen($booksInfo[$i]['intro']);
\Log::info('wechat_log_info:len:'.$instro_len.' getURL-----'.$base_url);
if( $instro_len > 100){
$booksInfo[$i]['intro'] = mb_substr($booksInfo[$i]['intro'], 0, 100, 'utf-8');
$booksInfo[$i]['intro'] .= '......';
\Log::info('search_instro_too_long:'.$booksInfo[$i]['intro']);
}
$data[$i]=['url'=>$base_url,
'title'=>$booksInfo[$i]['book_name'],
'description'=>$booksInfo[$i]['intro'],
'image'=>$booksInfo[$i]['cover']];
// 返回一条
break;
}
$datatext['text'] = $data;
$datatext['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $datatext['text'],'text_search');
return response()->success($datatext);
// return response()->collection(new OfficialInteractiveEventTextTransformer(),$data);
}
}
elseif($event == "scan"){
// 有自定义不回复内容的渠道
$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'force_subscribe_noreply');
if(!empty($distribution_self_define_config)){
\Log::info('distribution_self_define_config: distribution_channel_id:'.$distribution_channel_id);
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
$feedback['text'] = "点此继续阅读 ";
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'scan');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
elseif($event == "click"){
if($content == "contact_customer" && !empty($appid)){
if (config('common.click_type')) {
# code...
\Log::info('wechat_log_info:getURL-----进入方法');
$mediaCustomer = MediaCustomer::mediaCustomerByAppid($appid);
if (count($mediaCustomer)>0) {
# code...
// $send_event_contents = array();
for ($i=0; $i < count($mediaCustomer); $i++) {
# code...
$send_event_content = array();
$send_event_content['image'] = array('media_id'=>$mediaCustomer[$i]['media_id']);
// $send_event_content['text'] = 'test_zhoulj';
return response()->success($send_event_content);
// $send_event_contents[$i] = $send_event_content;
}
}else{
$timestamp = (time());
$gzh_app_id = $appid;
$group_nick = env('GROUP_NICK');
$officialAccountPrams['appid'] = $appid;
$officialAccount = (object)OfficialAccountService::officialAccountByAppid($officialAccountPrams);
\Log::info('++++++++++++=====GET CUSTOM IMG [1] =====+++++++++++++');
if (!empty($officialAccount)) {
$distributionChannelSetting = CustomMsgService::customerImgUrlByChannelId($officialAccount->distribution_channel_id);
\Log::info('++++++++++++=====GET CUSTOM IMG [2] =====+++++++++++++');
if (!empty($distributionChannelSetting)) {
# code...
$params = array("gzh_app_id"=>$appid,"group_nick"=>$group_nick,"is_default"=>0,"img_url"=>$distributionChannelSetting['customer_img_url'],"timestamp"=>$timestamp);
$sign = get_sign($params);
$mediaCustomerJson ='';
try {
$mediaCustomerJson = $this->getUserClient()->request("GET","upload_gzh_img/",
['query'=>['gzh_app_id'=>$appid,'group_nick'=>env('GROUP_NICK'),"is_default"=>0,"img_url"=>$distributionChannelSetting['customer_img_url'],'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 3]
)->getBody()->getContents();
} catch (\Exception $e) {
\Log::info('++++++++++++=====GET CUSTOM IMG [0] =====+++++++++++++');
}
$mediaCustomerArray = json_decode($mediaCustomerJson,true);
\Log::info('++++++++++++=====GET CUSTOM IMG [3] =====+++++++++++++');
\Log::info($mediaCustomerArray);
// \Log($mediaCustomerArray);
// dd($mediaCustomerArray);
if ($mediaCustomerArray['code'] == 1) {
# code...
$mediaCustomerData = $mediaCustomerArray['data'];
if (empty($mediaCustomerDat)) {
# code...
$mediaCustomerCreate['media_id'] = $mediaCustomerData['media_id'];
$mediaCustomerCreate['url'] = $mediaCustomerData['url'];
$mediaCustomerCreate['appid'] = $appid;
$mediaCustomerCreate['distribution_channel_id'] = $officialAccount->distribution_channel_id;
MediaCustomer::create($mediaCustomerCreate);
$send_event_content = array();
$send_event_content['image'] = array('media_id'=>$mediaCustomerData['media_id']);
// $send_event_content['text'] = 'test_zhoulj';
return response()->success($send_event_content);
}
}else{
$feedback['text'] = "客服QQ:3389644904\n客服电话:0571-56680019\n在线时间:工作日9:00-21:00\n";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
}else{
$params = array("gzh_app_id"=>$appid,"group_nick"=>$group_nick,"timestamp"=>$timestamp);
$sign = get_sign($params);
\Log::info('wechat_log_info:getURL-----'.env('MEDIA_API_BASE_URI'));
\Log::info('wechat_log_info:getURL-----'.$gzh_app_id.'___'.$timestamp.'___'.$sign);
$mediaCustomerJson ='';
try {
$mediaCustomerJson = $this->getUserClient()->request("GET","upload_gzh_img/",
['query'=>['gzh_app_id'=>$appid,'group_nick'=>env('GROUP_NICK'),'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 3]
)->getBody()->getContents();
} catch (\Exception $e) {
\Log::info('wechat_log_info:Exception-----'.$e->getMessage());
}
\Log::info('wechat_log_info:getURL-----'.env('MEDIA_API_BASE_URI'));
$mediaCustomerArray = json_decode($mediaCustomerJson,true);
// \Log($mediaCustomerArray);
// dd($mediaCustomerArray);
if ($mediaCustomerArray['code'] == 1) {
# code...
$mediaCustomerData = $mediaCustomerArray['data'];
if (empty($mediaCustomerDat)) {
# code...
$mediaCustomerCreate['media_id'] = $mediaCustomerData['media_id'];
$mediaCustomerCreate['url'] = $mediaCustomerData['url'];
$mediaCustomerCreate['appid'] = $appid;
$mediaCustomerCreate['distribution_channel_id'] = $officialAccount->distribution_channel_id;
MediaCustomer::create($mediaCustomerCreate);
$send_event_content = array();
$send_event_content['image'] = array('media_id'=>$mediaCustomerData['media_id']);
// $send_event_content['text'] = 'test_zhoulj';
return response()->success($send_event_content);
}
}else{
$feedback['text'] = "客服QQ:3389644904\n客服电话:0571-56680019\n在线时间:工作日9:00-21:00\n";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
}
}
}
}else{
$feedback['text'] = "客服QQ:3389644904\n在线时间:工作日9:00-21:00\n";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
}elseif ($content == "daily_sign" && !empty($openid)) {
//调洋哥的接口发送签到客服消息
\Log::info('========================进入洋哥签到回调');
$feedback['text'] = UserSignService::userSignReturnContent3($openid,$distribution_channel_id);
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'daily_sign');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}elseif ($content == "recent_read" && !empty($openid)) {
if($is_yq_move){
$feedback['text'] = ForceSubscribeService::getYqMoveReply($distribution_channel_id,$openid);
}
else
{
$feedback['text'] = "点击查看最近阅读 \n\n ";
// 添加优质书库
$sex = ForceSubscribeService::getSexByOpenid($distribution_channel_id,$openid);
$sex_type = $sex_content = '';
if($sex == 1){
$sex_type = 'boy';
$sex_content = '☞ 都市、玄幻、历史、军事、网游、灵异、科幻等海量书库任你看';
}else{
$sex_type = 'girl';
$sex_content = '☞ 豪门、总裁、虐恋、婚宠、女尊、宫斗、经商、灵异等海量书库任你看';
}
$feedback['text'] .= "".$sex_content."";
}
// 追加热门书籍
$feedback['text'] .= BookConfigService::getHotRandomRecommendBookText($distribution_channel_id,$uid, 2);
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'recent_read');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
// $feedback['text'] = "客服QQ:3389644904\n客服电话:0571-56680019\n在线时间:工作日9:00-21:00\n";
// return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
elseif($event == "unsubscribe"){
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
elseif($event == "subscribe"){
// 有自定义不回复内容的渠道
$distribution_self_define_config = DistributionSelfDefineConfig::getDistributionSelfDefineConfig($distribution_channel_id,'force_subscribe_noreply');
if(!empty($distribution_self_define_config)){
\Log::info('distribution_self_define_config: distribution_channel_id:'.$distribution_channel_id);
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
/**
* 第 三 版
*/
\Log::info('000000000000');
if (!empty($openid)) {
# code...
\Log::info('subscribe:'.$openid.' distribution_channel_id:'.$distribution_channel_id);
$params['openid'] = $openid;
$forceSubscribeUser = ForceSubscribeService::forceSubscribeUsersByOpenid($params);
\Log::info($forceSubscribeUser);
// 有自定义回复内容的渠道
// $distribution_self_define_content = DistributionSelfDefineContent::getDistributionSelfDefineContent($distribution_channel_id);
// 从redis取
$distribution_self_define_content = MsgService::getCurrentReply($distribution_channel_id);
\Log::info('distribution_self_define_content:'.json_encode($distribution_self_define_content));
// \Log::info($distribution_self_define_content);
if(is_null($distribution_self_define_content)){
// 获取特殊渠道的关注回复追加热门书籍推荐
$distribution_replay = DistributionReply::getDistributionReply($distribution_channel_id);
\Log::info('distribution_replay:'.json_encode($distribution_replay));
$recommend_content = '';
if(!is_null($distribution_replay)){
$special_bids = explode(',', $distribution_replay->reply_bids);
$recomm_books = BookConfigService::getBidRecommendBooks($special_bids);
if (!is_null($recomm_books)) {
$recommend_content = "\n\n" . '热门书籍推荐';
foreach ($recomm_books as $book) {
$url = env('PROTOCOL') . '://site' . $encode_distribution_channel_id . '.' . env('WECHAT_CUSTOM_HOST') . '.com/reader?bid=' . Hashids::encode($book->bid) . '&cid=' . $book->first_cid;
$recommend_content .= "\n\n" . ' >>' . $book->book_name . '';
}
}
}
if (!empty($forceSubscribeUser)) {
# code...
\Log::info('exist_force_user:'.$openid);
//通过uid获取该用户最近阅读记录的书籍
$uid = isset($forceSubscribeUser->uid)?$forceSubscribeUser->uid:'';
$userBook = ReadRecordService::getFirstReadRecord($uid);
$bookName = isset($userBook['book_name'])?$userBook['book_name']:'最近阅读';
\Log::info('bookName:'.$bookName);
if(!empty($recommend_content)){
$feedback['text'] = '亲,终于等到你了!'."\n"."\n".'点我继续阅读 '."\n"."\n".'阅读记录:'."\n"."\n".'>'.$bookName.'';
$feedback['text'] .= $recommend_content;
$feedback['text'] .= "\n"."\n".'为方便下次阅读,请'.''.'置顶公众号'.'';
}else{
$feedback['text'] = '亲,终于等到你了!'."\n"."\n".'点我继续阅读 '."\n"."\n".'阅读记录:'."\n"."\n".'>'.$bookName.''."\n"."\n".'为方便下次阅读,请'.''.'置顶公众号'.''."\n\n".'今日签到成功,赠送30书币,连续签到2日后,赠送书币增加至50哦~,进入个人中心 查看!'."\n\n".'明日继续签到得书币哦!';
}
}else{
$feedback['text'] = "点击继续阅读 ";
$feedback['text'] .= $recommend_content;
}
// 外站关注的直接回复图文qrscene_outer:123_12
if(strpos($content,'outer') > -1){
$scene_content = str_replace('qrscene_outer:','',$content);
$bid_cid = explode('_', $scene_content);
$bid = isset($bid_cid[0])?$bid_cid[0]:'';
$cid = isset($bid_cid[1])?$bid_cid[1]:'';
if(!empty($bid) && !empty($cid)){
$book_conf = BookConfig::getBookById($bid);
\Log::info('out_book_conf');\Log::info($book_conf);
if(!empty($book_conf)){
$data = array();
$encode_bid = Hashids::encode($bid);
$data[]=['url'=>env('PROTOCOL').'://site'.$encode_distribution_channel_id.'.'.env('WECHAT_CUSTOM_HOST').'.com'.'/reader?bid='.$encode_bid.'&cid='.$cid.'&fromtype=outer_'.$scene_content,
'title'=>$book_conf['book_name'],
'description'=>$book_conf['intro'],
'image'=>$book_conf['cover']
];
\Log::info('outer:'.json_encode($data));
$feedback['text'] = $data;
}
}
}
}else{
// 判断是否图文
if(isset($distribution_self_define_content->is_pic) && $distribution_self_define_content->is_pic){
$feedback['text'] = ImageNewsToArray($distribution_self_define_content->content);
}else{
$feedback['text'] = isset($distribution_self_define_content->content)?$distribution_self_define_content->content:'';
}
}
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'subscribe');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}else{
$feedback['text'] = "点击继续阅读 ";
$feedback['text'] = ChannelService::convertChannelReplyUrl($is_outer_site,$appid, $openid, $feedback['text'],'subscribe');
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}
}elseif($event == "TEMPLATESENDJOBFINISH"){
$feedback['text'] = "";
return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
}else{
// $feedback['text'] = "事件未配置";
// return response()->item(new OfficialInteractiveEventTransformer(), (object)$feedback);
return response()->error('EVENT_NOT_FOUND');
}
}
public function getUserClient(){
// return new Client(['base_uri' => 'http://118.31.133.29/api/']);
return new Client(['base_uri' => env('MEDIA_API_BASE_URI')]);
}
}