2

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

下面是我的火力基地功能。我被困在 segment_opts 对象上。我想根据列表成员是否具有与我的客户名称等效的标签来定义一个段。

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

这篇文章帮助我达到了这一点。Stackoverflow 帖子

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

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 仪表板中下拉选项的屏幕截图。 下拉屏幕截图

4

1 回答 1

0

这就是我的广告系列细分选项。在这里,我正在检查两个条件。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
于 2020-06-12T02:53:41.160 回答