From fba01f4909759436ebd5dcc0c23b8ddd3a08a6e7 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Sat, 6 Dec 2025 16:44:37 +0800 Subject: [PATCH] =?UTF-8?q?test(addon/aikefu):=20=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E5=8E=9F=E5=85=88=E7=9A=84kefu.app=20=E6=96=B9=E4=BE=BF?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/controller/Kefu.php | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/app/api/controller/Kefu.php b/src/app/api/controller/Kefu.php index f955222a8..52f46708d 100644 --- a/src/app/api/controller/Kefu.php +++ b/src/app/api/controller/Kefu.php @@ -131,6 +131,81 @@ class Kefu extends BaseApi ], 500); } } + /** + * 获得AI服务的配置信息发送给客户端 + * @return \think\response\Json + */ + public function info() + { + // (可选)获取站点ID和会员ID,可以通过事件数据传递 + $site_id = $this->params['uniacid'] ?? $this->site_id; + $member_id = $this->params['member_id'] ?? $this->member_id; + $token = $this->params['token'] ?? $this->token; + + try { + // 准备事件数据 + $event_data = [ + 'site_id' => $site_id, + 'member_id' => $member_id, + 'token' => $token, + 'client_info' => [ + 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '', + 'ip' => $this->getClientIp(), + 'timestamp' => time() + ] + ]; + + // 触发获取配置信息事件 + $result = Event::trigger('KefuGetInfo', $event_data); + + // 处理事件结果 + $response = [ + 'code' => 0, + 'message' => 'success', + 'data' => [] + ]; + + if (is_array($result) && !empty($result)) { + foreach ($result as $res) { + if (isset($res['code']) && $res['code'] < 0) { + $response = $res; + break; + } + if (isset($res['data'])) { + $response['data'] = array_merge($response['data'], $res['data']); + } + } + } + + return $this->response($response); + } catch (\Exception $e) { + return $this->response($this->error('请求失败:' . $e->getMessage())); + } + } + + /** + * 获取客户端IP地址 + */ + private function getClientIp() + { + $ip = ''; + + if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } elseif (isset($_SERVER['HTTP_X_REAL_IP']) && !empty($_SERVER['HTTP_X_REAL_IP'])) { + $ip = $_SERVER['HTTP_X_REAL_IP']; + } elseif (isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) { + $ip = $_SERVER['REMOTE_ADDR']; + } + + // 处理多个IP的情况(X-Forwarded-For可能包含多个IP) + if (strpos($ip, ',') !== false) { + $ips = explode(',', $ip); + $ip = trim($ips[0]); + } + + return $ip; + } /** * 智能客服聊天接口 * @return \think\response\Json