Получить все контакты из списка HubSpot с помощью API

Я использую контактный 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, поделитесь своим опытом.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
787
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько вещей, на которые следует обращать внимание при вызовах этого API.

  1. Есть ли «истинное» значение в поле «больше». Если это так, есть больше контактов, которые можно потянуть.

  2. Значение поля "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...

   }
}

документация, которую они предоставляют, на самом деле довольно ясна, так что я бы тоже немного перечитал.

Другие вопросы по теме