将标签添加到 MailChimp 成员对象

Posted

技术标签:

【中文标题】将标签添加到 MailChimp 成员对象【英文标题】:Adding Tags to MailChimp Member object 【发布时间】:2019-09-25 06:54:38 【问题描述】:

我正在使用 Brandon Seydel 的 MailChimp.Net.V3(此软件包的第 4 版)。我正在尝试使用以下代码为成员添加标签

using MailChimp.Net;

private async Task MaintainTagsAsync()

    string apikey = "<apikey>";
    string listid = "<listid>";
    string emailaddress = "x@x.com";

    try 
      MailChimpManager Mcm = new MailChimpManager(apikey);
      Member m = await Mcm.Members.GetAsync(listid, emailaddress);
      m.Tags.Add(new MemberTag
      
        Name = "MyTag"
      );
      m.TagsCount = +1;
      await Mcm.Members.AddOrUpdateAsync(listid, m);
    
    catch (Exception e) 

上面的代码似乎执行正常,但是当我检查成员时,我发现标签没有被添加。我已经尝试过增加和不增加 TagsCount 属性,结果相同。

有没有人有任何使用此功能的经验,并且可以指出我哪里出错了。

【问题讨论】:

你认为async-await为什么会这样? 好吧,由于进程使用异步处理,我的异步代码实现可能会导致代码无法按预期工作。 唯一的异步代码是await Mcm.Members.AddOrUpdateAsync(listid, m)。你的问题似乎在那之前。不是吗? 我不确定你是否在帮忙。如果仔细观察,例程中实际上有 2 个等待。我不认为问题与异步有关,但我添加了标签以防万一其他人认为它可能是。 你从一个等待的电话中得到m。从那里到下一个await 代码是同步的。您是否查看过 MailChimp API 的源代码? 【参考方案1】:

我现在找到了一种似乎有效的方法。请看以下代码:

using MailChimp.Net;

private async Task MaintainTagsAsync()

    string apikey = "<apikey>";
    string listid = "<listid>";
    string emailaddress = "x@x.com";

    try 
      MailChimpManager Mcm = new MailChimpManager(apikey);
      Member m = await Mcm.Members.GetAsync(listid, emailaddress);
      Tags tags = new Tags();
      tags.MemberTags.Add(new Tag() 
            Name = "MyTag",
            Status = "active"
      );
      await Mcm.Members.AddTagsAsync(listId, emailaddress, tags);
    
    catch (Exception e) 

【讨论】:

【参考方案2】:

对于它的价值,我仍在使用 Segment API,MailChimp 说它仍然受支持,上次我问过。 “标签”本质上是相同的,您可以使用当前版本的 API 轻松地在列表段中添加或删除成员。

【讨论】:

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

Mailchimp 使用 php 和 drupal 8 将标签添加到列表中的现有成员

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

Mailchimp API 向新成员和现有成员添加标签

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

MailChimp API - 无法更新现有成员的标签

通过 API 将 Mailchimp 成员添加为“未订阅”