【问题标题】:Facebook bot messages not showing blank linesFacebook bot 消息未显示空行
【发布时间】:2019-05-30 07:03:35
【问题描述】:

我使用 Microsoft bot 框架创建了一个聊天机器人,并将其部署在 Azure 上,并将其与我的 Facebook 页面链接。一切正常,但有一个小问题,机器人发送的其中一条消息包含 2-3 行不同的行,我想显示这 3 行用空行分隔,所以我添加了转义序列“\n\行之间的 n"。

"Line1\n\nLine2\n\nLine3"

当我在 Azure 网络聊天中测试它时效果很好,但 Facebook 聊天窗口不显示空白行,有人可以帮我解决这个问题吗?在此先感谢。

目前面临显示消息喜欢

Line1
Line2
Line3

我想显示为

Line 1

Line 2

Line 3 

【问题讨论】:

  • 尝试在这些空白行的开头放置一个空格。如果这也不起作用,请尝试使用可显示字符(如点或下划线)得到的结果。
  • 您是否尝试将您的\n\n 翻倍?我知道这看起来很奇怪,但我还发现您需要在某些频道上将\n 加倍,因此对于 FB Messenger,您可能必须将两者都加倍。在这种情况下,您可以通过检查 channelId 来强制执行此操作,以确保您在 FB 中拥有 \n\n\n\n,在其他频道中拥有 \n\n
  • @NicolasR,是的,我试过了,没有任何区别

标签: facebook azure botframework chatbot


【解决方案1】:

您的消息文本正在通过一个相当激进的 Markdown 解析器运行,该解析器剥离了额外的换行符。对于如何处理这个问题,您有几种选择。

选项 1

如果您将文本设置为频道数据而不是实际的活动文本,它将不会通过 Markdown 解析器运行:

var text = "Line1\n\nLine2\n\nLine3";
var activity = turnContext.Activity.CreateReply();
activity.ChannelData = new { text };
await turnContext.SendActivityAsync(activity);

选项 2

如果将文本格式设置为纯文本,则文本不会通过 Markdown 解析器运行:

var text = "Line1\n\nLine2\n\nLine3";
var activity = turnContext.Activity.CreateReply(text);
activity.TextFormat = TextFormatTypes.Plain;
await turnContext.SendActivityAsync(activity);

选项 3

如果您将频道数据用于其他用途并且不想将文本格式设置为纯文本,则可以始终使用<br/> 而不是\n

var text = "Line1<br/><br/>Line2<br/><br/>Line3";

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2017-06-10
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2017-08-26
    • 2016-09-05
    相关资源
    最近更新 更多