我试图通过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
答案 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文本。
还要注意: