Zapier Python代码错误Segment.com(usercode.py,第9行)

时间:2016-09-22 18:05:05

标签: python zapier segment-io

我尝试使用Zapier上的Python代码Action,通过POST API将数据传输到Segment.com。

我一直收到以下错误

  

Bargle。我们在创建运行python时遇到错误。 :-(错误:   您的代码出错了!回溯(最近一次调用最后一次):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()

有关错误可能引用的任何建议吗?关于如何更好地实现这一点的任何建议?

2 个答案:

答案 0 :(得分:0)

这样做:

payload =
{}

语法不正确。尝试:

payload = {}

我还建议使用linter - 也许http://infoheap.com/python-lint-online/对你有帮助!

答案 1 :(得分:0)

感谢@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()