【问题标题】:Rendering HTML in Amazon lex response from Lambda在来自 Lambda 的 Amazon lex 响应中呈现 HTML
【发布时间】:2018-05-02 01:00:05
【问题描述】:

我是 Amazon Lex 的新手。我正在尝试将超链接作为从 Lambda 函数到 Amazon Lex 的“内容”响应的一部分返回。基本上我做了以下事情:

    var message = {
        'contentType': 'PlainText', 
        'content': 'We offer x,y,z. For more information, visit our <a href="www.xyz.com">website</a>'
    }

这会将整个响应作为字符串返回,而我希望在聊天机器人上显示之前呈现 html 部分。我不想在我的回复下方使用 responseCard。是否可以在返回的内容中包含超链接? 谢谢

【问题讨论】:

    标签: aws-lambda amazon-lex


    【解决方案1】:

    请注意,这是为了在 HTML 页面上呈现对话

    我在开发 HTML 页面以呈现用户和聊天机器人之间的聊天时遇到了同样的问题。我设法使用以下 Javascript 函数解决了它:

    function showResponse(lexResponse) {
    
        var conversationDiv = document.getElementById('conversation');
        var responsePara = document.createElement("P");
        responsePara.className = 'lexResponse';
        if (lexResponse.message) {
            var message = lexResponse.message.replace(/"/g, '\'');
            responsePara.innerHTML = message;               
            responsePara.appendChild(document.createElement('br'));
        }           
        conversationDiv.appendChild(responsePara);
        conversationDiv.scrollTop = conversationDiv.scrollHeight;
    }
    

    作为参考,您可以参考我就同一问题提出的问题:LexResponse output does not understand HTML data

    【讨论】:

    • 感谢您的回复。所以,基本上你替换了整个消息中的双引号。是对的吗?我做了以下事情: var message = { 'contentType': 'PlainText', 'content': '我们提供 x,y,z。欲了解更多信息,请访问我们的网站' } message.replace(/"/g, '\'') 但它不起作用
    • 您是否将消息附加到 HTML 元素?如果您查看我发布的代码,我创建了一个 HTML

      标记,我将消息(已替换引号)作为 innerHTML 附加到该标记。这就是将响应转换为链接的原因。单独替换双引号并不能做到这一点。

    • 非常感谢!这对我有用。非常感谢您对此提供的帮助。
    【解决方案2】:

    内容的呈现是客户的工作。 Lex 的测试控制台窗口不支持超链接渲染。
    但是,如果您将聊天机器人部署到 facebook 或 slack 等频道,它会正常工作。

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 2019-02-05
      • 2021-10-23
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多