Microsoft TeamsにシンプルなWebhookを送信する
Microsoft TeamsはMicrosoftが開発しているチームコラボレーションツールです。SlackのMicrosoft版です。
Teamsにはいくつかの拡張機能(コネクタ)が存在し、Webhook機能もコネクタとして提供されています。みんな大好きWebhook。Webhookを利用してTeamsにメッセージを投稿する必要性に駆られたため、試してみます。
WebhookコネクタをTeamsに追加する
TeamsにWebhookコネクタを追加するには、チャネルの右にある「…」をクリックし、コネクタを選択します。追加可能なコネクタ一覧が表示されるので、「Incoming Webhook」を選択すると初回はインストール画面になります。ためらわずにインストールしましょう。
インストールまたは追加をクリックするとWebhookの設定画面になります。Webhookの名前と画像が設定できます(名前も画像も後から変更可能)。
名前を入力して作成を押すとWebhookを送信するためのURLが表示されます。
テキストを送信する
TeamsのWebhookにはシンプルにテキストのみのものとリッチなカード形式のものと、二種類の形式があります。まずはシンプルなテキストのみのパターンを送信してみます。
。。。といってもシンプルな形式のものは text
プロパティを含めたJSONを送信するだけです。PowerShellから送信するサンプルです。
Invoke-WebRequest ` -Method POST ` -ContentType "application/json" ` -Body "{""text"": ""sample""}" ` -Uri https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx StatusCode : 200 StatusDescription : OK Content : 1 RawContent : HTTP/1.1 200 OK Cache-Control: no-cache Pragma: no-cache request-id: 0f6153f8-fe77-4147-bbe3-e5367317b80c X-CalculatedBETarget: OSAPR01MB2033.jpnprd01.prod.outlook.com X-BackEndHttpStatus: 200 X… Headers : {[Cache-Control, System.String[]], [Pragma, System.String[]], [request-id, System.String[]], [X-Cal culatedBETarget, System.String[]]…} Images : {} InputFields : {} Links : {} RawContentLength : 1 RelationLink : {}
Markdown形式を送信する
シンプルなテキスト形式はMarkdownがサポートされているため、太字や斜体といった表現ができます。
Invoke-WebRequest ` -Method POST ` -ContentType "application/json" ` -Body "{""text"": ""This is message. **Bold** *Italic*""}" ` -Uri https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
改行を送信する
テキストに改行を含めたい場合、ただ改行文字列の \n
を送信しても改行されません。改行文字列の前にスペース二つを含めます。Markdownなので。
Invoke-WebRequest ` -Method POST ` -ContentType "application/json" ` -Body "{""text"": ""This is message. **Bold** *Italic* \nSecond line""}" ` -Uri https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ちょっとリッチなマークダウンを送信する
最後にタイトルとリストを含むマークダウンを送信してみた例です。タイトル行の後ろにちゃんと改行を入れてあげないと、全てフォントサイズが大きくなるので注意が必要です。
Invoke-WebRequest ` -Method POST ` -ContentType "application/json" ` -Body "{""text"": ""# Title \nThis is message. \n\n - List 1\n - list2\n - list3""}" ` -Uri https://outlook.office.com/webhook/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx