您如何在实现代码中处理给定名称参数?

How do you address given name parameter in fulfillment code?

我在 Dialogflow 网络界面中创建了一个意图。它自动检测到一个名为 given-name 的参数,在 Web 界面中将其列为 $given-name。我试图在网络界面提供的履行内联编辑器中解决 $given-name,但我没有取得任何成功。

我试过将参数名称更改为驼峰式大小写,也尝试使用下划线替换连字符,但似乎都不起作用。

这是来自 dialogflow fulfillment 内联编辑器的代码片段:

'use strict';

// Import the Dialogflow module from the Actions on Google client library.
const {dialogflow} = require('actions-on-google');

// Import the firebase-functions package for deployment.
const functions = require('firebase-functions');

// Instantiate the Dialogflow client.
const app = dialogflow({debug: true});

// Can't address given-name, intentionally used an underscore 
app.intent('run demo', (conv, {given_name}) => {
conv.close('Hi ' + given_name +'! This is the demo you asked me to run!');
});

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

我想知道在代码部分解决给定名称参数的正确方法app.intent('run demo', (conv ...);

解决方案

我找到的一个解决方案是这段代码:

app.intent('run demo', (conv, params) => {
    conv.close('Hi ' + params['given-name'] +'! This is the demo you asked me to run!');
});

说明

app.intent('run demo',...(conv, params) => {...}实际上是一个匿名的回调函数(aka anonymous callback function)。 convparams 被 arguments/parameters 传递给回调函数。函数的定义似乎在 API 的这一页上:Callable。它统计可以传入的 parameters/arguments 可以是 convparamsargumentstatus

最后的想法

关于 google 操作的 API 文档帮助了:actions on google api reference link