
hubspot的crm api在进行对象(如公司、联系人)搜索时,提供了一套灵活的过滤机制。核心概念包括filter(过滤器)和filtergroup(过滤器组)。
最初的问题在于,开发者尝试将Filter实例直接传递给PublicObjectSearchRequest的setFilterGroups()方法,而该方法期望的是一个FilterGroup实例数组。这导致API无法正确解析过滤条件,从而返回了所有公司记录。
要实现精确的公司搜索,关键在于将Filter封装到FilterGroup中,然后再将FilterGroup传递给PublicObjectSearchRequest。以下是正确的构建步骤和相应的PHP代码示例。
<?php
namespace App\Services;
use HubSpot\Client\Crm\Companies\Model\Filter;
use HubSpot\Client\Crm\Companies\Model\FilterGroup;
use HubSpot\Client\Crm\Companies\Model\PublicObjectSearchRequest;
use HubSpot\Client\ApiException;
use HubSpot\Client\Crm\Companies\Api\SearchApi; // 假设这是你的HubSpot客户端
class CompanyService
{
private $hubspot_client; // 假设已注入或初始化HubSpot客户端
public function __construct($hubspot_client)
{
$this->hubspot_client = $hubspot_client;
}
/**
* 通过公司域名搜索公司并返回其ID。
*
* @param string $company_domain 要搜索的公司域名,例如 'hubspot.com'
* @return string|null 公司ID或错误信息
*/
public function searchCompany(string $company_domain): ?string
{
// 1. 创建一个Filter实例,定义单个过滤条件
$filter = new Filter();
$filter->setPropertyName('domain'); // 设置要过滤的属性名,这里是 'domain'
$filter->setOperator('EQ'); // 设置操作符,'EQ' 表示等于
$filter->setValue($company_domain); // 设置属性值,即要搜索的域名
// 2. 创建一个FilterGroup实例,并将Filter添加到其中
// FilterGroup可以包含多个Filter,它们之间是逻辑AND关系
$filterGroup = new FilterGroup();
$filterGroup->setFilters([$filter]); // 将单个Filter封装到FilterGroup中
// 3. 创建PublicObjectSearchRequest实例,并将FilterGroup添加到其中
// setFilterGroups() 期望一个FilterGroup实例数组
$searchRequest = new PublicObjectSearchRequest();
$searchRequest->setFilterGroups([$filterGroup]); // 将FilterGroup数组传递给搜索请求
try {
// 4. 执行搜索请求
/** @var \HubSpot\Client\Crm\Companies\Model\CollectionResponseWithPublicObjectId $response */
$response = $this->hubspot_client->crm()->companies()->searchApi()->doSearch($searchRequest);
// 5. 处理响应结果
if (!empty($response['results']) && isset($response['results'][0]['id'])) {
return $response['results'][0]['id']; // 返回第一个匹配公司的ID
} else {
return null; // 未找到匹配公司
}
} catch (ApiException $e) {
// 6. 异常处理
error_log("Exception when calling search_api->do_search: " . $e->getMessage());
return "Exception when calling search_api->do_search: " . $e->getMessage();
}
}
}Filter的创建与配置:
FilterGroup的创建与封装:
PublicObjectSearchRequest的构建:
执行搜索与结果处理:
异常处理:
通过遵循上述指南,开发者可以有效地利用HubSpot API的过滤机制,精确地搜索公司数据。核心在于正确理解和使用Filter与FilterGroup的层级关系,确保PublicObjectSearchRequest接收到符合其期望的数据结构。这种结构化的过滤方法不仅提高了搜索的准确性,也为构建更复杂的查询提供了基础。
以上就是HubSpot API 公司搜索:精确筛选的正确姿势的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号