如何在 MS Teams 的 Markdown 中插入换行符?

17
当我在 MS Teams 中使用 markdown 格式 (```) 时,如何在字符串中创建换行?当人类使用 markdown 格式键入时,按 Enter 会产生一个换行符。当我将带有 <br>\n\r\n 的文本字符串发送到连接器时,它不会创建新行。我发现我可以转义 markdown,输入 <br>,然后再次输入 markdown,但这样会重新格式化每一行以去除空格。

那么,我如何创建换行并保持我的间距?

如果这很重要,我正在使用 pymsteams 连接器。

编辑:添加代码示例


那么,我如何创建换行并保持我的间距?
如果这很重要,我正在使用 pymsteams 连接器。
编辑:添加代码示例
import pymsteams
msg = pymsteams.connectorcard('...')
txt = '``` some text \n second line ```'
msg.text(txt)
msg.send()

我也尝试过txt = '``` 一些文本\r\n第二行 ```'txt ='``` 一些文本<br>第二行```',但这3个选项中没有一个在“一些文本”和“第二行”之间插入换行符。

2个回答

38

如果你只是想发送一个包含Markdown文本的连接器卡片,那么没有必要将文本用三个反引号括起来(除非你特别想要预格式化的文本)。我们会自动将连接器卡片中的文本视为Markdown格式,除非你将markdown属性设置为false。

在Markdown中添加换行符,可以在行末加上3个空格+换行符。例如:

msg.text("Line 1   \nLine 2")

由机器人发送的连接器卡:

如果您添加了那些三重反引号以获取预格式化文本,则需要将反引号放在自己的行上以允许多行文本。例如:

msg.text("```\nLine 1\nLine 2\n```")

由Connector发送的连接器卡:

如果您正在开发一个连接器或使用传入的Webhook连接器,它使用不同的解析器,该解析器不会将 "```" Markdown 转换为 <pre> 标签。最好回退到HTML,就像下面的Bill建议的那样。例如:

msg.text("<pre>Line 1\nLine 2</pre>")

HTML标签可以在<pre>元素内部工作,因此就像您发现的那样,这是等效的:

msg.text("<pre>Line 1<br>Line 2</pre>")

感谢您的帮助。如果我发布到传入的Webhook,这是真的吗?我刚刚通过Webhook测试了您的示例,并且我发现它们没有自动格式化为Markdown,也不能在它们自己的行上使用反引号来在它们之间换行 :( - user3450049
1
哦,好问题!我以为这是一个机器人将连接器卡片发布到对话中。传入的Webhooks走不同的路径,因此它的行为可能会有所不同。在这种情况下,使用简单的HTML标签可能更容易,例如用br表示简单折行,而用pre表示预格式化文本。内置的连接器(例如Bing News、Twitter)使用简单的HTML标记。 - Adrian Solis
这个有效!谢谢。你可以把它作为答案并且我会接受它。<pre>第一行<br>第二行</pre> - user3450049
太棒了!我编辑了我的答案,以便注明机器人发送的卡片和连接器之间的区别。 - Adrian Solis
使用<pre>Code</pre>解决了我的问题,但是有人知道下划线的问题吗? - Wasif Khan

5

您没有提供任何代码,因此很难确定您的具体问题。但如果我将卡片中的text值设置为以下内容:

"text": "text": "There is a problem with Push notifications.<br><br>They don't seem to be picked up by the connector."

这是它的渲染效果:

输入图像描述


由于他们没有提供任何代码,这个问题是不相关的,你应该投票关闭它,而不是回答它。是否应该建议关于不相关话题的问题? - Rob
我试图在Markdown中工作(用三个反引号```括起来的字符串) - user3450049
2
无论是否包含代码,这都是一个非常相关的问题。 - Konrad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接