【问题标题】:How to get the user's response which falls into default fallback intent in dialogflow如何获取用户的响应,该响应属于对话框流中的默认回退意图
【发布时间】:2020-11-09 16:42:02
【问题描述】:

我在 Dialogflow 中使用开放式响应,即应用提出问题,用户输入响应,然后系统提出另一个问题。

考虑场景,用户输入:启动器很棒。没有这样的训练短语来匹配这个响应,所以它进入了默认的回退意图。我在 webhook 中处理这个请求,所以我需要这个用户的响应,以便它可以存储到数据库中。

我怎样才能得到这个回复?

更新: 使用 queryResult.queryText 后,我​​收到此错误: 错误:未设置响应。这是否在未作为对意图处理程序的承诺返回的异步调用中使用?在 DialogflowConversation.response (/srv/node_modules/actions-on-google/dist/service/actionssdk/conversation/conversation.js:237:19) 在 DialogflowConversation.serialize (/srv/node_modules/actions-on-google/dist/ service/dialogflow/conv.js:160:129)在功能。 (/srv/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:173:28) 在 Generator.next () 完成时 (/srv/node_modules/actions-on-google/dist/service/ dialogflow/dialogflow.js:19:58) at process._tickDomainCallback (internal/process/next_tick.js:229:7)

默认后备意图的代码是这样的:

app.intent('Default Fallback Intent', (conv) => {
    senddata[check_fallback] = queryResult.queryText;        
    conv.add(queryResult.queryText); //just for confirmation 
    conv.ask(qstion[2]);
});

更新 2:

代码流程:如果用户使用任何开放式响应进行响应,它将转到默认后备意图。代码如下:

//这是用户输入开放式响应的代码

app.intent('Answer3', (conv) => {
    const logout = conv.parameters.logout_survey;
    const help = conv.parameters.help_survey;
    if(help === 'can you help me' || help === 'help' || help === 'help me'){
        checkhelp_logout = "help";
        flag_log_help = 4;
        conv.ask('Would you like some help?');
    }
    else if(logout === 'logout'){
        checkhelp_logout = "logout";
        flag_log_help = 4;
        conv.ask('Did you say logout?');
    }
});

//这是处理开放式响应的代码

app.intent('Default Fallback Intent', (conv) => {
    senddata[2] = conv.body.originalDetectInetntRequest.payload.queryResult.queryText;
    //The following code is just for confirmation that what user enters the same response is stored
    conv.add(conv.body.originalDetectInetntRequest.payload.queryResult.queryText;)
    conv.ask(qstion[3]);
});

以下是错误:

错误:未设置响应。这是否在未作为对意图处理程序的承诺返回的异步调用中使用?在 DialogflowConversation.response (/srv/node_modules/actions-on-google/dist/service/actionssdk/conversation/conversation.js:237:19) 在 DialogflowConversation.serialize (/srv/node_modules/actions-on-google/dist/ service/dialogflow/conv.js:160:129)在功能。 (/srv/node_modules/actions-on-google/dist/service/dialogflow/dialogflow.js:173:28) 在 Generator.next () 完成时 (/srv/node_modules/actions-on-google/dist/service/ dialogflow/dialogflow.js:19:58) at process._tickDomainCallback (internal/process/next_tick.js:229:7)

【问题讨论】:

  • 欢迎来到 StackOverflow!如果您在问题中包含您尝试使用的代码、您遇到的任何错误以及任何其他可能有助于我们帮助您的信息,这将对我们有很大帮助。您提供的信息越多越好。见How do I ask a good question?

标签: node.js dialogflow-es actions-on-google


【解决方案1】:

在“Default Fallback Intent”的 Intent Handler 中,您需要查看 request body 中 JSON 的 queryResult.queryText 参数。

如果您使用的是actions-on-google-nodejs library,则它位于conv.body.originalDetectInetntRequest.payload.queryResult.queryText

【讨论】:

  • 在使用 queryResult.queryText 时,我收到此错误:ReferenceError: queryResult is not defined at app.intent
  • 您能否更新您的问题以显示您尝试使用的代码?
  • 我想我找到了正确的路径并更新了答案。
  • 请用您现在使用的确切来源和您遇到的确切错误更新您的问题。
  • 更新了问题。
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多