Wie kann ich Kontaktdaten mit der API exportieren?

Es kann Zeiten geben, in denen Sie Ihre Kontaktdaten von außerhalb unserer Anwendung exportieren müssen. Vielleicht möchten Sie Ihre Daten sichern, oder Sie müssen jeden Kontakt in Ihrem Konto analysieren.

Sie können alle Kontakte schnell in eine CSV-Datei exportieren, die einfach in ein Tabellenkalkulationsprogramm importiert oder in einer Programmiersprache gelesen werden kann.

Sie können auch einen Webhook erstellen, der automatisch Daten an Ihre Anwendung sendet, sobald ein neuer Kontakt hinzugefügt oder aktualisiert wird.

Trotz dieser beiden Funktionen kann es immer noch Zeiten geben, in denen Ihre Anwendung bei Bedarf auf die Daten zugreifen muss. Wir'zeigen Ihnen, wie Sie dies mit PHP bewerkstelligen können.

Richten Sie zunächst Ihre API-Verbindung von Ihrem Skript aus ein:

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

Als Nächstes erstellen wir'll eine Funktion, die die API-Anforderung bearbeitet und jeden Kontakt zu einem globalen Array hinzufügt. Die Funktion akzeptiert eine Seitenzahl sowie optionale Listen-ID's (wenn Sie nur Kontakte aus bestimmten Listen anfordern möchten) und gibt die Gesamtzahl der gefundenen Kontakte für die angeforderte Seite zurück.

$GLOBALS["Kontakte"] = array(); // Enthält alle Kontakte.

Funktion run($page, $listids = 0) {

  // API-Verfahren.
  $Anforderung = "Kontakt/Liste";

  // Prüfen Sie auf Listenfilter. Wenn keine, fordern Sie alle Kontakte an.
  wenn ($listids)
    $Anforderung .= "?filters[listid]={$listids}";
  sonst
    $Anforderung .= "?ids=alle";

  // Antrag stellen.
  $request .= "&full=0&sort=id&sort_direction=ASC&per_page=500&page={$page}";
  $Antwort = $GLOBALS["ac"]->api($Anforderung);

  // Interner Zähler.
  $Zahl = 0;

  // Wenn die Anfrage erfolgreich zurückkommt.
  if ((int)$response->success) {

    // Schleife durch jedes Element.
    foreach ($Antwort als $Schlüssel => $Wert) {

      // Wenn es einen E-Mail-Eintrag gibt, wissen wir, dass es sich um einen Kontakt handelt.
      if (isset($value->email)) {

        $count++; // Erhöhen Sie den internen Zähler.

        // Speichern Sie diesen Kontakt im globalen Array.
        if (!isset($GLOBALS["contacts"][$value->id])) {
          $GLOBALS["Kontakte"][$WERT->id] = $Wert;
        }

      }

    }

  }
  sonst {

    // Antrag gescheitert. Geben Sie den Grund aus.
    echo $response->Fehler;

  }

  Rückgabe $count;

}

Wie Sie oben (hervorgehoben) sehen können, fügen wir jeden Kontakt zu einem globalen Array ($contacts) hinzu. Hier ist ein Muster eines Kontaktdatensatzes:

stdClass-Objekt
(
  [id] => 29564
  [subscriberid] => 29564
  [cdate] => 2012-12-14 09:01:00
  [sdate] => 2012-12-14 09:01:00
  [Vorname] => Mike
  [Nachname] => Smith
  [E-Mail] => test@test.com
  [letzte_Liste] => Belohnungsliste
  [avatar_url] => _COPY7@test.com&s=50
)

Sie'werden oben auch sehen, dass wir die Ergebnisse auf 100 pro Seite beschränken. Dies ist der Höchstbetrag, den Sie für jede Seite erhalten können. Um weitere Seiten anzufordern, fügen wir'etwas mehr Code hinzu:

$page_start = 1; // Die Seite, von der aus begonnen werden soll.
$page_end = 1; // Die Seite, die beendet werden soll.
$page_loop = 0;
$listids = 9; // Beliebige Listenfilter (verwenden Sie Komma-separiertes Format für mehr als einen: 1,2)

while (($Seite_start + $Seite_schleife) <= $Seite_ende) {
  $Seite_aktuell = $Seite_Start + $Seite_Schleife;
  $count = ausgeführt ($page_current, $listids);
  $Seite_Schleife++;
  schlafen(3);
}

Die obige Schleife holt automatisch die nächste Seite mit Kontakten, bis sie die letzte Seite erreicht, die Sie angeben. Sie können Ihre letzte Seite leicht finden, indem Sie die Gesamtzahl der Kontakte in Ihrem Konto durch 100 teilen. Wenn Sie z.B. ~1.000 Kontakte haben - Sie bräuchten etwa <a anfang="1">10 Seiten, um sie alle abzurufen.

$page_start = 1; // Die Seite, von der aus begonnen werden soll.
$page_end = 10; // Die Seite, auf der beendet werden soll.
...

Sie können die Schleife auch so ändern, dass nur die zurückgegebene Gesamtzahl ($count) betrachtet wird:

während ($Zahl == 100) ...

Auf diese Weise holen Sie nur dann die nächste Seite, wenn die aktuelle Seite den maximalen Rückgabebetrag aufweist. Wenn die aktuelle Seite weniger als den maximalen Betrag hat, wissen Sie, dass es sich um die letzte Seite handelt. Wir haben festgestellt, dass dieser Ansatz etwas weniger zuverlässig und weniger flexibel ist als unser erstes Beispiel, aber es liegt an Ihnen, wie Sie damit umgehen wollen.

Haben Sie Fragen? Anfrage einreichen