|
@@ -5,6 +5,13 @@ namespace app\api\controller;
|
|
|
use app\common\controller\Api;
|
|
|
use app\common\library\Easemob;
|
|
|
use app\common\library\Tenim;
|
|
|
+
|
|
|
+use TencentCloud\Common\Credential;
|
|
|
+use TencentCloud\Common\Profile\ClientProfile;
|
|
|
+use TencentCloud\Common\Profile\HttpProfile;
|
|
|
+use TencentCloud\Common\Exception\TencentCloudSDKException;
|
|
|
+use TencentCloud\Tiia\V20190529\TiiaClient;
|
|
|
+use TencentCloud\Tiia\V20190529\Models\DetectProductRequest;
|
|
|
/**
|
|
|
* 示例接口
|
|
|
*/
|
|
@@ -96,4 +103,88 @@ class Demo extends Api
|
|
|
dump(get_last_time($a));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ //腾讯云拍照识别商品
|
|
|
+ //{"Response":{"Products":[{"Name":"按摩椅","Parents":"家用电器-个护健康","Confidence":99,"XMin":107,"YMin":59,"XMax":447,"YMax":366}],"RequestId":"187745fc-0497-441e-88f5-f3f17d854016"}}
|
|
|
+ public function search_by_image($image = 'https://jiankangyijia-1304634122.cos.ap-nanjing.myqcloud.com/uploads/20240504/5cbfbb7880323f05839d82afe1500569.png'){
|
|
|
+ $tencent_yun = config('tencent_yun');
|
|
|
+ $secret_id = $tencent_yun['secret_id'];
|
|
|
+ $secret_key = $tencent_yun['secret_key'];
|
|
|
+
|
|
|
+ $token = "";
|
|
|
+ $service = "tiia";
|
|
|
+ $host = "tiia.tencentcloudapi.com";
|
|
|
+ $req_region = "ap-beijing";
|
|
|
+ $version = "2019-05-29";
|
|
|
+ $action = "DetectProduct";
|
|
|
+ $payload = json_encode(['ImageUrl' => localpath_to_netpath($image)]);
|
|
|
+ $endpoint = "https://tiia.tencentcloudapi.com";
|
|
|
+ $algorithm = "TC3-HMAC-SHA256";
|
|
|
+ $timestamp = time();
|
|
|
+ $date = gmdate("Y-m-d", $timestamp);
|
|
|
+
|
|
|
+// ************* 步骤 1:拼接规范请求串 *************
|
|
|
+ $http_request_method = "POST";
|
|
|
+ $canonical_uri = "/";
|
|
|
+ $canonical_querystring = "";
|
|
|
+ $ct = "application/json; charset=utf-8";
|
|
|
+ $canonical_headers = "content-type:".$ct."\nhost:".$host."\nx-tc-action:".strtolower($action)."\n";
|
|
|
+ $signed_headers = "content-type;host;x-tc-action";
|
|
|
+ $hashed_request_payload = hash("sha256", $payload);
|
|
|
+ $canonical_request = "$http_request_method\n$canonical_uri\n$canonical_querystring\n$canonical_headers\n$signed_headers\n$hashed_request_payload";
|
|
|
+
|
|
|
+// ************* 步骤 2:拼接待签名字符串 *************
|
|
|
+ $credential_scope = "$date/$service/tc3_request";
|
|
|
+ $hashed_canonical_request = hash("sha256", $canonical_request);
|
|
|
+ $string_to_sign = "$algorithm\n$timestamp\n$credential_scope\n$hashed_canonical_request";
|
|
|
+
|
|
|
+// ************* 步骤 3:计算签名 *************
|
|
|
+ $secret_date = hash_hmac("sha256", $date, "TC3".$secret_key, true);
|
|
|
+ $secret_service = hash_hmac("sha256", $service, $secret_date, true);
|
|
|
+ $secret_signing = hash_hmac("sha256", "tc3_request", $secret_service, true);
|
|
|
+ $signature = hash_hmac("sha256", $string_to_sign, $secret_signing);
|
|
|
+
|
|
|
+// ************* 步骤 4:拼接 Authorization *************
|
|
|
+ $authorization = "$algorithm Credential=$secret_id/$credential_scope, SignedHeaders=$signed_headers, Signature=$signature";
|
|
|
+
|
|
|
+// ************* 步骤 5:构造并发起请求 *************
|
|
|
+ $headers = [
|
|
|
+ "Authorization" => $authorization,
|
|
|
+ "Content-Type" => "application/json; charset=utf-8",
|
|
|
+ "Host" => $host,
|
|
|
+ "X-TC-Action" => $action,
|
|
|
+ "X-TC-Timestamp" => $timestamp,
|
|
|
+ "X-TC-Version" => $version
|
|
|
+ ];
|
|
|
+ if ($req_region) {
|
|
|
+ $headers["X-TC-Region"] = $req_region;
|
|
|
+ }
|
|
|
+ if ($token) {
|
|
|
+ $headers["X-TC-Token"] = $token;
|
|
|
+ }
|
|
|
+ $headers = array_map(function ($k, $v) { return "$k: $v"; }, array_keys($headers), $headers);
|
|
|
+
|
|
|
+ try {
|
|
|
+ $timeOut = 3;
|
|
|
+ $ch = curl_init();
|
|
|
+ curl_setopt($ch, CURLOPT_URL, $endpoint);
|
|
|
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
|
|
|
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
|
+ curl_setopt($ch, CURLOPT_TIMEOUT, $timeOut);
|
|
|
+ curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
|
+ curl_setopt($ch, CURLOPT_POST, 1);
|
|
|
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
|
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
|
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
|
|
+ $response = curl_exec($ch);
|
|
|
+ curl_close($ch);
|
|
|
+
|
|
|
+ return $response;
|
|
|
+ } catch (Exception $err) {
|
|
|
+ echo $err->getMessage();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|