如何将标签添加到 Mailchimp 上的列表成员?

Posted

技术标签:

【中文标题】如何将标签添加到 Mailchimp 上的列表成员?【英文标题】:How to add a tag to a list member on Mailchimp? 【发布时间】:2019-07-12 03:19:01 【问题描述】:

我想为 mailchimp 列表中的特定用户添加标签

$email = "toto@example.com";
$tag="test";
$userid = md5( strtolower( $email ) );


$data = array(
    'apikey'        => $mailchimp_api_key,
    'email_address' => $email,
    'tags' => array(
        'name' => $tag,
        'status' => 'active'
        )
    );

$json_data = json_encode($data);

$url = 'https://'.$mailchimp_datacenter.'api.mailchimp.com/3.0/lists/'.$mailchimp_list_id.'/members/' . $userid . '/tags';


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
    'Authorization: Basic '.$auth));
curl_setopt($ch, CURLOPT_USERAGENT, 'php-MCAPI/2.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
if ($displaytaglist!="") 
    curl_setopt($ch, CURLOPT_POST, true);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);

你知道是什么问题吗? 我有这个回报:

stdClass Object
(
    [type] => http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/
    [title] => Invalid Resource
    [status] => 400
    [detail] => Expected argument of type "array or Traversable and ArrayAccess", "string" given
    [instance] => XXXXX-XXXXX-XXXXX
)

【问题讨论】:

【参考方案1】:

我必须使用嵌套数组才能使标签工作:

$data = array(
  'tags' => array(
    array(
      'name' => $tagname,
      'status' => 'active' 
    )
  )
);

没有嵌套数组(array('name' => $tagname,'status' => 'active')) MailChimp 返回以下错误信息:

'Invalid Resource', 400, '期望的参数类型为“array or Traversable and ArrayAccess”, “string” given'

可以这样设置多个标签:

$tagname1 = "TAG_NAME_1";    
$tagname2 = "TAG_NAME_2"

$data = array(    
  'tags' => array(    
    array(    
      'name' => $tagname1,    
      'status' => 'active'     
    ),    
    array(    
      'name' => $tagname2,    
      'status' => 'active'     
    )    
  )    
);

说:

$tagname1 = "TAG_NAME_1";
$tagname2 = "TAG_NAME_2";

这将给出 $data 变量的以下 JSON 表示:

"tags":["name":"TAG_NAME_1","status":"active","name":"TAG_NAME_2","status":"active"]

【讨论】:

您能否添加 JSON 表示以使答案对其他实现语言也有用? @not2savvy JSON 表示已添加到上面的答案中。 @Jay 感谢您添加此 JSON 表示,它确实帮助我在 Python 中解决问题 这个“工作”在那个 mailchimp 回复“成功”但没有添加标签。有什么想法吗?【参考方案2】:
// Tags should be passed as multidimensional array. Replace your data variable with this and it will work. No need to pass email & apikey in data variable. Tested.

$data = array(
    'tags' => array(
        array(
            'name' => $tag,
            'status' => 'active'
        )
    )
);

【讨论】:

这个“工作”在那个 mailchimp 回复“成功”但没有添加标签。有什么想法吗?

以上是关于如何将标签添加到 Mailchimp 上的列表成员?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 api 向 mailchimp 订阅者添加“标签”

将标签添加到 MailChimp 成员对象

尝试将新成员添加到 MailChimp 列表会导致错误 400(“此值不应为空”)

如何将 API 密钥添加到 mailchimp 的 Axios 发布请求

如何在 mailchimp API v3.0 上获取具有特定标签的成员总数?

向 MailChimp 添加新订阅者返回错误请求