我在尝试让 AWS Lambda 函数在运行 SQL 查询时成功输出一系列 HTML 链接时遇到问题。
private string GetEventSearchResults(ILambdaContext context, List<Event> events, string CustomerNumber)
{
var result = string.Empty;
var link = string.Empty;
if (events.Count > 0)
{
result = $"Events for {CustomerNumber}:";
foreach (var evt in events)
{
link = "http://localhost/event/" + $"{evt.ID}";
result += $"<br><a href=\"{link}\">Event: {evt.ID} - Status: {evt.Status}</a>";
}
}
else
{
result = "No Data found matching your query";
}
return result;
}
当我的 Lambda 函数作为 LexResponse 调用此方法时,
replyMessage = GetEventSearchResults(context, eventList, query.CustomerNumber);
return Close(
sessionAttributes,
"Fulfilled",
new LexResponse.LexMessage
{
ContentType = "PlainText",
Content = replyMessage
}
);
然后,该响应通过 Javascript 函数呈现在我的 HTML 页面中。呈现响应的 Javascript 的相关部分:
function showResponse(lexResponse) {
var conversationDiv = document.getElementById('conversation');
var responsePara = document.createElement("P");
responsePara.className = 'lexResponse';
if (lexResponse.message) {
responsePara.appendChild(document.createTextNode(lexResponse.message));
responsePara.appendChild(document.createElement('br'));
}
if (lexResponse.dialogState === 'ReadyForFulfillment') {
responsePara.appendChild(document.createTextNode(
'Ready for fulfillment'));
// TODO: show slot values
}
conversationDiv.appendChild(responsePara);
conversationDiv.scrollTop = conversationDiv.scrollHeight;
}
然而,Lex 机器人显示的输出如下所示:
Lex 机器人输出
谁能帮我了解到底发生了什么? Lex 响应的内容类型是否对此负责? (Lex Response 只有纯文本和 SSML,所以我无法更改)
另外,如果可能的话,任何人都可以解释一下如何解决这个问题吗?谢谢!