Как выполнить цикл For в таблице ответов DialogFlow? - PullRequest
0 голосов
/ 09 мая 2019

Я работаю над 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}`
    }));

});

Это мой код для карточки стола, я получу от 5 до 10 элементов из for-loop и не могу понять, как использоватьэти значения в строках таблицы и как получить динамические строки на основе количества элементов из 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']
        ],
    }))

});

Я пытался использовать con.ask(Table) внутри цикла for, но это была плохая идея, я думаю,Более того, мы не можем иметь несколько conv.ask tables.

Возможно ли это вообще?Я вижу некоторые приложения Dialogflow с большими таблицами. Эти таблицы жестко запрограммированы или данные динамически вставляются?

1 Ответ

1 голос
/ 15 мая 2019

Да, генерация таблиц возможна динамически. Вот пример кода для достижения этой цели.

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,
}));
...