16

我目前正在使用 PHP 的 MailChimp API,版本 1.3.1 ( http://apidocs.mailchimp.com/api/downloads/#php )

我在 MailChimp 中设置了一个列表,并希望动态添加:

  1. 列表的订阅者(完成$objMailChimp->listBatchSubscribe($strMailingListID, ...):)
  2. 兴趣分组(完成$objMailChimp->listInterestGroupingAdd($strMailingListID, ...):)
  3. 兴趣组到这些分组中(完成$objMailChimp->listInterestGroupAdd($strMailingListID, ...):)
  4. 分配给相关组的订阅者(未完成)

API ( http://apidocs.mailchimp.com/api/1.3/#listrelated ) 关于如何将订阅者添加到兴趣组有点不清楚 - 这里有人有什么想法吗?

4

8 回答 8

21

从 MailChimp 的 API 2.0 版开始,这应该可以工作:

$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/),您可以通过 list/subscribe 或 lists/batch-subscribe 将其发送到 MailChimp:

$MailChimp = new MailChimp('API_KEY');
$result = $MailChimp->call('lists/subscribe', array(
      'id'                => 'LIST ID',
      'email'             => array('email'=>'trevor@example.com'),
      'merge_vars'        => $merge_vars
));
于 2013-09-12T18:28:47.627 回答
8

我无法在此页面上获得其他答案。这是我必须使用的合并变量:

$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",
        )
    )
);
于 2012-11-02T21:55:34.010 回答
8

对于 MailChimp API v3

从 v3 开始,“分组”已更改为“兴趣”。

您必须找出要添加到的组(兴趣)的 ID。不幸的是,这在 MailChimp 仪表板上的任何地方都找不到。

找出“兴趣”ID(而不是创建脚本)的最简单方法是转到MailChimp 游乐场,然后在输入您的 API 密钥后,路由到...

列表 > 相关列表 > 兴趣类别(在子资源下拉列表中)

然后...

兴趣类别的兴趣(在子资源下拉列表中)

然后...

点击兴趣并参考“id”字段,忽略其他 ID 字段

或者

列表 > 相关列表 > 成员(在子资源下拉列表中)

然后...

为任何成员加载(在操作下拉列表中)

或者

创建成员(按钮)

该页面将加载成员的详细信息。向下滚动,直到看到“兴趣”数组/对象。在那里你会看到 ID。请注意,它们可以设置为 true 或 false。

您必须通过使用前一种方法或拨打电话,然后通过您的 MailChimp 仪表板查看成员的详细信息来确定哪个 ID 与“组”/“兴趣”相关。


因此,当涉及到实际进行POST调用('member' create)时,你会想要一些......

{
  "email_address":"example@freddiesjokes.com",
  "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"
  }
}

一个PUT调用(“成员”编辑)示例...

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

看来你必须声明每一个“利益”,并说明它是真的还是假的。

于 2017-02-08T15:53:01.603 回答
2

使用GROUPINGS合并变量:

通过分组设置兴趣组。该数组中的每个元素都应该是一个包含“groups”参数的数组,其中包含要添加的以逗号分隔的兴趣组列表。兴趣组名称中的逗号应使用反斜杠进行转义。即,“,”=>“\”,以及用于指定分组的“id”或“name”参数 - 从 listInterestGroupings()获取

于 2012-01-06T17:24:41.490 回答
2

这是我要工作的代码

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 = 'info@example.com';
//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";
}
于 2013-06-18T12:36:25.020 回答
2

这是贾斯汀答案的变体,但在尝试了上述所有方法后,这是我唯一可以使用 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' => 'someone@something.com'),
            'merge_vars'        => $merge_vars,
            'double_optin'      => true,
            'update_existing'   => true,
            'replace_interests' => false, // do you want to add or replace?
            'send_welcome'      => false,
        )
    );

如果您不确定您的群组列表 ID 并希望使用它,您可以致电:

$current_groupings = $mc->call( 'lists/interest-groupings', array(
                'id' => '[GROUP_LIST_ID]',
            ) );
var_dump($current_groupings);
于 2015-01-30T12:45:12.363 回答
0

另请注意 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);
}
于 2013-12-06T12:03:48.513 回答
0

使用DrewM 的 MailChimp 包装器和数组简写语法 (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' => 'example@abc.com' ],
            '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

于 2014-04-28T18:43:18.213 回答