Webhook と curl コマンドを使って Teams チャネルへメッセージ送信する方法について紹介します。
最初に、Microsoft Teams チャネルのポスト Webhook URL を生成する手順、について記載します。
NOTE
Workflows アプリが Microsoft Teams 組織に追加されていない場合は、[アプリ]セクションで見つけ(またはリンクをたどって)、[追加]をクリックします。
Microsoft Teams で Webhook URL を生成するには、次の手順に従います。
1. Microsoft Teams を開き、通知を受信するチャネルに移動します。
2. チャネル名の横にある 3 つのドット メニュー (...) をクリックし、ドロップダウン メニューから [ワークフロー] を選択します。

3. [ワークフロー] ウィンドウで、「Webhook リクエストを受信したときにチャネルに投稿する」テンプレートを検索してクリックします。

4. ワークフローを初めて作成する場合は、必要な権限を受け入れてます。

5. 必要に応じて、ワークフローの名前を変更して、他のユーザーが理解を深められるように、明確でわかりやすい名前を付けることができます。その後、[次へ] をクリックします。

6. 適切な Microsoft Teams チームとチャネルが選択されていることを確認します。

7. 「ワークフローを追加」ボタンをクリックして、新しいワークフローの作成を送信します。
8. 生成された Webhook URL をコピーします。このURLはWebhookに固有であり、特定のチャネルにメッセージを送信するために使用されます。

9. Webhook URLがコピーされたら、[完了]ボタンをクリックしてワークフローの作成を終了します。
最初のサンプルとして "Hello World" というテキストを Teams 上に表示する例を紹介します。
bash のシェルスクリプトで curl コマンドを使って実現します。
| OS : | Ubuntu24.04, | WSL version 2.2.4.0 |
サンプルソースコードを以下に記載します。
メッセージ送信先の Teams チャネルで作成したワークフローの "Webhook URL" を下記ソースコードの WEBHOOK_URL 内容に張り付けて実行するだけです。
["webhook_test1.sh"]
#!/usr/bin/bash
# 変数設定(適宜書き換え)
WEBHOOK_URL="https://prod-29.japaneast.logic.azure.com:443/workflows/4f8b************************d787/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=9OPr****************rE5vGEIHsT_in9W****L3I0"
# 投稿テスト
curl -s -i -H "Content-Type: application/json" --data-binary @- "$WEBHOOK_URL" << '__EOF__'
{
"type":"message",
"attachments":[
{
"contentType":"application/vnd.microsoft.card.adaptive",
"contentUrl":null,
"content":{
"$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
"type":"AdaptiveCard",
"version":"1.4",
"body":[
{
"type": "TextBlock",
"text": "Hello World"
}
]
}
}
]
}
__EOF__

注意
この文書を表記時点、version を "1.4" にする必要がありました。
例えば "1.5" にするとエラーになりましたのでご注意ください。
最初のサンプルでは画面左側のみへの表示となりました。メッセージ送信する情報量が増えてきた場合は全幅で表示したくなりますので、この辺を修正していきます。
| OS : | Ubuntu24.04, | WSL version 2.2.4.0 |
"msTeams" 専用のプロパティ指定を使って "width" を "full" に指定するだけで対応できます。
["webhook_test2.sh"]
#!/usr/bin/bash
# 変数設定(適宜書き換え)
WEBHOOK_URL="https://prod-29.japaneast.logic.azure.com:443/workflows/4f8b************************d787/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=9OPr****************rE5vGEIHsT_in9W****L3I0"
# 投稿テスト
curl -s -i -H "Content-Type: application/json" --data-binary @- "$WEBHOOK_URL" << '__EOF__'
{
"type":"message",
"attachments":[
{
"contentType":"application/vnd.microsoft.card.adaptive",
"contentUrl":null,
"content":{
"$schema":"http://adaptivecards.io/schemas/adaptive-card.json",
"type":"AdaptiveCard",
"version":"1.4",
"msTeams": {
"width": "full"
},
"body":[
{
"type": "TextBlock",
"text": "Hello World"
}
]
}
}
]
}
__EOF__

期待通りに表示してくれるようになりました。
実際に活用することを想定したサンプルを例示したいと思います。
ここでは下記のような要素を追加してみます。
| OS : | Ubuntu24.04, | WSL version 2.2.4.0 |
詳細はサンプルコードを参照ください。
["webhook_test3.sh"]
#!/usr/bin/bash
# 変数設定(適宜書き換え)
WEBHOOK_URL="https://prod-29.japaneast.logic.azure.com:443/workflows/4f8b************************d787/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=9OPr****************rE5vGEIHsT_in9W****L3I0"
# 投稿テスト
curl -s -i -H "Content-Type: application/json" --data-binary @- "$WEBHOOK_URL" << '__EOF__'
{
"type": "Application/JSON",
"attachments": [
{
"contentType": "object",
"content": {
"type": "AdaptiveCard",
"version": "1.4",
"msTeams": {
"width": "full"
},
"body": [
{
"type": "TextBlock",
"text": "【通知】新しい記事を公開",
"size": "Large",
"isSubtle": false,
"wrap": true,
"weight": "Bolder",
"spacing": "None",
"color":"Warning"
},
{
"type": "TextBlock",
"text": "新しい記事を公開しました。",
"isSubtle": false,
"wrap": true,
"weight": "Lighter",
"spacing": "None",
"color":"default"
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "100px",
"items": [
{
"type": "TextBlock",
"text": "**概要**",
"wrap": true,
"weight": "Bolder"
}
],
"separator": true
},
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "TextBlock",
"text": "Teams チャネルへメッセージ送信する方法",
"wrap": true
}
]
}
]
},
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"width": "100px",
"items": [
{
"type": "TextBlock",
"text": "**説明**",
"wrap": true,
"weight": "Bolder"
}
],
"separator": true
},
{
"type": "Column",
"width": "stretch",
"items": [
{
"type": "TextBlock",
"text": "Webhook と curl コマンドを使って Teams チャネルへメッセージ送信する方法について紹介します。",
"wrap": true
}
]
}
]
},
{
"type": "TextBlock",
"text": "💡 詳細は [**記事を表示**] ボタンをクリックしてください",
"wrap": true,
"size": "Small",
"weight": "Lighter",
"color": "Attention"
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "記事を表示",
"url": "https://kinoshita-hidetoshi.github.io/Programing-Items/Etc/Bash/send_message_to_teams_with_webhook.html"
}
]
}
}
]
}
__EOF__

本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。
| 2024-09-30 | - | 新規作成 |