zapier-python-将字节传递到输出以用于下一步操作

时间:2019-05-10 11:52:51

标签: python byte zapier

我正在尝试使用以下流程在Zapier上实现自动化:

  1. 触发器:接收POST请求的Web挂钩。正文是一个file键,其值是某个PDF的 base64字符串,因此类型为str
  2. 操作:一个Zapier Python代码,该代码从Web挂钩中检索file,将base64字符串解码为bytes,以获取PDF的真实有效内容,并说一个名为file_bytes的变量
  3. 操作:一个保管箱,该保管箱从上一步中检索file_bytes,并将其上传到保管箱

我自己对解码器进行了编码(第2点),并测试了它在我的本地系统上是否可以正常工作。

问题在于Dropbox(第3点)仅接收二进制,而Python(第2点)无法传递除JSON可序列化之外的值。这是Zapier的明显限制:

  

output字典或词典列表,将成为此代码的“返回值”。如果愿意,您可以明确地早日返回。这必须是JSON可序列化的!

...

从这个站点上的其他问题中我可以得到的最接近的是这两个,但这并没有给我带来任何运气。

...

将base64字符串解码为bytes的代码如下:

file_bytes = base64.b64decode(input_data['file'])

我已经做了:

  1. 通过file_bytes进行输出,如下所示:
output = [{'file': input_data['file_bytes']}]}]

但是它给了我这必须是JSON可序列化的!

  1. 像这样通过字符串传递file_bytes
output = [{'file': str(input_data['file_bytes'])}]

执行上传至保管箱,但文件内容已损坏。 (当然是啊)

  1. 通过file_bytes编码将latin-1传递为解码字符串:
output = [{'file': input_data['file_bytes'].decode('latin-1')}]

do 上传到保管箱,也可以打开PDF,即使该页具有与原始PDF相同的页码,但全部为空白(白色,没有内容)

...

那么,这种功能在Zapier平台中是否真正可见?或者甚至从一开始我就已经死胡同了?

0 个答案:

没有答案