How to insert newline into MS Teams markdown?

user3450049 picture user3450049 · Oct 4, 2018 · Viewed 7.7k times · Source

When I enter markdown format in MS Teams (```), how do I create a newline in a string? When a human types in markdown format, pressing Enter results in a newline. When I send a string with <br>, \n or \r\n in text to the connector, it does not create a newline. I've found that I can escape markdown, enter a <br>, and enter markdown again, but then it reformats each line to remove whitespace.

So how can I create a newline and maintain my spacing?

If this matters, I'm using pymsteams connector.

Edit: adding code example

import pymsteams
msg = pymsteams.connectorcard('...')
txt = '``` some text \n second line ```'
msg.text(txt)
msg.send()

I've also tried txt = '``` some text \r\n second line ```' and txt = '``` some text <br> second line ```', but none of the 3 options insert a newline between "some text" and "second line".

Answer

Adrian Solis picture Adrian Solis · Oct 6, 2018

If you're trying to just send a connector card w/ text in markdown, there's no need to enclose the text in triple backticks (unless you specifically want preformatted text). We automatically treat the text in a connector card as markdown, unless you set the markdown property to false.

To add line break in markdown, end the line with 3 spaces + linebreak. For example:

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

Connector cards sent by a bot:

If you added those triple backticks to get preformatted text, then you need to place the backticks on their own lines to allow multiline text. For example:

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

Connector cards sent by a Connector:

If you're developing a connector or using the incoming webhook connector, that uses a different parser that doesn't convert "```" markdown to a <pre> tag. It's best to just fall back to HTML, as Bill suggested below. For example:

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

HTML tags work inside a <pre> element, so as you found out, this is equivalent:

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