在 flask-assistant 上获取用户消息

Get user message on flask-assistant

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

# -*- 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 的打印总是 return None,但是当我检查 ngrok 网络界面 (http://127.0.0.1:4040) 时,我可以看到请求。

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

我也在github上问过这个问题,得到了答案,所以我会分享给其他人:

您可以从 flask-assistant 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 的原因是参数名称必须与意图期望的实体类型相匹配。

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