Como exporto dados de contato usando a API?




Pode haver momentos em que você precisa exportar seus dados de contato de fora do nosso aplicativo. Talvez você queira fazer backup de seus dados, ou você precisa analisar todos os contatos da sua conta.


Você pode exportar rapidamente todos os contatos para um arquivo CSV que pode ser facilmente importado para um programa de planilha, ou lido através de uma linguagem de programação.


Você também pode criar um webhook que enviará automaticamente dados para seu aplicativo sempre que um novo contato for adicionado ou atualizado.






Apesar desses dois recursos, ainda pode haver momentos em que seu aplicativo precisa acessar os dados sob demanda. Vamos mostrar como fazer isso usando PHP.


Primeiro, configure sua conexão de API a partir do seu script:


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

Em seguida, criaremos uma função que lida com a solicitação de API e adiciona cada contato a uma matriz global. A função aceita um número de página, bem como IDs de lista opcional (se você quiser solicitar contatos apenas de determinadas listas) e retorna o número total de contatos encontrados para a página solicitada.


$GLOBALS["contatos"] = matriz(); Segura todos os contatos.

execução da função ($page, $listids = 0) {

Método API.
$request = "contato/lista";

Verifique o filtro de lista. Se não houver, solicite todos os contatos.
se ($listids)
$request .= "?filtros[listid]={$listids}";
Mais $request .= "?ids=todos";

Faça um pedido.
$request .= "&full=0&sort=id&sort_direction=ASC&per_page=500&page={$page}";
$response = $GLOBALS["ac"]-[>]api($request);

Contador interno.
$count = 0;

Se a solicitação voltar com sucesso.
se (int)$response-[>]sucesso) {

Loop através de cada item.
foreach ($response como $key =[>] $value) {

Se houver um item de e-mail, sabemos que é um contato.
se (isset($value-[>]email)) {

$count++; Incrementar o contador interno.

Armazene esse contato na matriz global.
se (!isset($GLOBALS["contatos"][$value-[>]id]) {
$GLOBALS["contatos"][$value-[>]id] = $value;
}

}

}

}
mais {

Pedido falhou. Saída a razão.
$response eco-[>]erro;

}

retornar $count;

}

Como você pode ver acima (destacado), adicionamos cada contato a uma matriz global ($contacts). Aqui está um registro de contato de amostra:


objeto stdClass
(
[id] =[>] 29564 [subscriberid] =[>] 29564 [cdate] =[>] 2012-12-14 09:01:00 [data] =[>] 2012-12-14 09:01:00 [first_name] =[>] Mike [last_name] =[>] Smith [e-mail] =[>] test@test.com [last_list] =[>] Lista de recompensas [avatar_url] =[>] https://test.api-us1.com/gravatar.php?h=test@test.com&s=50
)

Você também verá acima que limitamos os resultados a 100 por página. Este é o valor máximo que você pode receber para cada página. Para solicitar páginas subseqüentes, adicionaremos mais alguns códigos:


$page_start = 1; A página para começar.
$page_end = 1; A página para terminar.
$page_loop = 0;
$listids = 9; Quaisquer filtros de lista (use formato separado por comma para mais de um: 1,2)

enquanto (($page_start + $page_loop) <= $page_end) {
$page_current = $page_start + $page_loop;
$count = run($page_current, $listids);
$page_loop++;
sono(3);
}

O loop acima buscará automaticamente a próxima página de contatos até chegar à última página que você especificar. Você pode facilmente encontrar sua última página dividindo o número de contatos totais em sua conta com 100. Por exemplo, se você tem ~1.000 contatos - você precisaria de cerca de 10 páginas para buscar todos eles.


$page_start = 1; A página para começar.
$page_end = 10; A página para terminar.
...

Você também pode alterar o loop para olhar apenas para o número total retornado ($count):


enquanto ($count == 100) ...

Desta forma, você só está buscando a próxima página se a página atual tiver o valor máximo devolvido. Se a página atual tiver menor que o valor máximo, você sabe que é a última página. Achamos essa abordagem um pouco menos confiável e menos flexível do que nosso exemplo inicial, mas cabe a você como você quer lidar com isso.






Tem mais dúvidas? Envie uma solicitação