Mailchimp API Node — создание кампании для списка на основе тегов

Я делаю асинхронный запрос API с облачной функцией Firebase, чтобы создать кампанию в mailchimp для определенного набора пользователей из списка. Я читал в документации, что это можно сделать с помощью тегов, чтобы я мог построить свою собственную структуру. Я создаю систему пожертвований для некоммерческой организации и хотел бы, чтобы тег представлял имя клиента, которому в настоящее время делаются пожертвования.

Ниже приведена моя функция firebase. Я застрял в объекте segment_opts. Я хочу определить сегмент на основе того, имеет ли член списка тег, эквивалентный имени моего клиента.

В документе говорится, что segment_opts — это «объект, представляющий все параметры сегментации. Этот объект должен содержать save_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, а в пользовательском интерфейсе я вижу параметры сегмента, предлагаемые в документации, но не вижу возможности фильтрации по тегам.

    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]',
        },
    });

Вот скриншот выпадающего списка на панели инструментов Mailchimp. Скриншот раскрывающегося списка


person Sasheem    schedule 02.06.2020    source источник


Ответы (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)

Это код Python для получения tagId из 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
person blissweb    schedule 12.06.2020