我需要在 Tornado 服务器中为 Dialogflow 创建一个 webhook。我以前用烧瓶做过这个。我是他们两个的初学者。Flask Flask webhook代码的代码:
from flask import render_template
import os
from flask import Flask
from flask import request
from flask import make_response
import json
import time
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
@app.route('/webhook', methods=['POST', 'GET'])
def webhook():
req = request.get_json(silent=True, force=True)
print(json.dumps(req, indent=4))
res = makeWebhookResult(req)
res = json.dumps(res, indent=4)
print("+++++++++++++++RESPONSE+++++++++++++++++", res)
r = make_response(res)
r.headers['Content-Type'] = 'application/json'
return r
# Right now I'm just printing a response to see if it works properly
def makeWebhookResult(req):
queryResult = req.get('queryResult').get("queryText")
speech = queryResult
return {
"fulfillmentText": 'YOLO',
"source": 'App'
}
#./ngrok http 8090
if __name__ == '__main__':
port = int(os.getenv('PORT', 8090))
print("Starting app on port %d" % (port))
app.run(debug=True, port=port, host='localhost')
现在我像这样在龙卷风中试过这个:
import tornado.ioloop
import tornado.web as web
import tornado
import json
import os
static_root = os.path.join(os.path.dirname(__file__), 'static')
class MainHandler(tornado.web.RequestHandler):
def get(self):
template = "./templates/index.html"
self.render(template)
它适用于 Flask。当我尝试通过龙卷风运行它(使用 ngrok 进行隧道传输)时,我收到警告:tornado.access:405 POST /webhook (127.0.0.1) 0.83ms
我阅读了龙卷风的文档,但我似乎仍然无法弄清楚我该怎么做。我假设问题出在 Webhook 类中。我在这里做错了什么?
jeck猫
相关分类