如何在Dialogflow的实现中使用意图参数?

赫克托·巴特

我是Dialogflow的新手,并且对Javascript没有过多的经验,如果问题听起来很简单,对不起!我一直在尝试构建一个计算器来使用用户指定的半径来查找圆的面积,但是,我正在努力使用将半径保持在实现中的参数用于计算。每当我查看履行响应时,都会看到以下错误:

{
  "error": "conv.parameters is not a function"
}

我非常感谢对代码的任何建议更改,这些更改可以帮助我完成此工作。谢谢!

我的履行代码:

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

const WELCOME_INTENT = 'Default Welcome Intent';
const FALLBACK_INTENT = 'Default Fallback Intent';
const CIRCLE_AREA_RADIUS_INTENT = 'CircleAreaRadius';
const UNIT_LENGTH_RADIUS = 'unit-length';

const app = dialogflow();

app.intent(WELCOME_INTENT, (conv) => {
    conv.ask("Welcome to Circle Calculator! What can I help you with?");
});

app.intent(FALLBACK_INTENT, (conv) => {
    conv.ask("Sorry, I didn't understand. What would you like me to do?");
});

app.intent(CIRCLE_AREA_RADIUS_INTENT, (conv) => {
    const radius = conv.parameters(UNIT_LENGTH_RADIUS);
    var area = Math.pow(radius, 2) * Math.PI;
    conv.ask(`The area of the circle is ${area}.`);
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
尼克·费尔克

intent参数是可以在您的函数中使用的第二个参数:

app.intent(CIRCLE_AREA_RADIUS_INTENT, (conv, {unit-length} ) => {
    const radius = params[UNIT_LENGTH_RADIUS]
    const area = Math.pow(radius, 2) * Math.PI
    conv.ask(`The area of the circle is ${area}.`)
})

您还可以通过对象销毁来简化此过程。如果在Dialogflow中将参数重命名为radius

app.intent(CIRCLE_AREA_RADIUS_INTENT, (conv, {radius}) => {
    const area = Math.pow(radius, 2) * Math.PI
    conv.ask(`The area of the circle is ${area}.`)
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章