test(addon/aikefu): 还原原先的kefu.app 方便测试
This commit is contained in:
@@ -131,6 +131,81 @@ class Kefu extends BaseApi
|
|||||||
], 500);
|
], 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
|
* @return \think\response\Json
|
||||||
|
|||||||
Reference in New Issue
Block a user