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".
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>")