首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Chatfuel读取存储在Zapier中的JSON文件?

如何让Chatfuel读取存储在Zapier中的JSON文件?
EN

Stack Overflow用户
提问于 2018-01-10 00:39:26
回答 1查看 352关注 0票数 0

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

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

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

代码语言:javascript
复制
json0={
 "messages": [
   {"text": analysis_output}]
 }

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

代码语言:javascript
复制
import requests
r = requests.post('https://hooks.zapier.com/hooks/catch/2843360/8sx1xl/', json=json0)
r.status_code

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

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

代码语言:javascript
复制
GET https://store.zapier.com/api/records?secret=password2

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

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

这将返回:

代码语言:javascript
复制
{'messages': "text: Didn't know I could order several items"}

Chatfuel工作的正确方式应该是:

代码语言:javascript
复制
{'messages': [{"text: Didn't know I could order several items"}]}

也就是说,有两个mais问题:

1) JSON中缺少“{[

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-01-11 05:11:44

我是David,来自Zapier平台团队。

首先,你不需要在你的钥匙周围加上引号,我们会为你处理这一点。目前,您的json将如下所示:

代码语言:javascript
复制
{ "'messages'": { "'text'": "<DATA FROM STEP 1>" } }

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

接下来,如果要存储数组,请使用Push Value Onto List操作。它接受一个顶级键并将您的值存储在名为list的对象中的键中。给定以下设置:

在JSON中得到的结构是

代码语言:javascript
复制
{ "demo": {"list": [ "5" ]} }

看起来你想要向下存储一个额外的级别;一个json对象数组:

代码语言:javascript
复制
[ { "text": "this is text" } ]

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

这回答了你的问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48172795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档