2012-01-06 8 views
15

Attualmente sto usando l'API MailChimp per PHP, versione 1.3.1 (http://apidocs.mailchimp.com/api/downloads/#php)MailChimp API PHP - Aggiungi ai Interest Group

ho creato una lista in MailChimp, e vorrei aggiungere dinamicamente:

  1. gli abbonati alla lista (fatto: $objMailChimp->listBatchSubscribe($strMailingListID, ...))
  2. interesse raggruppamenti (fatta: $objMailChimp->listInterestGroupingAdd($strMailingListID, ...))
  3. Gruppi di interesse in quei raggruppamenti (fatta: $objMailChimp->listInterestGroupAdd($strMailingListID, ...))
  4. 0.123.
  5. abbonati assegnati ai gruppi rilevanti (non fatto)

L'API (http://apidocs.mailchimp.com/api/1.3/#listrelated) è un po 'poco chiaro su come aggiungere un abbonato a un gruppo di interesse - Qualcuno qui ha qualche idea?

risposta

4

per MailChimp API v3

A partire da v3, i "raggruppamenti" sono stati modificati in "interessi".

È necessario trovare l'ID del gruppo (interesse) che si desidera aggiungere. Purtroppo questo non può essere trovato da nessuna parte sulla dashboard di MailChimp.

Il modo più semplice per scoprire il 'interessi' ID (piuttosto che la creazione di uno script) è quello di andare al MailChimp playground e poi, dopo aver inserito nella vostra chiave API, itinerario verso ...

liste > l'elenco in questione> categorie di interesse (nel menu a discesa sotto-risorse)

poi ...

interessi (nel menu a discesa sotto-risorse) per la categoria di interesse

poi ...

scegliere attraverso l'interesse e fare riferimento al campo 'id', ignorando gli altri campi ID

O

elenchi> il elenco in questione> membri (nel menu a discesa delle risorse secondarie)

quindi ...

carico (nel menu a discesa Azioni) per qualsiasi membro

o

Crea Utenti (pulsante)

La pagina verrà caricare i dettagli del membro. Scorri verso il basso fino a vedere l'array/oggetto 'interessi'. Lì vedrai gli ID. Si noti che possono essere impostati su true o false.

Si dovrà capire quale ID si riferisce a cosa 'gruppo'/'interesse' andando sul metodo precedente o effettuando la chiamata, e quindi guardando i dettagli del membro tramite il cruscotto di MailChimp.


Così, quando si tratta di fare effettivamente la POST chiamata ('membro' creare), si vorrebbe qualcosa sulle linee di ...

{ 
    "email_address":"[email protected]", 
    "status":"subscribed", 
    "interests": { 
    "b8a9d7cbf6": true, 
    "5998e44916": false 
    }, 
# ADDITIONAL FIELDS, IF REQUIRED... 
    "merge_fields":{ 
    "FNAME": "foo bar", 
    "LNAME": "foo bar", 
    "MERGE3": "foo bar", 
    "MERGE4": "foo bar" 
    } 
} 

Un PUT chiamata ('membro' edit) esempio ...

{ 
    "interests": { 
    "b8a9d7cbf6": false, 
    "5998e44916": true 
    } 
} 

Sembra che si deve dichiarare ogni 'interessi', e lo stato se è vero o falso .

+1

Sto segnalando questo come accettato dal l'API è passata alla v3. Se hai bisogno della soluzione per v2, scorri verso il basso fino alla risposta di Trevor Gehman. Grazie per aver postato questo, Crimbo – Joe

+0

Nessun problema! Non esiste ancora una documentazione ufficiale oltre a [guida API] (http://developer.mailchimp.com/documentation/mailchimp/reference/overview/). Quindi sei lasciato ad indovinare cosa fa cosa – Crimbo

2

Usa var GROUPINGS unione:

Set Gruppi di Interesse per raggruppamento. Ogni elemento di questo array deve essere un array contenente il parametro "groups" che contiene una virgola elenco delimitato di gruppi di interesse da aggiungere. I nomi delle virgole nel gruppo di interesse devono essere preceduti da una barra rovesciata. vale a dire, "" => '\', e sia un 'id' o il parametro 'nome' per specificare il Raggruppamento - ricevono da listInterestGroupings()

+0

Quale metodo è disponibile in? – Joe

+0

Forse questo http://apidocs.mailchimp.com/api/1.3/listupdatemember.func.php? ;) – shybovycha

+0

Funziona anche per 2.0 o solo per 1.3 – Chapsterj

8

non ho potuto ottenere le altre risposte in questa pagina per lavorare . Ecco l'unione vars che ho dovuto usare:

$merge_vars = array(
    'GROUPINGS' => array(
     0 => array(
      'id' => "101", //You have to find the number via the API 
      'groups' => "Interest Name 1, Interest Name 2", 
     ) 
    ) 
); 
+0

Solo la soluzione che ha funzionato anche per me – rosswil

+1

Sì, questo funziona. Dovevo scoprire cosa si intendeva per 'id' - è il LIST del gruppo di interesse id. Pubblicherò il mio codice qui sotto. – Urs

+0

Lo stesso qui. L'importante è la chiave dell'array all'interno dei raggruppamenti. Ho passato circa un'ora su questo fino a quando ho trovato la tua risposta. Purtroppo, l'API non ha fatto eccezione. –

2

Ecco il codice che ho avuto modo di lavorare

require_once 'MCAPI.class.php'; 
require_once 'config.inc.php'; //contains apikey 

// use this once to find out id of interest group List 
//$retval = $api->listInterestGroupings($listId); 
//echo '<pre>'; 
//print_r($retval); 
//echo '</pre>'; 
//die(); 

$emailAddress = '[email protected]'; 
//You have to find the number via the API (id of interest group list) 
$interestGroupListId = FILLMEIN; 

$api = new MCAPI($apikey); 

// Create an array of Interest Groups you want to add the subscriber to. 
$mergeVars = array(
    'GROUPINGS' => array(
     0 => array(
      'id' => $interestGroupListId, 
      'groups' => "FILL IN GROUP NAMES", 
     ) 
    ) 
); 

// Then use listUpdateMember to add them 
$retval = $api->listUpdateMember($listId, $emailAddress, $mergeVars); 

if ($api->errorCode){ 
    echo "Unable to update member info!\n"; 
    echo "\tCode=".$api->errorCode."\n"; 
    echo "\tMsg=".$api->errorMessage."\n"; 
} else {  
    echo "Returned: ".$retval."\n"; 
} 
21

A partire dalla versione 2.0 di API MailChimp, questo dovrebbe funzionare:

$merge_vars = array(
    'GROUPINGS' => array(
     array(
      'name' => "GROUP CATEGORY #1", // You can use either 'name' or 'id' to identify the group 
      'groups' => array("GROUP NAME","GROUP NAME") 
     ), 
     array(
      'name' => "GROUP CATEGORY #2", 
      'groups' => array("GROUP NAME") 
     ) 
    ) 
); 

Fonte: http://apidocs.mailchimp.com/api/2.0/lists/subscribe.php

Utilizzo di un wrapper barebones PHP (https://github.com/drewm/mailchimp-api/) è possibile quindi s porre fine a questa a MailChimp tramite sia le liste/sottoscrivere o liste/batch-sottoscrivono:

$MailChimp = new MailChimp('API_KEY'); 
$result = $MailChimp->call('lists/subscribe', array(
     'id'    => 'LIST ID', 
     'email'    => array('email'=>'[email protected]'), 
     'merge_vars'  => $merge_vars 
)); 
+0

Contrassegnando questo come corretto in modo che le altre persone che atterrano qui lo vedano. Grazie per aver pubblicato la versione APIv2 :) – Joe

+0

Sembra che manchi una virgola negli elementi dell'array. Non vedo errori nel codice sopra. Pubblica i tuoi e posso dare un'occhiata. –

+0

Grazie a @TrevorGehman, in qualche modo ho perso l'intera dinamica dei gruppi all'interno di raggruppamenti, questo lo ha chiarito e ha funzionato. –

0

Inoltre si prega di notare opzionale ma molto importante ultimo parametro di listUpdateMember, per impostazione predefinita replace_interests è impostata su true in modo che sovrascrive qualsiasi abbonamento che l'utente che si sta aggiornando avrebbe potuto avere in passato. Se si desidera aggiungerne di nuovi senza toccare quelli precedenti, basta passare il nuovo nome del gruppo che si desidera aggiungere e impostare replace_interests su falso.

$api = new MailChimp('API_KEY'); 
$pArray = array('GROUPINGS'=>array(
         array('name'=>'GROUP CATEGORY', 'groups'=>'group1,group2'), 
       ) 
    ); 
if (is_array($pArray)) { 
     $api->listUpdateMember($pListId, $pEmail, $pArray, '', false); 
} 
0

Esempio con DrewM's MailChimp wrapper e sintassi abbreviata per gli array (PHP 5.4+) add to groups:

$merge_vars = [ 
    'GROUPINGS' => array(
     0 => [ 
      'id' => 12345, // need grouping ID 
      'name' => 'Interests', // or name instead 
      'groups' => [ 'cars', 'trucks' ] 
     ] 
    ] 
]; 

$mc = new MailChimp('API_KEY'); 
$mc->call(
     'lists/subscribe', [ 
      'id'    => '9876', // list ID 
      'email'    => array[ 'email' => '[email protected]' ], 
      'merge_vars'  => $merge_vars, 
      'double_optin'  => true, 
      'update_existing' => true, 
      'replace_interests' => false, // do you want to add or replace? 
      'send_welcome'  => false, 
     ] 
    ); 

c'è bisogno di raggruppamento 'nome' O 'id', entrambi non sono necessari.Per ottenere il raggruppamento uso ID: lists/interest-groupings

2

Questa è una variante di Justins risposta, ma dopo aver provato tutto quanto sopra questo è l'unico che ho potuto ottenere di lavorare con MailChimp involucro di DrewM

$merge_vars = array(
    'GROUPINGS' => array(
     0 => array(
      'id' => '[GROUP_LIST_ID]', // need grouping ID 
      'name' => '[OR_GROUP_LIST_NAME]', // or name instead 
      'groups' => array('[GROUP_NAME_1]', '[GROUP_NAME_2]') 
     ) 
    ), 
); 

$mc = new MailChimp('[YOUR_MAILCHIMP_API]'); 
$mc->call(
     'lists/subscribe', array(
      'id'    => '[YOUR_LIST_ID]', // list ID 
      'email'    => array('email' => '[email protected]'), 
      'merge_vars'  => $merge_vars, 
      'double_optin'  => true, 
      'update_existing' => true, 
      'replace_interests' => false, // do you want to add or replace? 
      'send_welcome'  => false, 
     ) 
    ); 

Se non siete sicuri di i gruppi elenca ID e desiderano utilizzarlo è possibile chiamare:

$current_groupings = $mc->call('lists/interest-groupings', array(
       'id' => '[GROUP_LIST_ID]', 
      )); 
var_dump($current_groupings);