2016-12-15 2 views
1

Я работаю над чатботом с технологией 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; 
    } 

ответ

0

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

создать массив, как в моем посте тогда, когда я instatiate мой 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

1

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

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

Это должно сделать трюк!

+0

Это подход, который я принял, хотя я думаю, что соединение будет работать только для массива, поэтому я использовал 'Array.isArray (text)' для проверки в первую очередь. Похоже, что @cpradeil работает с примером проекта, который я разыграл по совпадению, так что вот ссылка на мои обновления в функции displayMessage ... https://github.com/jthub/watson-murder-mystery/blob/ 9106438bec68c3c90504610ce4017b8e3e6b6d75/государственные/SRC/bot.js # L170 –

Смежные вопросы