Как отобразить несколько сообщений на экране с помощью Watson Conversation

Я работаю над чат-ботом с технологией Watson, а точнее с разговорным сервисом. Это мое первое приложение на Bluemix и с javascript, и у меня возникла проблема с отображением сообщения моего чат-бота. Я объясняю: в настоящее время у меня есть этот код:

var text = response.output.text[0]; // only display first value

И моя функция displayMessage

function displayMessage(text, user) {

        var chat = document.getElementById('chatBox');
        var bubble = document.createElement('div');
        bubble.className = 'message';  // Wrap the text first in a message class for common formatting

        // Set chat bubble color and position based on the user parameter
        if (user === watson) {
            bubble.innerHTML = "<div class='bot'>" + text + "</div>";
        } else {
            bubble.innerHTML = "<div class='user'>" + text + "</div>";
        }

        chat.appendChild(bubble);
        chat.scrollTop = chat.scrollHeight;  // Move chat down to the last message displayed
        document.getElementById('chatMessage').focus();

        return null;
}

В настоящее время проблема заключается в том, что функция отображает только мое первое значение, но в некоторых случаях мне нужно отобразить n сообщений (n всегда ‹ 10). Поэтому я думаю о создании массива [10] для хранения моего сообщения с while (array[i] != undefined). Но моя ошибка с отображением в функции displayMessage - я не знаю, как отображать несколько сообщений. Я пробовал это:

bubble.innerHTML = "<div class='bot'>" + tab[tmp] + "</div>";

и цикл, такой же, как в моем объявлении, но это не сработало.

Кто-нибудь может мне помочь?

Спасибо

Редактировать № 1 Чтобы сообщить вам, что это мой первый цикл при создании моей вкладки:

var tab = new Array(response.output.text[0]); // array with my different text
        var tmp = 1;
        while(response.output.text[tmp] != undefined){
            tab[tmp] = response.output.text[tmp]; // only display first value if second is null
            tmp = tmp + 1;
    }

person cpradeil    schedule 15.12.2016    source источник


Ответы (2)


Есть гораздо более простой подход. JS позволяет «присоединить» все элементы массива:

text = response.output.text.join(" ");

Это должно делать свое дело!

person Dan O'Connor    schedule 15.12.2016
comment
Это подход, который я использовал, хотя я думаю, что соединение будет работать только для массива, поэтому я использовал Array.isArray(text) для проверки в первую очередь. Похоже, что @cpradeil работает с примером проекта, который я случайно разветвил, поэтому вот ссылка на мои обновления в функции displayMessage... github.com/jthub/watson-murder-mystery/blob/ - person James Taylor; 15.12.2016

Я нашел решение, немного дикое, но в настоящее время оно работает, поэтому, если у кого-то есть лучшее решение, я возьму его.

Я создаю массив, как в моем посте, а затем, когда я создаю свой bubber.innerHTML, я делаю

bubble.innerHTML = "<div class='bot'>" + tab[0] + tab[1]+ tab[2] + tab[3] + tab[4] +tab[5] + tab[6]+ tab[7]+ "</div>";

Потому что мой массив всегда выше 7

person cpradeil    schedule 15.12.2016