Skip to content

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 TypePrivate としました。

file

Step.2

チームを作成したら Webhook を受信したいチームの三点リーダをクリックし Workflows を選択します。

file

Step.3

「Webhook を受信したら投稿を行う」というテンプレートがあるので、それを利用します。 キーワードに webhook と入力するとキーワードを含むテンプレートのみ、表示されます。 Post to a channel when a webhook request is received を選択します。

file

Step.4

Name 欄に任意の名前を入力します。

file

Step.5

Webhook を受信した際、メッセージの投稿先になるチャネルを選択します。 Workflow の設定を開始したチャネルが自動的に選択されているはずですので、そのまま次へ進みます。

file

Step.6

これで Incoming Webhook の URL が作成されました。 表示された URL はコピーしておきます。

file

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
{
 "type": "message",
 "attachments": [
  {
   "contentType": "application/vnd.microsoft.card.adaptive",
   "contentUrl": null,
   "content": {
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "type": "AdaptiveCard",
    "version": "1.2",
    "body": [
     {
      "type": "TextBlock",
      "text": "For Samples and Templates, see [https://adaptivecards.io/samples](https://adaptivecards.io/samples)"
     }
    ]
   }
  }
 ]
}

これを curl コマンドで POST します。 下記の例では「正常に POST 出来たケース」なのですが、CLI 上は何も表示されませんでした。

$ curl -H "Content-Type: application/json" --data @./data.json "https://[WEBHOOK-URL]"
$

選択したチャネルへメッセージが投稿されていれば成功です。

file

Workflow 内容の確認

設定済み Workflow の内容を確認する手順は以下の通りです。

Step.1

左側のナビゲーションメニューにある Workflows をクリックすると設定された Workflow の一覧が表示されます。 Workflow の設定内容を確認したい場合は該当 Workflow の三点リーダをクリックし、表示されたメニューから Edit を選択します。

file

Step.2

Workflow の内容が表示されます。 各フロー部分をクリックすると詳細が表示されます。

file

Step.3

file

トラブルシューティング

Workflow の実行に失敗している場合はトラブルシューティングを行います。 トラブルシューティング時、Workflow の実行履歴を確認する手順は以下の通りです。

Step.1

一覧画面からトラブルシューティングしたい Workflow の三点リーダをクリックし Run history を選択します。

file

Step.2

Workflow の実行履歴が表示されます。 今回は Status 欄が Failed になっている Workflow を選択してみます。

file

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.

file

尚、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 をクリックするとヘッダーを表示させることが出来ます。

file