先日、Python から Microsoft Teams へ投稿するというメモを書きましたが、pymsteams を使うと Python から Microsoft Teams の Incoming Webhook へ簡単にメッセージを送信出来ます。 今回は「pymsteams を使ってメッセージ送信すると、実際の Microsoft Teams 上ではどう見えるか?」を試してみました。
目次
- 目次
- テキストのみ
- テキスト無し (エラーになる)
- タイトルとテキスト
- サマリーのみ
- テキストを改行する
- リンクを追加する
- リンクボタンを追加する
- セクションを追加する
- アクションを追加する
- Markdown
テキストのみ
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("Message Body") message.send()
テキスト無し (エラーになる)
この場合はエラーになり、メッセージを投稿出来ません。 メッセージには text または summary が必須だそうです。
import pymsteams message = pymsteams.connectorcard(<URL>) message.title("Message Title") message.send()
実際のエラーメッセージは以下の通りです。
# python no-text.py Summary or Text is required.
タイトルとテキスト
import pymsteams message = pymsteams.connectorcard(<URL>) message.title("Message Title") message.text("Message Body") message.send()
サマリーのみ
このままでは文字が見えません… 「リンクボタンだけを設置したいが、text も summary も無いとエラーになってしまう」という場合には summary を設定することでリンクボタンだけ、置かれているように見せることが可能です。
import pymsteams message = pymsteams.connectorcard(<URL>) message.summary("Message Summary") message.send()
テキストを改行する
改行は少なくても二通りの方法で実現出来ました。 ただ、失敗例もあるので、やや注意が必要です。
失敗例
「\r\n」のように「\r」と「\n」の間を繋げてしまうと改行しません。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("1st line.\r\n2nd line.\r\n3rd line.") message.send()
成功例 1 (「\r \n」を使う)
改行させたい場合は「\n \n」のように「\r」と「\n」の間にスペースを入れます。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("1st line.\r \n2nd line.\r \n3rd line.") message.send()
成功例 2 (br タグを使う)
別の手段として br タグで改行させることも出来ます。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("1st line.</br>2nd line.</br>3rd line.") message.send()
リンクを追加する
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("[Google](https://www.google.com)") message.send()
リンクボタンを追加する
ここでは「text の次に addLinkButton」の順で追加していますが、text より先に addLinkButton しても、リンクボタンは必ずメッセージの最下部に設置されるようです。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("Add a link button.") message.addLinkButton("Jump to Google.", "https://www.google.com") message.send()
セクションを追加する
ここでは 2 つ、セクションを追加していますが、もっと多くのセクションを追加することも可能です。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text("Multiple sections.") section1 = pymsteams.cardsection() section1.text("1st section.") message.addSection(section1) section2 = pymsteams.cardsection() section2.text("2nd section.") message.addSection(section2) message.send()
アクションを追加する
アクションを 1 つ、追加する
アクションを 1 つだけ、追加した場合は以下の見え方になります。 後述する「複数アクションを追加した場合」と異なり、最初から内容が展開されて表示されます。
import pymsteams message = pymsteams.connectorcard(<URL>) action1 = pymsteams.potentialaction(_name = "Add a comment") action1.addInput("TextInput", "comment", "Add a comment here", False) message.addPotentialAction(action1) message.summary("Potential Action Example") message.send()
アクションを複数、追加する
アクションを複数追加した場合は選択式になります。
import pymsteams message = pymsteams.connectorcard(<URL>) action1 = pymsteams.potentialaction(_name = "Add a comment") action1.addInput("TextInput", "comment", "Add a comment here", False) action1.addAction("HttpPost","Add Comment","https://example.com") message.addPotentialAction(action1) action2 = pymsteams.potentialaction(_name = "Set due date") action2.addInput("DateInput","dueDate","Enter due date") action2.addAction("HttpPost","save","https://example.com") message.addPotentialAction(action2) action3 = pymsteams.potentialaction(_name = "Change Status") action3.choices.addChoices("In progress","0") action3.choices.addChoices("Active","1") action3.addInput("MultichoiceInput","list","Select a status",False) action3.addAction("HttpPost","Save","https://example.com") message.addPotentialAction(action3) message.summary("Potential Action Example") message.send()
Markdown
ヘッダーやリスト記法等を試してみたのですが、Incoming Webhook から Markdown を綺麗に表現するのは、かなり難しいように感じました。 太字、斜体、リンク程度であれば簡単に利用可能でした。
import pymsteams message = pymsteams.connectorcard(<URL>) message.text(\ "This is *Bold*. </br>" +\ "This is _Italic_. </br>" +\ "Thin is [Link](https://www.google.com)</br>") message.send()