¿Cómo puedo exportar datos de contacto mediante la API?

Puede haber ocasiones en las que necesite exportar sus datos de contacto desde fuera de nuestra aplicación. Tal vez desee hacer una copia de seguridad de sus datos, o necesita analizar cada contacto en su cuenta.

Puede rápidamente exportar todos los contactos a un archivo CSV que se puede importar fácilmente a un programa de hoja de cálculo, o leer a través de un lenguaje de programación.

También puede crear un webhook que enviará datos automáticamente a la aplicación cada vez que se agregue o actualice un nuevo contacto.

A pesar de estas dos características, todavía puede haber ocasiones en las que la aplicación necesite tener acceso a los datos a petición. Te mostraremos cómo hacer esto usando PHP.

En primer lugar, configure la conexión de API desde el script:

define("ACTIVECAMPAIGN_URL", "https://ACCOUNT.api-us1.com");
define("ACTIVECAMPAIGN_API_KEY", "0c3b245df4785... 005d2d3d7e1e386f");
require_once("activecampaign-api-php/includes/ActiveCampaign.class.php");
$ac: new ActiveCampaign(ACTIVECAMPAIGN_URL, ACTIVECAMPAIGN_API_KEY);

A continuación, crearemos una función que controle la solicitud de API y agregue cada contacto a una matriz global. La función acepta un número de página, así como id de lista opcional (si desea solicitar contactos solo de determinadas listas) y devuelve el número total de contactos encontrados para la página solicitada.

$GLOBALS["contactos"] - array(); Mantiene todos los contactos.

función run($page, $listids á 0)

  Método API.
  $request "contacto/lista";

  Compruebe si hay filtro de lista. Si no hay ninguno, solicite todos los contactos.
  si ($listids)
    $request .- "?filters[listid]-$listids-";
  Más
    $request .- "?ids-all";

  Haga una petición.
  $request .- "&full-0&sort-id&sort_direction-ASC&per_page-500&página-$page";
  $response $GLOBALS["ac"]->api($request);

  Contador interno.
  $count 0;

  Si la solicitud vuelve correctamente.
  si ((int)$response->éxito)

    Recorre cada elemento.
    foreach ($response como $key de $value>)

      Si hay un elemento de correo electrónico, sabemos que es un contacto.
      (isset($value->email))

        $count++; Incremente el contador interno.

        Almacene este contacto en la matriz global.
        si (!isset($GLOBALS["contacts"][$value->id])) ?
          $GLOBALS["contactos"][$value->id] - $value;
        }

      }

    }

  }
  otra cosa ?

    Error en la solicitud. Salida del motivo.
    echo $response->error;

  }

  $count de retorno;

}

Como puede ver arriba (resaltado), agregamos cada contacto a una matriz global ($contacts). Aquí está un registro de contacto de muestra:

stdClass Object
(
  [id] > 29564
  [subscriberid] ?> 29564
  [cdate] á> 2012-12-14 09:01:00
  [sdate] á> 2012-12-14 09:01:00
  [first_name] > Mike
  [last_name] > Smith
  [correo electrónico] > test@test.com
  [last_list] > Lista de recompensas
  [avatar_url] > https://test.api-us1.com/gravatar.php?h-test@test.com&s-50
)

También verá sin embargo que limitamos los resultados a 100 por página. Esta es la cantidad máxima que puede recibir para cada página. Para solicitar páginas posteriores, agregaremos más código:

$page_inicio_de_inicio á 1; La página desde la que empezar.
$page_end 1; La página en la que se terminará.
$page_loop á 0;
$listids 9; Cualquier filtro de lista (utilice un formato separado por comas para más de uno: 1,2)

while (($page_start + $page_loop) <-$page_end) ?
  $page_current á $page_start + $page_loop;
  $count run($page_current, $listids);
  $page_loop++;
  sueño(3);
}

El bucle anterior recuperará automáticamente la siguiente página de contactos hasta que llegue a la última página que especifique. Puedes encontrar fácilmente tu última página dividiendo el número total de contactos en tu cuenta con 100. Por ejemplo, si tiene 1.000 contactos, necesitaría unas 10 páginas de para recuperarlos todos.

$page_inicio_de_inicio á 1; La página desde la que empezar.
$page_end 10; La página en la que se terminará.
...

También puede cambiar el bucle para ver solo el número total devuelto ($count):

mientras que ($count 100) ...

De esta manera, solo está obteniendo la página siguiente si la página actual tiene el importe máximo devuelto. Si la página actual tiene menor que la cantidad máxima, sabe que es la última página. Hemos encontrado este enfoque un poco menos confiable y menos flexible que nuestro ejemplo inicial, pero depende de usted cómo desea manejarlo.

¿Tiene más preguntas? Enviar una solicitud