【问题标题】:How to display several messages on screen with Watson Conversation如何使用 Watson Conversation 在屏幕上显示多条消息
【发布时间】:2016-12-15 09:40:34
【问题描述】:

我正在开发一个使用 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 始终 while (array[i] != undefined) 存储我的消息。但我的错误在于函数 displayMessage 中的显示 - 我不知道如何显示多条消息。我试过这个:

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

和我的声明中一样的循环,但它不起作用。

有人可以帮助我吗?

谢谢

编辑 n°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;
    }

【问题讨论】:

    标签: javascript ibm-cloud watson-conversation


    【解决方案1】:

    有一个更简单的方法。 JS 允许你“加入”一个数组中的所有元素:

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

    这应该可以解决问题!

    【讨论】:

    • 这就是我采用的方法,尽管我认为 join 仅适用于数组,所以我先使用 Array.isArray(text) 进行检查。看起来@cpradeil 正在使用我巧合分叉的示例项目,所以这里是我在displayMessage 函数中更新的链接...github.com/jthub/watson-murder-mystery/blob/…
    【解决方案2】:

    我找到了一个解决方案,一个小野蛮人,但它目前正在工作,所以如果有人有更好的解决方案,我会接受它。

    我像在我的帖子中一样创建一个数组,然后当我实例化我的 bubbber.innerHTML 时我会这样做

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

    因为我的数组总是高于 7

    【讨论】:

      猜你喜欢
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多