0

在我的 Chatfuel 块中,我收集了一个 {{user input}} 并在 Zapier webhook 中发布了一个 JSON。到目前为止,一切都很好。之后,我的本地 Pyhon 从 Zapier 存储中成功读取了这个 JSON

url = 'https://store.zapier.com/api/records?secret=password'
response = urllib.request.urlopen(url).read().decode('utf-8')
data = json.loads(response)

并分析它生成另一个 JSON 作为输出:

json0={
 "messages": [
   {"text": analysis_output}]
 }

然后 Python3 在 Zapier 的 GET webhook 中发布这个 JSON:

import requests
r = requests.post('https://hooks.zapier.com/hooks/catch/2843360/8sx1xl/', json=json0)
r.status_code

在此处输入图像描述

在此处输入图像描述

Zapier Webhook 成功获取 JSON 并将其发送到 Storage。

在此处输入图像描述

在此处输入图像描述

设置键值对,然后 Chatfuel 尝试从存储中读取:

GET https://store.zapier.com/api/records?secret=password2

但是得到的 JSON 结构是错误的,用这段代码验证了什么:

url = 'https://store.zapier.com/api/records?secret=password2'
response = urllib.request.urlopen(url).read().decode('utf-8')
data = json.loads(response)
data

返回:

{'messages': "text: Didn't know I could order several items"}

Chatfuel 工作的正确时间应该是:

{'messages': [{"text: Didn't know I could order several items"}]}

也就是说,有两个主要问题:

1) JSON 中缺少“{ [”

2) JSON 将新信息附加到现有信息,而不是生成全新的 JSON,导致 JSON 有 5 个不同部分。

我正在为这个问题寻找可能的解决方案。

4

1 回答 1

0

大卫在这里,来自 Zapier 平台团队。

首先,您的钥匙不需要引号,我们会为您处理。目前,您的 json 将如下所示:

{ "'messages'": { "'text'": "<DATA FROM STEP 1>" } }

所以第一个改变是去掉那些。

接下来,如果要存储数组,请改用Push Value Onto List操作。它需要一个顶级键并将您的值存储在该对象中的一个键中,称为list. 鉴于以下设置:

JSON 中的结果结构是

{ "demo": {"list": [ "5" ]} }

似乎您想存储一个额外的级别;一组 json 对象:

[ { "text": "this is text" } ]

开箱即用不支持,因为所有列表项都存储为字符串。不过,您可以存储 json 字符串,并在需要像访问对象一样访问它们时将它们解析回对象!

这是否回答你的问题?

于 2018-01-10T21:11:44.183 回答