TeamsのIncoming Webhookが廃止になるらしいですね。
今までとURLの発行手順が違う
今まで
これまでのやり方だとTeamsからアプリ => Incoming WebhookでURLを発行していました。
新手順 - ワークフロー
新しい手順ではワークフローというカテゴリがアプリとは別にできていてそこから進みます。
Teamsから ワークフロー => 通知 => Webhook要求を受信するとチャネルに投稿する
を選択します。
"XXXから通知..."など、ワークフロー名を入れましょう。
送信するチャネルがあるチームを選択し、チャネルを選択します。
するとWebhookURLが生成されます。
https://prod-24.japaneast.logic.azure.com:443/workflows/xxxxxxxxxxxxxxxxxxxxxxx/triggers/manual/paths/invoke?api-version=~~
こんな雰囲気のURLが生成されます。
今までと送信するJSONが違う
今までのJSON
以前はこんな感じで送っていました。
{
"@type": "MessageCard",
"@context": "https://hogehoge.com/hogehoge.png",
"themeColor": "0076D7",
"summary": "ディスカッション",
"sections": [{
"activityTitle": "Larry Bryant created a new task",
"activitySubtitle": "On Project Tango",
"activityImage": "https://hogehoge.com/xxxxx.png",
"facts": [{
"name": "投稿者",
"value": "うこ"
}, {
"name": "URL",
"value": "https://hogehoge.com/xxxx/yyy"
}, {
"name": "Status",
"value": "Not started"
}],
"markdown": true
}]
}
新しいWebhookのJSON
こちらの記事を元にしています。
アダプティブカード形式という形式で送る必要がある模様です。
{
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"content": {
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "TextBlock",
"text": "メッセージ",
"wrap": true,
"markdown": true
}
]
}
}
]
}
Node.jsから送ってみる
さっとo4-miniに書いてもらいました。
ちなみにNode.jsはv23.11.0です。
// sendTeamsAdaptiveCard.mjs
// 実行例: WEBHOOK_URL='<署名付き URL>' node sendTeamsAdaptiveCard.mjs
// ① Webhook URL(環境変数推奨)
const WEBHOOK_URL = process.env.WEBHOOK_URL ?? '<署名付き URL>';
if (!WEBHOOK_URL.startsWith('https://')) {
console.error('❌ WEBHOOK_URL が未設定、または形式が正しくありません。');
process.exit(1);
}
// ② Adaptive Card ペイロード(Python サンプルと同一)
const payload = {
attachments: [
{
contentType: 'application/vnd.microsoft.card.adaptive',
content: {
$schema: 'http://adaptivecards.io/schemas/adaptive-card.json',
type: 'AdaptiveCard',
version: '1.2',
body: [
{
type: 'TextBlock',
text: '## Workflow経由のTeamsへの通知テストです。\n\n* 通知の詳細1です。\n* 通知の詳細2です。',
wrap: true,
markdown: true
}
]
}
}
]
};
// ③ POST
try {
const res = await fetch(WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
if (res.ok) {
console.log('✅ メッセージが送信されました');
} else {
const text = await res.text();
throw new Error(`Status ${res.status}: ${text}`);
}
} catch (err) {
console.error('❌ 送信に失敗しました:', err);
}
$ node sendTeamsAdaptiveCard.mjs
✅ メッセージが送信されました
これでうまく送信されると以下のように通知されます。
まとめ
TeamsのWebhook通知のやり方が変わりました。
変わったけどそこまでめんどくさくなったって感じでもないので新手順に慣れておけばOKかなと思います。
補足
"チャンネルに送信する"と"チャットに送信する"が紛らわしい
ちなみに特定のチャネルではなく、個別チャットやグループチャットに送信したい場合は"チャットに送信する"を選択します。ここが見た目一緒でちょっとした文字列の違いとなって分かりにくいので注意しましょう。
作ったワークフローを編集したい
Teamsのワークフローメニューから管理できます。
ここまでくるともろUIgPower Automateですね