attributes = Yii::$app->services->addonsConfig->getConfig();
// 记录历史
if ($setting->history_status == StatusEnum::ENABLED) {
$msgHistory = new MessageHistory();
$data['message'] = $data['type'] == WechatEnum::TYPE_TEXT ? $message['Content'] : Json::encode($message);
$msgHistory->attributes = $data;
$msgHistory->save();
}
// 统计记录
if ($setting->history_utilization_status == StatusEnum::ENABLED) {
// 插入规则统计
!empty($data['rule_id']) && Yii::$app->wechatService->ruleStat->set($data['rule_id']);
// 插入关键字统计
if (!empty($data['keyword_id']) && !empty($data['rule_id'])) {
Yii::$app->wechatService->ruleKeywordStat->set($data['rule_id'], $data['keyword_id']);
}
}
return;
}
/**
* 解析微信发过来的消息内容
*
* @param $type
* @param $messgae
* @return mixed|string
*/
public function readMessage($type, $messgae)
{
switch ($type) {
case WechatEnum::TYPE_TEXT :
return Html::encode($messgae);
break;
case WechatEnum::TYPE_IMAGE :
$messgae = Json::decode($messgae);
return $messgae['PicUrl'];
break;
case WechatEnum::TYPE_VIDEO :
$messgae = Json::decode($messgae);
return "MediaId【" . $messgae['MediaId'] . "】";
break;
case WechatEnum::TYPE_LOCATION :
$messgae = Json::decode($messgae);
return '主动发送位置 : 经纬度【' . $messgae['Location_X'] . ',' . $messgae['Location_Y'] . "】
地址 : " . $messgae['Label'];
break;
case WechatEnum::EVENT_CILCK :
$messgae = Json::decode($messgae);
return '单击菜单触发 : ' . $messgae['EventKey'];
break;
case WechatEnum::EVENT_SUBSCRIBE :
return '关注公众号';
break;
case WechatEnum::TYPE_VOICE :
$messgae = Json::decode($messgae);
return isset($messgae['Recognition']) ? $messgae['Recognition'] : '语音消息';
break;
// 触发事件
case WechatEnum::TYPE_EVENT :
$messgae = Json::decode($messgae);
switch ($messgae['Event']) {
case WechatEnum::EVENT_UN_SUBSCRIBE :
return '取消关注公众号';
break;
case WechatEnum::EVENT_SUBSCRIBE :
return '关注公众号 : ' . str_replace('qrscene_', '', $messgae['EventKey'] ?? '');
break;
case WechatEnum::EVENT_LOCATION :
return '被动发送位置: 经纬度【' . $messgae['Latitude'] . ',' . $messgae['Longitude'] . "】精度:" . $messgae['Precision'];
break;
case WechatEnum::EVENT_VIEW :
return "单击菜单访问 : " . $messgae['EventKey'];
break;
case WechatEnum::EVENT_CILCK :
return "单击菜单触发关键字 : " . $messgae['EventKey'];
break;
case WechatEnum::EVENT_SCAN :
return "二维码扫描 : " . $messgae['EventKey'];
break;
case 'location_select' :
$sendLocationInfo = $messgae['SendLocationInfo'];
return "主动发送位置: " . '经纬度【' . $sendLocationInfo['Location_X'] . ',' . $sendLocationInfo['Location_Y'] . "】地址:" . $sendLocationInfo['Label'];
break;
case 'scancode_waitmsg' :
$scanCodeInfo = $messgae['ScanCodeInfo'];
return "调用二维码扫描等待返回地址: " . $scanCodeInfo['ScanResult'];
break;
case 'pic_sysphoto' :
return "调用拍照发图";
break;
case 'pic_photo_or_album' :
return "调用拍照相册";
break;
case 'scancode_push' :
$scanCodeInfo = $messgae['ScanCodeInfo'];
return "调用二维码直接扫描返回地址: " . $scanCodeInfo['ScanResult'];
break;
case 'MASSSENDJOBFINISH' :
return "点击图文MsgID为: " . $messgae['MsgID'];
break;
case 'view_miniprogram' :
return "浏览小程序";
break;
case 'annual_renew' :
return "微信认证事件推送";
break;
case 'wx_verify_dispatch' :
return "微信认证公司: " . $messgae['Provider'] . '
' . $messgae['Contact'];
break;
case 'wx_verify_pay_succ' :
return "微信认证支付订单: " . $messgae['OrderId'];
break;
default :
return Json::encode($messgae);
break;
}
break;
default :
return $messgae;
break;
}
}
}