Zapier Code

时间:2018-04-06 04:45:29

标签: python webhooks zapier

我目前正与Zapier合作完成某些任务的自动化,但我对以下事项感到困惑:

我尝试使用包含文件的Zapier Webhooks发送POST请求。我可以通过邮差将其作为Debitoor的API(我发送到的地方)非常清楚。

但是,我无法在Zapier Webhooks中发挥作用。我也尝试使用Zapier Code(Python),因为我可以查看邮递员的python代码。但我对此并不熟悉,可能需要一些帮助才能开始。

1。)首先,这是API参考:https://developers.debitoor.com/api-reference#files

2。)然后我使用了Postman这个代码(Python请求),它正在运行:

import requests

url = "https://api.debitoor.com/api/files/v1"

querystring = {"token":"eyJ1c2VyIjoiNWE0NmVjYjUxOTE0ODEwMDFjMTkxYzZmIiwiYXBwIjoiNTdiMmZlMDkxZTkwMjQwZjAwNDZhNWEyIiwiY2hhbGxlbmdlIjowLCIkZSI6MCwiJHQiOjE1MjE4NzAwNTQ1OTd9CsKRw5xbw5_DhHUWw5QJw4zDj8KnXsOaeMKA","fileName":"test.pdf"}

payload = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"Bildschirmfoto 2018-04-05 um 09.59.46 1.png\"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--"
headers = {
    'content-type': "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    'cache-control': "no-cache",
    'postman-token': "716e7723-2dc1-6384-059d-960feb563443"
}

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)

3.)尝试将代码复制到Zapier Code,但我不知道如何实现该文件。在Zapier,我正在触发一封入境电子邮件,以获取附件,然后是水合"。它看起来像这样:

hydrate|||.eJwtjMsOwiAUBf_lrosKNFDZu3Xh1hjC46KklTaFxDRN_11qXJ7JzFkhplxMcqijB8U5l7yT5wZCxMHrZN4Iqo4BMzTgXuh63eMCioruLKiobEwFU9FlmXb1WrX-Y-ZnBrX-Qj2NsSpzBfcV_o-3C2GUisPkwx7sj5D5UQpDmeMnwqW1pPWBE-OYJdYwdCJQT9sWtse2fQEK1Tjl:1eqY0S:s2Ek27XO54PVSm9q_mVMDN8o1uY|||hydrate

如何将Python代码连接到水合文件?我没有文件经验,也找不到任何有用的帮助。希望有人有个主意吗?

1 个答案:

答案 0 :(得分:0)

我试图将AWS S3文件导入我的API。

事实证明,Zapier像这里描述的那样为我的文件补水。

然后我成功提取了文件的内容,并将其发送到我的API,如下所示:

import urllib.request

auth_token = input_data['auth_token'] # Authentication token for my API
csv_file = input_data['csv_file'] # The "hydrate|||..." variable: that's my S3 file
file_type = 'text/csv'

fp = urllib.request.urlopen(csv_file)
file_bytes = fp.read() # Binary content of my S3 file
fp.close()

url = 'http://my.api.com/importer/resource'
headers = {
  'accept': 'application/vnd.api-v1+json',
  'authorization': auth_token,
  'user-agent': 'Zapier'
}

files = {'csv_file': ('bulk_resources.csv', file_bytes, file_type, {'Expires': '0'})}

response = requests.post(url, headers=headers, files=files)

return response.json()