在flask-assantant上获取用户消息

时间:2019-03-06 14:16:57

标签: python flask dialogflow-fulfillment

我在带dilaogflow的webhook上的python 3上使用了flask-assistant。我查看了官方文档,但找不到如何获取用户消息(在dialogflow json请求上为"queryText")。 我没有成功尝试过

# -*- coding: utf-8 -*-
from flask import Flask
from flask_assistant import Assistant, ask, tell, context_manager, event

project_id='myproject_id'
app = Flask(__name__)
assist = Assistant(app, route='/', project_id = project_id)

@assist.action('Default Fallback Intent')
def manage_fallback(queryText):
    print('*'*40,queryText)
    speech='Running'
    return tell(speech)

if __name__ == '__main__':
    app.run(debug=True)

queryText的打印始终返回None,但是当我在ngrok Web界面(http://127.0.0.1:4040)上进行检查时,可以看到请求。

我想知道如何从flask-assistant获取用户消息?

1 个答案:

答案 0 :(得分:0)

我也在github上问了这个问题并得到了答案,所以我将与其他人分享:

您可以从烧瓶辅助request对象中获取查询文本。

from flask_assistant import request
...
...
@assist.action('Default Fallback Intent')
def manage_fallback():
    user_query = request['queryResult']['queryText']
    speech = "You said " + user_query
    return tell(speech)

manage_fallback函数期望的queryText值为None的原因是,参数名称必须与意图期望的实体类型匹配。

参数用于接收意图的已解析实体,而不是完整的用户查询。