如何使用对话框流程中的实现来存储用户输入

时间:2019-01-04 20:44:23

标签: dialogflow actions-on-google google-home

我正在尝试为Google Home制作一个应用程序,该应用程序可以吸引用户的注意力并告诉他们。下面是负责执行此操作的意图的index.js代码,

const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google');

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

app.intent('vitals-weight', (conv) => {
    const weight = conv.parameters['weight'];
    const weight_name = conv.parameters['weight-name'];
    conv.ask('I have recorded that your weight is, ${weight} and ${weight-name}.');

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

“ weight”和“ weight-name”是意图中分别存储重量和重量单位的实体。尝试处理用户数据时,这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

您的代码中目前存在多个错误。

首先,我假设是粘贴错误。该函数没有右括号或括号。既然您说函数正在被调用,所以我认为这实际上是在您的代码中。

您对conv.ask()的调用存在一些逻辑错误。

首先,您正在使用单引号(或撇号),但是尝试在其中进行表达式求值(${}部分)。仅使用反引号引起来进行表达式评估。

此外,您还有一个表达式${weight-name},我认为您正在尝试使用该表达式来访问weight-name参数(带连字符)。但是,您已将该参数的值分配给名为weight_name的变量(带下划线)。您也做了一件好事,因为${weight-name}被评估为“重量减去名称”,而不是其中带有连字符的变量,这是不允许的。您可能希望在那里${weight_name}

所以那行看起来应该更像

conv.ask(`I have recorded that your weight is, ${weight} and ${weight_name}.`);