使用API​​从HubSpot列表中获取所有联系人

时间:2019-07-03 04:58:06

标签: php wordpress api curl hubspot

我正在使用联系人API,但仅返回最多250个联系人。我在下一页使用了'vidOffset'参数,但没有运气。

注意:我想使用API​​将所有联系人从Hubspot列表导出到我的本地数据库

这是我的php curl代码:

function callAPI($method, $url, $data){
   $curl = curl_init();
   $url = $url.'&property=firstname&property=email&count=5&vidOffset=2';
    switch ($method){
      case "POST":
         curl_setopt($curl, CURLOPT_POST, 1);
         if ($data)
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
         break;
      case "PUT":
         curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
         if ($data)
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                              
         break;
      default:
         if ($data)
            $url = sprintf("%s?%s", $url, http_build_query($data));
   }
   // OPTIONS:
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json',
   ));
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

   // EXECUTE:
   $result = curl_exec($curl);
   if(!$result){die("Connection Failure");}
   curl_close($curl);
   return $result;
}

// call the function
callAPI('GET', 'https://api.hubapi.com/contacts/v1/lists/11/contacts/all?hapikey=[API key]', false);

我在做错什么吗?或者,如果有更好的方法使用php / wordpress获取所有联系人,请分享您的经验。

1 个答案:

答案 0 :(得分:1)

调用此API时,需要注意一些事项。

  1. “更多”字段中是否有“真”值。如果是这样,还有更多可以拉的联系人。

  2. 您的呼叫中返回的“ vid-offset”字段的值。

对于“ has-more”,此布尔值指定是否可以通过分页拉动更多联系人。对于“ vid-offset”,这是API生成的整数,它不需要简单的顺序整数。

此外,您一次只抓5条记录,您也可以只进行最大记录,因为只有100条记录。这将限制您需要拨打的电话数量。

最后,您可能只想将它们添加到文件中,然后就可以将其用于任何所需的操作,即添加到数据库,下载等。

所以,我的建议是修改您的初始函数,以检查“ has-more”值是否为“ true”,如果为true,则将“ vid-offset”值发送给进行另一个调用的新函数。在该函数中,您可以继续检查这些值,并尽可能多地运行函数,直到“具有更多”值变为false为止。

   // the rest of your function is above

   // Decode the result so you can traverse the data

   $contacts = json_decode($result);

   // Store 'has-more' value

   $has_more = $contacts->has-more; 

   // Check if there are more records

   if($has_more) {

   // Get the offset number provided by API

   $offset = $contacts->vid-offset;

   // Get more records

   getMore($offset);

   } else { 

   // Complete calls and do something else...


   }

}

function getMore($offset) {

// Make cURL call with your your offset value

   $url = $url.'&property=firstname&property=email&count=100&vidOffset=' . $offset;

   $contacts = json_decode($result);

   $has_more = $contacts->has-more; 



   if($has_more) {

   $offset = $contacts->vid-offset;
   getMore($offset);

   } else {

    // Complete calls and do something else...

   }
}

documentation that they provide is actually quite clear,所以我也会读一点。