Microsoft Teams へ Workflow として Webhook を設定する
Retirement of Office 365 connectors within Microsoft Teams に記載されていますが、Microsoft Teams で従来利用してきたコネクタ (Incoming Webhook) は今後、廃止されます。 代替手段として今後は 「Webhook を受信したら Teams へ投稿する」という Workflow を設定することになります。 今回はこの「Workflow での設定方法」をメモしておきます。
Workflow の設定¶
Microsoft Teams 上で新規の Workflow を設定する手順は以下の通りです。
Step.1¶
Webhook を受信するチームを作成します。 Team Type
は Private
としました。
Step.2¶
チームを作成したら Webhook を受信したいチームの三点リーダをクリックし Workflows
を選択します。
Step.3¶
「Webhook を受信したら投稿を行う」というテンプレートがあるので、それを利用します。 キーワードに webhook
と入力するとキーワードを含むテンプレートのみ、表示されます。 Post to a channel when a webhook request is received
を選択します。
Step.4¶
Name
欄に任意の名前を入力します。
Step.5¶
Webhook を受信した際、メッセージの投稿先になるチャネルを選択します。 Workflow の設定を開始したチャネルが自動的に選択されているはずですので、そのまま次へ進みます。
Step.6¶
これで Incoming Webhook の URL が作成されました。 表示された URL はコピーしておきます。
Step.7¶
投稿テストを行います。 data.json
というファイル名で、投稿テスト用の JSON ファイルを作成します。
data.json | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
これを curl
コマンドで POST します。 下記の例では「正常に POST 出来たケース」なのですが、CLI 上は何も表示されませんでした。
$ curl -H "Content-Type: application/json" --data @./data.json "https://[WEBHOOK-URL]"
$
選択したチャネルへメッセージが投稿されていれば成功です。
Workflow 内容の確認¶
設定済み Workflow の内容を確認する手順は以下の通りです。
Step.1¶
左側のナビゲーションメニューにある Workflows
をクリックすると設定された Workflow の一覧が表示されます。 Workflow の設定内容を確認したい場合は該当 Workflow の三点リーダをクリックし、表示されたメニューから Edit
を選択します。
Step.2¶
Workflow の内容が表示されます。 各フロー部分をクリックすると詳細が表示されます。
Step.3¶
トラブルシューティング¶
Workflow の実行に失敗している場合はトラブルシューティングを行います。 トラブルシューティング時、Workflow の実行履歴を確認する手順は以下の通りです。
Step.1¶
一覧画面からトラブルシューティングしたい Workflow の三点リーダをクリックし Run history
を選択します。
Step.2¶
Workflow の実行履歴が表示されます。 今回は Status
欄が Failed
になっている Workflow を選択してみます。
Step.3¶
Workflow が実行された際の入力パラメータや実行結果が表示されます。 今回は Send each adaptive card
というフローが以下のエラーで終了していることが分かりますので、このエラー内容を参考にトラブルシューティングを行うことになります。
ExpressionEvaluationFailed. The execution of template action 'Send_each_adaptive_card' failed: the result of the evaluation of 'foreach' expression '@triggerOutputs()?['body']?['attachments']' is of type 'Null'. The result must be a valid array.
尚、Input の Schema は以下の内容でした。
Schema
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contentType": {
"type": "string"
},
"content": {
"type": "object",
"properties": {
"$schema": {
"type": "string"
},
"type": {
"type": "string"
},
"version": {
"type": "string"
},
"body": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
]
}
}
}
}
},
"required": [
"contentType",
"content"
]
}
}
}
}
Step.4¶
When a Teams webhook request is received
フローの OUTPUTS
欄にある show more
をクリックするとヘッダーを表示させることが出来ます。