MailChimp API PHP - Добавить в группу интересов

В настоящее время я использую API MailChimp для PHP, версия 1.3.1 (http://apidocs.mailchimp.com/api/downloads/#php)

Я установил список в MailChimp и хотел бы динамически добавить:

  • Подписчики в списке (сделано: $objMailChimp->listBatchSubscribe($strMailingListID, ...))
  • Группировка интересов (сделано: $objMailChimp->listInterestGroupingAdd($strMailingListID, ...))
  • Группы интересов в эти группировки (сделано: $objMailChimp->listInterestGroupAdd($strMailingListID, ...))
  • Подписчики, назначенные соответствующим группам (не выполняются)

API (http://apidocs.mailchimp.com/api/1.3/#listrelated) несколько неясен о том, как добавить подписчика в группу интересов - есть ли у кого-нибудь какие-либо идеи

Ответы

Ответ 1

Для MailChimp API v3

Начиная с v3, "группировки" изменились на "интересы".

Вам нужно узнать идентификатор группы (интереса), которую вы хотите добавить. К сожалению, это невозможно найти нигде на панели управления MailChimp.

Самый простой способ узнать идентификатор "интерес" (а не создать script) - это перейти на игровая площадка MailChimp а затем, после ввода вашего ключа API, пройдите по маршруту...

списки > рассматриваемый список > категории интересов (в раскрывающемся списке под-ресурсов)

то...

интересы (в раскрывающемся списке под-ресурсов) для категории интересов

то...

Перейдите к интересу и обратитесь к полю 'id', игнорируя другие поля ID

ИЛИ

списки > список, о котором идет речь > члены (в раскрывающемся списке под-ресурсов)

то...

load (в раскрывающемся списке действий) для любого члена

или

Создать участников (кнопка)

На странице будут загружены детали участника. Прокрутите вниз, пока не увидите массив/объект интересов. Там вы увидите идентификаторы. Обратите внимание, что они могут быть установлены в true или false.

Вам нужно будет выяснить, какой идентификатор относится к тому, что "группа" / "интерес" , перейдя по предыдущему методу или вызову, а затем просмотрев детали участника через панель управления MailChimp.


Итак, когда дело доходит до фактического вызова POST (создание элемента), вам нужно что-то в строках...

{
  "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"
  }
}

A PUT вызов (пример 'member) edit...

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

Кажется, что вы должны объявить каждый "интерес" и указать, истинно это или ложно.

Ответ 2

Начиная с версии 2.0 API MailChimp, это должно работать:

$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")
        )
    )
);

Источник: http://apidocs.mailchimp.com/api/2.0/lists/subscribe.php

Используя баботированную PHP-оболочку (https://github.com/drewm/mailchimp-api/), вы можете отправить ее в MailChimp через списки/подписку или списки/пакетную подписку:

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

Ответ 3

Я не мог заставить другие ответы на этой странице работать. Здесь слияния, которые я должен был использовать:

$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",
        )
    )
);

Ответ 4

Использовать GROUPINGS merge var:

Установить группы интересов путем группировки. Каждый элемент в этом массиве должен быть массив, содержащий параметр "группы", который содержит запятую список добавленных групп интересов. Commas in Interest Group имена должны быть экранированы обратным слэшем. т.е. "," = > "\", и либо параметр "id" или "name" для указания Grouping - get from listInterestGroupings()

Ответ 5

Вот код, который я получил, чтобы работать

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";
}

Ответ 6

Это вариант ответа Джастинов, но, пробовав все вышеперечисленное, это единственный, с которым я мог бы работать с оберткой DrewM MailChimp

$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,
        )
    );

Если вы не уверены в своем идентификаторе списков групп и хотите его использовать, вы можете позвонить:

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

Ответ 7

Также обратите внимание на необязательный, но очень важный последний параметр listUpdateMember, по умолчанию replace_interests он установлен в true, чтобы перезаписать любую подписку, которую пользователь мог обновить, возможно, в прошлом. Если вы хотите добавить новые, не касаясь предыдущих, просто передайте новое имя группы, которое вы хотите добавить, и установите replace_interests на false.

$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);
}

Ответ 8

Пример использования DrewM MailChimp wrapper и сокращенного синтаксиса для массивов (PHP 5.4+) добавить в группы:

$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,
        ]
    );

Вам нужно сгруппировать "имя" ИЛИ 'id', оба они не нужны. Чтобы получить идентификатор группировки, используйте: lists/interest-groupings