Я использую контактный API, но он возвращает максимум 250 контактов. Я использовал параметр vidOffset для следующей страницы, но не повезло.
Примечание. Я хочу экспортировать все контакты из списка Hubspot в свою локальную базу данных с помощью API.
Вот мой код с 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, поделитесь своим опытом.






Есть несколько вещей, на которые следует обращать внимание при вызовах этого API.
Есть ли «истинное» значение в поле «больше». Если это так, есть больше контактов, которые можно потянуть.
Значение поля "vid-offset", которое возвращается в ваших вызовах.
Для «больше» это логическое значение указывает, есть ли еще контакты, которые вы можете получить с помощью разбиения на страницы. Для «вид-смещения» это целое число, сгенерированное API, оно не принимает простое последовательное целое число.
Кроме того, вы получаете только 5 записей за раз, вы также можете просто сделать максимум, поскольку их всего 100. Это ограничит количество звонков, которые вам нужно сделать.
Наконец, вы можете просто добавить их в файл, который затем сможете использовать для чего угодно, т. е. добавить в базу данных, загрузить и т. д.
Итак, мое предложение состоит в том, чтобы изменить вашу исходную функцию, чтобы проверить значение "has-more" на "true", если это правда, отправить значение "vid-offset" в новую функцию, которая делает другой вызов. В этой функции вы можете продолжать проверять эти значения и запускать свою функцию столько раз, сколько потребуется, пока это значение «больше» не окажется ложным.
// 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...
}
}
документация, которую они предоставляют, на самом деле довольно ясна, так что я бы тоже немного перечитал.