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 受众获取所有标签?