首页 > 解决方案 > Dialogflow:使用在履行中设置的参数

问题描述

我正在使用带有自定义服务器的 Dialogflow 作为后端服务器,不时发送 JSON 以实现。

例如,我想在我的系统中进行一个非常简单的登录。为此,我有一个意图,“session.login”,它有一个必需的参数,即用户名: 登录意图

该意图已启用,我的后端仅检查给定参数是否username存在于数据库中,然后转发(使用后续事件)到另一个意图“登录失败”或“登录成功”:{"followupEventInput": {"name": "login-failed", "languageCode": "en"}}

到目前为止,这一切都有效,但现在我只是希望这个意图能够说诸如“你好,$username”之类的东西: 在此处输入图像描述

但是我无法做到这一点,因为那时参数用户名似乎已经消失了。当我尝试上面给出的代码时,Actions on Google 失败,这意味着我的机器人离开了对话并且我收到了错误 MalformedResponse expected_inputs[0].input_prompt.rich_initial_prompt: 'rich_response' must contain at least one item.

我尝试从我的履行服务器发回有关参数的信息,这样我的新响应将我转发到 session.login.success 意图看起来像这样: {'outputContexts': [{'lifespanCount': 5, 'name': 'projects/MY_AGENT/MY_SESSION/contexts/login-incomplete', 'parameters': {'username': 'aron'}}], 'followupEventInput': {'languageCode': 'en', 'name': 'login-success'}},但这也无济于事。

如果有人对如何做到这一点有任何帮助,那就太好了,谢谢!

标签: dialogflow-esactions-on-google

解决方案


我自己想通了。

首先,我根本不需要设置新参数,只需要在我的响应中使用#oldcontext.oldparameter,其次,如果从上下文中取消引用,则不再需要美元符号:

在此处输入图像描述


推荐阅读