我正在研究DialogFlow,并且可以同时使用SimpleResponse
和TableCard
响应。
这是我的SimpleResponse
工作代码,好吧,我返回的消息非常大(超过200个字符)text
,其中很多都是静态文本。所以我想使用桌卡。
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}`
}));
});
这是我的表格卡片代码,我将从for-loop
中获得5到7个元素,而且我不知道如何在表格行中使用这些值以及如何基于数字获取动态行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
。
这甚至可能吗?我看到一些带有大表的Dialogflow应用程序,这些表是硬编码的还是动态插入的数据?
答案 0 :(得分:1)
是的,可以动态生成表。 这是实现此目标的示例代码。
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,
}));