Ошибка кода Python Zapier Segment.com (usercode.py, строка 9)

Я пытаюсь принять события Campaign Monitor Open и передать данные на Segment.com через POST API, используя действие кода Python на Zapier.

Я получаю следующую ошибку:

Bargle. Мы столкнулись с ошибкой при создании запускаемого питона. :-( Ошибка: в вашем коде возникла ошибка! Отслеживание (последний вызов последним): SyntaxError: недопустимый> синтаксис (usercode.py, строка 9)

Вот существующий снимок экрана установки (маскирующий код аутентификации): Zapier Zap Setup for Code

Код Python, возвращающий ошибку:

url = 'https://api.segment.io/v1/track/'
payload =
{
  'userId': input_data['email'],
  'event': 'Email Opened',
  'properties': {
    'listid': input_data['listid'],
    'open_date': input_data['date'],
    'cm_id': input_data['cm_id'],
    'open_city': input_data['city'],
    'open_region': input_data['region'],
    'open_country': input_data['country'],
    'open_lat': input_data['lat'],
    'open_long': input_data['long'],
    'open_country_code': input_data['country_code']
  },
  'context': {
    'ip': input_data['ip']
  }
}

headers = {
    'content-type': 'application/json',
    'Authorization': 'Basic BASE64ENCODEDWRITEKEY'
}

response = requests.post(url, data=json.dumps(payload), headers=headers)
response.raise_for_status()
return response.json()

Любой совет относительно того, на что может ссылаться ошибка? Любой совет в целом о том, как лучше этого добиться?


person John Sutton    schedule 22.09.2016    source источник


Ответы (2)


Делая это:

payload =
{}

Неправильный синтаксис. Пытаться:

payload = {}

Я также рекомендую использовать линтер - возможно, http://infoheap.com/python-lint-online/ был бы вам полезен!

person Bryan Helmig    schedule 22.09.2016

Спасибо @Bryan Helmig. Этот синтаксис, помимо импорта json, устранил проблему. Для тех, кому интересно, это работает ...

import json
import requests
url = 'https://api.segment.io/v1/track/'
payload = {
  'userId': input_data['email'],
  'event': 'Email Opened',
  'properties': {
    'listid': input_data['listid'],
    'open_date': input_data['date'],
    'cm_id': input_data['cm_id'],
    'open_city': input_data['city'],
    'open_region': input_data['region'],
    'open_country': input_data['country'],
    'open_lat': input_data['lat'],
    'open_long': input_data['long'],
    'open_country_code': input_data['country_code']
  },
  'context': {
    'ip': input_data['ip']
  }
       }

headers = {
    'content-type': 'application/json',
    'Authorization': 'Basic WRITEKEYHERE'
}

response = requests.post(url, data=json.dumps(payload), headers=headers)
response.raise_for_status()
person John Sutton    schedule 22.09.2016