0

我在 python 3 上使用 flask-assistant 和 dilaogflow 作为 webhook。我查看了官方文档,但没有找到如何获取用户消息("queryText"关于 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 的打印始终返回 None,但是当我在 ngrok Web 界面 ( http://127.0.0.1:4040 ) 上进行检查时,我可以看到请求。

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

4

1 回答 1

0

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

您可以从 flask-assistantrequest对象中获取查询文本。

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)

您的函数预期的 queryTextmanage_fallback值为 None 的原因是参数名称必须与意图预期的实体类型匹配。

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

于 2019-03-07T06:47:21.057 回答