0

私の Chatfuel ブロッ​​クでは、{{user input}} を収集し、Zapier Webhook で JSON を POST します。ここまでは順調ですね。その後、ローカルの Pyhon はこの JSON を Zapier ストレージから正常に読み取ります

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 はこの JSON を Zapier の GET Webhook に投稿します。

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

ここに画像の説明を入力

ここに画像の説明を入力

Zapier Webhook は JSON を正常に取得し、ストレージに送信します。

ここに画像の説明を入力

ここに画像の説明を入力

Key-Value ペアが設定されると、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"}]}

つまり、次の 2 つの問題があります。

1) JSON に " { [ " がありません

2) JSON は、まったく新しい JSON を生成するのではなく、既存の情報に新しい情報を追加しているため、JSON に 5 つの異なる部分があります。

この問題の可能な解決策を探しています。

4

1 に答える 1

0

Zapier プラットフォーム チームの David です。

まず、キーを引用符で囲む必要はありません。現在、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 に答える