我正在使用Firebase云功能发出异步api请求,以便在mailchimp中为列表中的特定用户集创建广告系列。我在文档中读到,可以使用标记来完成此操作,从而可以构建自己的结构。我正在为一个非营利组织构建捐赠系统,希望该标签代表当前正在捐赠的客户的名字。
下面是我的firebase函数。我被困在segment_opts对象上。我想根据列表成员是否具有与我的客户名称等效的标签来定义一个细分。
文档说segment_opts是“表示所有细分选项的对象。该对象应包含一个save_segment_id以使用现有细分,或者您可以通过同时包含match和条件选项来创建新细分。”我没有设置其他任何细分,因此我想创建一个新的细分来指定包含客户名称的标签。
这篇文章帮助我达到了这一点。 Stackoverflow 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帐户中创建一个广告系列,并且可以从用户界面中看到文档中提供的细分选项,但看不到按标签过滤的选项
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: '[email protected]',
},
});
这是我的广告系列细分选项所具有的。
'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代码,该tagName从系统获取所有细分/标签,然后查找您传入的名称:
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