fix(addon/aikefu): 使用curl来发送请求

This commit is contained in:
2025-12-06 14:55:10 +08:00
parent 6d3887ec06
commit 6cfff15c62

View File

@@ -6,10 +6,61 @@ use addon\aikefu\model\Config as KefuConfigModel;
use addon\aikefu\model\Conversation as KefuConversationModel;
use addon\aikefu\model\Message as KefuMessageModel;
use app\api\controller\BaseApi;
use extend\api\HttpClient;
class Kefu extends BaseApi
{
/**
* 封装curl请求方法
* @param string $url 请求URL
* @param string $method 请求方法
* @param array $data 请求数据
* @param array $headers 请求头
* @return string 响应内容
*/
private function curlRequest($url, $method = 'GET', $data = [], $headers = [])
{
$ch = curl_init();
// 设置URL
curl_setopt($ch, CURLOPT_URL, $url);
// 设置请求方法
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
// 设置POST数据
if ($method === 'POST' && !empty($data)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, is_array($data) ? json_encode($data) : $data);
}
// 设置请求头
if (!empty($headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
// 设置返回值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// 执行请求
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 关闭连接
curl_close($ch);
if ($response === false) {
throw new \Exception('Curl请求失败');
}
if ($httpCode >= 400) {
throw new \Exception('HTTP请求失败状态码' . $httpCode);
}
return $response;
}
/**
* 为事件调用初始化属性
* @param array $data 事件数据
@@ -62,7 +113,7 @@ class Kefu extends BaseApi
return $this->response($this->error('智能客服暂未启用'));
}
$config = $config_info['data']['value'];
$config = $config_info;
$apiKey = $config['api_key'];
$baseUrl = $config['base_url'];
$chatEndpoint = $config['chat_endpoint'];
@@ -88,7 +139,7 @@ class Kefu extends BaseApi
// 发送请求到Dify API
$url = $baseUrl . $chatEndpoint;
$response = HttpClient::http($url, 'POST', json_encode($requestData), $headers);
$response = $this->curlRequest($url, 'POST', $requestData, $headers);
// 解析响应
$result = json_decode($response, true);
@@ -213,7 +264,7 @@ class Kefu extends BaseApi
return $this->response($this->error('智能客服暂未启用'));
}
$config = $config_info['data']['value'];
$config = $config_info;
$apiKey = $config['api_key'];
$baseUrl = $config['base_url'];
@@ -231,7 +282,7 @@ class Kefu extends BaseApi
// 发送请求到Dify API
$url = $baseUrl . '/conversations';
$response = HttpClient::http($url, 'POST', json_encode($requestData), $headers);
$response = $this->curlRequest($url, 'POST', $requestData, $headers);
// 解析响应
$result = json_decode($response, true);