Dialogflow,如何将json编码为文本参数的一部分?

时间:2017-12-07 18:44:44

标签: python json

我试图通过Python或PHP创建一个可以从Dialogflow webhooks接收JSON的脚本。

数据值来自resolvedQuery

我想解析数据,然后发送到以下网址:

https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush?text=***JSON GOES HERE ***&deviceId=18c972b753ad&apikey=5b48aed7

来自resolvedQuery的数据需要发送到 * JSON GOES HERE * 的关键网址。

这是我一直在尝试的Python代码:

from flask import Flask
from flask import request
from flask import make_response
import json
import logging as l
import requests

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    l.info("reached the hello() module...")

    return 'Hello  Beautiful World!\n'

@app.route('/apiai', methods=['POST'])
def apiai_response():

requests_session = requests.session()
requests_session.headers.update({'Content-Type': 'application/json'})
requests_session.headers.update({'charset':'utf-8'})

post_data = '[{ "resolvedQuery": "" }]'

requests_response = requests_session.post(url="https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush?text=***JSON GOES HERE ***&deviceId=18c972b753ad&apikey=5b48aed7", data=post_data)

print requests_response.content

@app.errorhandler(404)
def page_not_found(e):
    """Return a custom 404 error."""
    return 'Sorry, nothing at this URL.', 404

1 个答案:

答案 0 :(得分:0)

我会尝试这样的事情:

import json
import requests

json_string = json.dumps({"hello": "world"})
these_params = {"text": json_string,
                "deviceId": "18c972b753ad&apikey=5b48aed7"}
this_url = "https://joinjoaomgcd.appspot.com/_ah/api/messaging/v1/sendPush"

r.get(url=this_url, params=these_params)

请注意,这是get个请求而不是post请求

这是一个意见问题但是在GET请求中使用url编码的params在读取内容方面有所不同。至于data字段与post请求有关,处理方式略有不同。

在获取请求中,它看起来像url的一部分:

text=%7B%22hello%22%3A%22world%22%7D

作为一个帖子请求,服务器将尝试在application/json编码的主体中读取,该主体需要"数据"是有效的json文本。

还要注意: