首页 > 解决方案 > 如何在 dialogflow fullfilment 中为返回用户管理自定义?

问题描述

根据 action-on-google 开发者平台上的设计提示,我正在尝试为返回 Google Assistant Voice 应用程序的用户提供自定义欢迎响应。 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);

标签: dialogflow-esactions-on-google

解决方案


看起来欢迎 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!...');
    }
  }

永远不会被调用。不清楚为什么你有这个内部功能,因为它不是必需的。你只需要在外部的那个函数的主体。所以它可能看起来像这样,也许:

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!...');
  }
});

推荐阅读