【问题标题】:Dialogflow: Use parameters that are set in fulfillmentDialogflow:使用在履行中设置的参数
【发布时间】:2020-02-13 18:35:22
【问题描述】:

我将 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-es actions-on-google


    【解决方案1】:

    我自己想出来的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多