如何管理对话框流实现中的回头用户定制?

时间:2019-04-25 14:56:25

标签: dialogflow actions-on-google

按照Google行动上的开发人员平台上的设计提示,我尝试为返回Google Assistant语音应用程序的用户提供自定义的欢迎回复。 https://developers.google.com/actions/design/tips

要继续,我首先在Fullfilment模式下在Dialogflow中切换“我的默认欢迎”意图。然后在Firebase上部署我的代码。当我请求名称许可时,它运行良好,但是当我尝试输入“ AppRequest.User lastSeen”时,我的应用程序关闭了吗? 也许您知道我在代码中遗漏的内容?

'use strict';

const {
  dialogflow,
  Permission,
} = require('actions-on-google');

const functions = require('firebase-functions');

const app = dialogflow({debug: true});

app.intent('Default Welcome Intent', (conv) => {
  const welcome = (conv) => {
  if (conv.user.last.seen) {
    conv.ask(`Hey you're back...`);
  } else {
    conv.ask('Welcome to World Cities Trivia!...');
  }
}});

// Set the DialogflowApp object to handle the HTTPS POST request.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

2 个答案:

答案 0 :(得分:1)

您应该从conv对象中读取它,它表示会话中的一个转弯,并暴露了各个请求的属性:conv.user.last

答案 1 :(得分:1)

似乎您的Intent Handler中的代码实际上没有执行任何操作。

您设置了处理程序

app.intent('Default Welcome Intent', (conv) => {
  ...
});

但是在您的处理程序中,您创建了另一个函数

  const welcome = (conv) => {
    if (conv.user.last.seen) {
      conv.ask(`Hey you're back...`);
    } else {
      conv.ask('Welcome to World Cities Trivia!...');
    }
  }

永远不会被调用。目前尚不清楚为什么需要此内部函数,因为它不是必需的。您只需要在外部的 that 函数的主体即可。这样看起来可能像这样:

app.intent('Default Welcome Intent', (conv) => {
  if (conv.user.last.seen) {
    conv.ask(`Hey you're back...`);
  } else {
    conv.ask('Welcome to World Cities Trivia!...');
  }
});