如何在 DialogFlow Response Table 卡中进行 For 循环?
How to do For-loop in DialogFlow Response Table card?
我正在开发 DialogFlow 并且能够同时使用 SimpleResponse
和 TableCard
响应。
这是我的 SimpleResponse
工作代码,我返回了一个非常大的(200 多个字符)text
消息,其中很多是静态文本。所以我想利用Table卡..
app.intent(TEST, (conv) => {
/* logic for getting
the JSON data */
var appName, status, podIP, version;
var itemIds = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].metadata.labels.app;
version = data[i].metadata.labels.version;
status = data[i].status.phase;
itemIds.push(data[i].metadata.labels.app + ........);
}
console.log("Final Response " + itemIds);
conv.ask(new SimpleResponse({
speech: 'Here is the requested data',
text: `${itemIds}`
}));
});
这是我的 Table 卡片代码,我将从 for-loop
中获取 5 到 7 个元素,但我不知道如何在 table 中使用这些值行以及如何根据 for-loop
.
中的元素数量获取动态行
app.intent(TEST, (conv) => {
/* logic for getting
the JSON data */
var appName, status, podIP, version;
var itemIds = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].metadata.labels.app;
version = data[i].metadata.labels.version;
status = data[i].status.phase;
itemIds.push(data[i].metadata.labels.app + ........);
}
console.log("Final Response " + itemIds);
conv.ask(new SimpleResponse({
speech: 'Here is the requested data',
text: `${itemIds}`
}));
conv.ask(new Table({
dividers: true,
columns: ['appName', 'version', 'status'],
rows: [
['row 1 item 1', 'row 1 item 2', 'row 1 item 3']
],
}))
});
我尝试在 for 循环中使用 con.ask(Table)
,但我想这是个坏主意。此外,我们不能有多个 conv.ask tables
.
这可能吗?我看到一些带有大 tables 的 Dialogflow 应用程序,这些 tables 是硬编码的还是动态插入的数据?
是的,可以动态生成表格。
这是实现此目标的示例代码。
let appName, status, podIP, version;
let rows = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].appName;
version = data[i].version;
status = data[i].status;
rows.push([appName, version, status]);
}
conv.ask('Here is your table');
conv.ask(new Table({
dividers: true,
columns: ['appName', 'version', 'status'],
rows: rows,
}));
我正在开发 DialogFlow 并且能够同时使用 SimpleResponse
和 TableCard
响应。
这是我的 SimpleResponse
工作代码,我返回了一个非常大的(200 多个字符)text
消息,其中很多是静态文本。所以我想利用Table卡..
app.intent(TEST, (conv) => {
/* logic for getting
the JSON data */
var appName, status, podIP, version;
var itemIds = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].metadata.labels.app;
version = data[i].metadata.labels.version;
status = data[i].status.phase;
itemIds.push(data[i].metadata.labels.app + ........);
}
console.log("Final Response " + itemIds);
conv.ask(new SimpleResponse({
speech: 'Here is the requested data',
text: `${itemIds}`
}));
});
这是我的 Table 卡片代码,我将从 for-loop
中获取 5 到 7 个元素,但我不知道如何在 table 中使用这些值行以及如何根据 for-loop
.
app.intent(TEST, (conv) => {
/* logic for getting
the JSON data */
var appName, status, podIP, version;
var itemIds = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].metadata.labels.app;
version = data[i].metadata.labels.version;
status = data[i].status.phase;
itemIds.push(data[i].metadata.labels.app + ........);
}
console.log("Final Response " + itemIds);
conv.ask(new SimpleResponse({
speech: 'Here is the requested data',
text: `${itemIds}`
}));
conv.ask(new Table({
dividers: true,
columns: ['appName', 'version', 'status'],
rows: [
['row 1 item 1', 'row 1 item 2', 'row 1 item 3']
],
}))
});
我尝试在 for 循环中使用 con.ask(Table)
,但我想这是个坏主意。此外,我们不能有多个 conv.ask tables
.
这可能吗?我看到一些带有大 tables 的 Dialogflow 应用程序,这些 tables 是硬编码的还是动态插入的数据?
是的,可以动态生成表格。 这是实现此目标的示例代码。
let appName, status, podIP, version;
let rows = [];
for (var i = 0; i < data.length; i++) {
appName = data[i].appName;
version = data[i].version;
status = data[i].status;
rows.push([appName, version, status]);
}
conv.ask('Here is your table');
conv.ask(new Table({
dividers: true,
columns: ['appName', 'version', 'status'],
rows: rows,
}));