Используя Mautic API, как отправить параметр "списки" при создании электронного письма?

Документация для создания электронных писем с использованием Mautic API: https://developer.mautic.org/

Я не могу создать электронное письмо без указания списков параметров. Параметр lists указан следующим образом:

массив списков Массив идентификаторов сегментов, которые следует добавить к электронному письму сегмента

Как я могу отправить списки параметров через HTTP-сообщение, используя Python, чтобы Mautic API мог его понять?

Это создает электронную почту типа "шаблон" (по умолчанию) в Mautic...

emailData = {    
    'name': 'Email-teste',
    'subject': 'Assunto teste',
    'isPublished': '1',
    'language': 'pt_BR',`enter code here`
    'customHtml' : '<strong>html do email<strong>'
}       

Но мне нужно создать электронное письмо типа "список".

Для этого обязательно указывать каждый список идентификаторов. Списки являются сегментами в Mautic.... У меня есть сегмент с идентификатором 7!

Как я могу отправить идентификаторы сегментов в Mautic API, используя POST (запросы Python)?

emailData = {    
    'name': 'Email-teste',
    'subject': 'Assunto teste',
    'emailType': 'list',
    'lists': '7',    
    'isPublished': '1',
    'language': 'pt_BR',
    'customHtml' : '<strong>html do email<strong>'
}       

Я пробовал много способов... и я всегда получаю ошибку:

u'errors': [{u'code': 400,
              u'details': {u'lists': [u'This value is not valid.']},
              u'message': u'lists: This value is not valid.'}]}

Я уверен, что у меня есть сегмент с идентификатором 7, как я вижу в интерфейсе Mautic.

Я использую модифицированную версию https://github.com/divio/python-mautic

2 ответа

Используя запросы в Python, я сгенерировал безопасную строку URL-адреса, похожую на следующую, отсекаемую для передачи идентификатора списка в сегмент электронной почты:

lists%5B%5D=7

равняется

lists[]=7

простым текстом. Таким образом, вы должны поместить [] непосредственно после имени ключа.

Чтобы создать электронное письмо в виде списка (сегмент электронной почты) с прикрепленным к нему сегментом, с помощью Postman сгенерировал следующий код:

import requests

url = "https://yourmauticUrl"

payload = "customHtml=%3Ch1%3EHello%20World%3C%2Fh1%3E&name=helloworld&emailType=list&lists%5B%5D=7"
headers = {
    'authorization': "your basic auth string",
    'content-type': "application/x-www-form-urlencoded",
    'cache-control': "no-cache"
    }

response = requests.request("PATCH", url, data=payload, headers=headers)

print(response.text)

Глядя на вашу конкретную проблему, я могу представить, что ваш код должен выглядеть следующим образом (хотя я не знаком с вашей библиотекой Python):

emailData = {    
    'name': 'Email-teste',
    'subject': 'Assunto teste',
    'emailType': 'list',
    'lists[]': '7',    
    'isPublished': '1',
    'language': 'pt_BR',
    'customHtml' : '<strong>html do email<strong>'
}  

Надеюсь это поможет!

В соответствии с документами API, на которые вы ссылались, lists нужно быть:

Массив идентификаторов сегментов, которые должны быть добавлены в электронное письмо сегмента

Но вы не отправляете значение для lists в списке (массиве). Вместо этого вы должны попробовать:

emailData = {    
    'name': 'Email-teste',
    'subject': 'Assunto teste',
    'emailType': 'list',
    'lists': ['7'],    
    'isPublished': '1',
    'language': 'pt_BR',
    'customHtml' : '<strong>html do email<strong>'
}      

Вам нужно отправить данные в формате raw json, вот пример запроса:

def create_contact_mautic(email, firstname, lastname):
    params = {"email": email}
    params.update({"firstname": firstname})
    params.update({"lastname": lastname})
    url = '<your mautic url>/api/contacts/new'
    response = requests.request('POST', url, data=json.dumps(params), headers=headers, auth=('<your login>','<your password>'))
    return response.text

секрет вdata = json.dumps (params), который преобразует ваши параметры в необработанный json

Другие вопросы по тегам