我已经使用Microsoft bot框架创建了一个聊天机器人,并将其部署在Azure上,并将其链接到我的Facebook页面。一切工作正常,但有一个小问题,即漫游器发送的消息之一包含2-3条不同的行的组合,我想显示由空行分隔的那3行,因此我添加了转义序列“ \ n \行之间是n”。
"Line1\n\nLine2\n\nLine3"
当我在Azure Web聊天中测试它但Facebook聊天窗口不显示空白行时,此方法很好用,有人可以帮助我吗?谢谢!
当前的头像显示消息类似
Line1
Line2
Line3
我想显示为
Line 1
Line 2
Line 3
答案 0 :(得分:0)
您的消息文本正在通过一个相当激进的Markdown解析器运行,该解析器正在剥离额外的换行符。您可以选择几种处理方式。
如果将文本设置为频道数据而不是实际活动文本,则不会通过Markdown解析器运行该文本:
var text = "Line1\n\nLine2\n\nLine3";
var activity = turnContext.Activity.CreateReply();
activity.ChannelData = new { text };
await turnContext.SendActivityAsync(activity);
如果将文本格式设置为纯文本,则文本将不会通过Markdown解析器运行:
var text = "Line1\n\nLine2\n\nLine3";
var activity = turnContext.Activity.CreateReply(text);
activity.TextFormat = TextFormatTypes.Plain;
await turnContext.SendActivityAsync(activity);
如果您将通道数据用于其他用途,并且不想将文本格式设置为纯文本,则可以始终使用<br/>
代替\n
:
var text = "Line1<br/><br/>Line2<br/><br/>Line3";