Mailchimp API 节点 - 根据标签为列表创建活动

Posted

技术标签:

【中文标题】Mailchimp API 节点 - 根据标签为列表创建活动【英文标题】:Mailchimp API Node - create campaign for list based on tags 【发布时间】:2020-09-21 05:28:12 【问题描述】:

我正在使用 firebase 云功能发出异步 api 请求,以便在 mailchimp 中为列表中的一组特定用户创建活动。我在文档中读到这可以通过标签来完成,这样我就可以构建自己的结构。我正在为一个非营利组织建立一个捐赠系统,并希望标签代表当前正在捐赠的客户的姓名。

以下是我的 firebase 功能。我被困在 segment_opts 对象上。我想根据列表成员是否具有与我的客户名称等效的标签来定义细分。

文档说 segment_opts 是“一个代表所有分段选项的对象。该对象应包含一个已保存的分段 ID 以使用现有分段,或者您可以通过同时包含匹配和条件选项来创建一个新分段。”。我没有设置任何其他段,所以我想我会创建一个新的段,指定包含客户名称的标签。

这篇文章帮助我达到了这一点。 *** post

我现在看到该条件应该是分段类型,但在下拉列表中我没有看到标签选项。这是文档参考的链接。 Reference

const response = await mailchimp.post('/campaigns', 
    type: 'regular',
    recipients: 
        list_id: functions.config().mailchimp.test,
        segment_opts: 
            "match": "any",
            "conditions": match: 'any',
            conditions: [
                
                    condition_type: 'StaticSegment',
                    field: 'static_segment',
                    op: 'static_is',
                    value: ??? (Int),
                ,
            ],
        
    ,
);

现在我删除了segment_opts,并将决定将活动发送到整个列表,直到我弄清楚如何按标签进行细分。此版本有效并在我的 mailchimp 帐户中创建了一个活动,从 UI 我可以看到文档中提供的细分选项,但看不到按标签过滤的选项

    const response = await mailchimp.post('/campaigns', 
        type: 'regular',
        recipients: 
            list_id: functions.config().mailchimp.test,
        ,
        settings: 
            subject_line: `$firstName has been funded!`,
            preview_text: `$$goal has been raised for $firstName.`,
            title: `$firstName has been funded`,
            from_name: 'Organization name',
            reply_to: 'org_email@gmail.com',
        ,
    );

这是 Mailchimp 仪表板中下拉选项的屏幕截图。

【问题讨论】:

【参考方案1】:

这就是我的广告系列细分选项。在这里,我正在检查两个条件。 SITE 合并标记 = 我传入的站点变量,并且该成员是否属于名为 tagName 的标记/段。但是,我不能传递一个 tagName,只能传递一个我事先查找的 tagId。

'segment_opts': 
                
                    'match': 'all',
                    'conditions': [
                        
                            'condition_type': 'TextMerge',
                            'field': 'SITE',
                            'op': 'is',
                            'value': site
                        ,
                        
                            'condition_type': 'StaticSegment',
                            'field': 'static_segment',
                            'op': 'static_is',
                            'value': tagId
                        
                    ]
                

为了获取 tagId,我使用了这个 Python 函数:

tagId, segments = self.getSegmentIdFromTagName(tagName)

这是从 tagName 中获取 tagId 的 Python 代码,它从系统中获取所有 Segments/Tags,然后查找您传入的名称:

 def getSegmentIdFromTagName(self,reqTagName,segments=None):
     audienceId = self.audienceId
     reqId = None
     if not segments:
         segments = self.mcClient.lists.segments.all(list_id=audienceId,get_all=True)
     for segment in segments['segments']:
         segName = segment['name']
         segId = segment['id']
         if segName == reqTagName:
              reqId = segId
              break
     return reqId,segments

【讨论】:

以上是关于Mailchimp API 节点 - 根据标签为列表创建活动的主要内容,如果未能解决你的问题,请参考以下文章

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

有没有办法修复节点中的这个 Mailchimp API 错误?

api 节点 .js(通过 api 将数据发布到 mailchimp 服务器)

如何使用 API v3 从 mailchimp 受众获取所有标签?

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

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