メッセージを作成して送信する

重要

Microsoft 365 コネクタ (以前は Office 365 コネクタ) は非推奨に近づいています。新しい Microsoft 365 コネクタの作成は間もなくブロックされます。 スケジュールの詳細と、ワークフロー アプリがより柔軟で安全なエクスペリエンスを提供する方法については、 Microsoft Teams内の Microsoft 365 コネクタの廃止に関するページを参照してください。

Teams で Webhook を作成するにはどうすればよいですか?

  • Webhook 要求の受信時にチャットまたはチャネルに自動的に投稿するには、定義済みのワークフロー テンプレートを使用するか、[ Teams Webhook 要求が受信されたとき ] トリガーを使用してワークフローを最初から作成します。 詳細については、「 Microsoft Teams で Webhook 要求が受信されたときにワークフローを投稿する」を参照してください。

  • Teams Webhook 要求が受信されたときのトリガーの詳細については、「Microsoft Teams - Webhook」を参照してください。

Office 365 コネクタを既に構築している場合:

  • Power Automate コネクタを作成する: Power Automate は、Teams で広く使用されているワークフロー アプリを強化します。 これは、Teams との間でプログラムによってデータを送信するためのスケーラブルで安全なアプローチです。 この方法を採用する場合は、製品から Teams チャネルにアラートを投稿するためのワークフロー テンプレートを作成できます。 この方法により、新しい方法のユーザーの導入が簡略化されます。 詳細については、エンタープライズ開発者、ISV、パートナー向けの Power Automate に関するページを参照してください。

  • Teams アプリを更新する: 現在の Teams アプリを強化できます。 たとえば、ユーザーがシステム内のトリガー イベントに基づいてプロアクティブ メッセージを設定できるようにします。 詳細については、ボットがプロアクティブ メッセージを通じてチャネルに投稿する方法に関するページを参照してください。

既知の問題

  • ワークフロー アプリは、プライベート チャネルでフロー ボットとして投稿できません。 ただし、ユーザーに代わって投稿することはできます。
  • ワークフローでは、アダプティブ カードのみがサポートされます。 コネクタで使用される古いメッセージカード形式Office 365サポートされていません。 ワークフロー内のメッセージカード形式の使用のサポートは、10 月中旬から利用可能になります。 詳細については、コネクタ メッセージカード形式をアダプティブ カードに変換する方法に関するページを参照してください。
  • ワークフローには、DataDog や Jenkins などのサードパーティ製コネクタは用意されていません。
  • ワークフローは、既定の環境でのみ作成できます。

限界事項

ワークフローは、特定のユーザー (ワークフローの所有者と呼ばれます) にのみリンクされ、Teams チームまたはチャネルにはリンクされません。 共同所有者が割り当てられていない場合、ワークフローは所有者が存在しない場合に孤立フローになる可能性があります。 フローによって自動化されたビジネス プロセスの継続性を維持するために、管理者は 1 人以上の共同所有者を追加し、ワークフローを完全に制御できます。 また、接続の認証 (存在する場合) を追加し、フローが無効になっている場合はフローを有効にすることもできます。 詳細については、「 孤立フローの管理」を参照してください。

アクション可能なメッセージを作成して送信するには、受信 Webhook または Microsoft 365 コネクタを使用します。 ただし、アクション可能なメッセージには、Exchange Online ライセンスを持つユーザーのみがアクセスできます。

操作可能なメッセージを作成する

アクション可能なメッセージには、カードに表示される 6 つのボタンが含まれています。 各ボタンは、入力の種類、テキスト フィールド、日付ピッカー、または複数選択リストを持つActionCardアクションを使用して、メッセージの potentialAction プロパティで定義されます。 各 ActionCard には、 HttpPOSTなどのアクションが関連付けられます。

コネクタ カードは、次のアクションがサポートされています。

  • ActionCard: 1 つ以上の入力の種類と関連するアクションを表示します。
  • HttpPOST: POST 要求を URL に送信します。
  • OpenUri: 別のブラウザーまたはアプリで URI を開きます。 必要に応じて、オペレーティング システムに基づいて異なる URI をターゲットにします。

ActionCard アクションでは、次の 3 つの入力の種類がサポートされています。

  • TextInput: 1 行または複数行のテキスト フィールド (オプションの長さの制限あり)。
  • DateInput: オプションの時刻セレクターを持つ日付セレクター。
  • MultichoiceInput: 1 つまたは複数の選択を提供する選択肢の列挙リスト。

MultichoiceInput では、最初にすべて展開した状態でリストを表示するかどうかを制御する style プロパティがサポートされています。 styleの既定値は、次のようにisMultiSelectの値によって異なります。

isMultiSelect デフォルト style
false または指定なし compact
true expanded

コンパクト スタイルで複数選択リストを表示するには、 "isMultiSelect": true"style": trueを指定する必要があります。

コネクタ カードのアクションの詳細については、「 Actions」を参照してください。

注:

  • Microsoft Teams で style プロパティに compact を指定することは、Microsoft Outlook で style プロパティに normal を指定することと同じです。
  • HttpPOST アクションでは、ベアラー トークンは要求に含まれています。 このトークンには、アクションを実行した Microsoft 365 ユーザーのMicrosoft Entra ID が含まれます。

受信 Webhook またはコネクタを介してメッセージを送信してMicrosoft 365 グループ

受信 Webhook またはコネクタを介してメッセージを送信してMicrosoft 365 グループするには、JSON ペイロードを Webhook URL に投稿します。 このペイロードは、Microsoft 365 グループ用のコネクタ カードの形式である必要があります。

この JSON を使用して、テキスト入力、複数選択、日付と時刻の選択など、豊富な入力を含むカードを作成することもできます。 カードを生成して Webhook URL に投稿するコードは、ホストされている任意のサービスで実行できます。 これらのカードは、アクション可能なメッセージの一部として定義され、Teams ボットとメッセージ拡張機能で使用される カード でもサポートされます。

コネクタ メッセージの例

コネクタ メッセージの例を次に示します。

{
    "@type": "MessageCard",
    "@context": "http://schema.org/extensions",
    "themeColor": "0076D7",
    "summary": "Larry Bryant created a new task",
    "sections": [{
        "activityTitle": "Larry Bryant created a new task",
        "activitySubtitle": "On Project Tango",
        "activityImage": "https://adaptivecards.io/content/cats/3.png",
        "facts": [{
            "name": "Assigned to",
            "value": "Unassigned"
        }, {
            "name": "Due date",
            "value": "Mon May 01 2017 17:07:18 GMT-0700 (Pacific Daylight Time)"
        }, {
            "name": "Status",
            "value": "Not started"
        }],
        "markdown": true
    }],
    "potentialAction": [{
        "@type": "ActionCard",
        "name": "Add a comment",
        "inputs": [{
            "@type": "TextInput",
            "id": "comment",
            "isMultiline": false,
            "title": "Add a comment here for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Add comment",
            "target": "https://video2.skills-academy.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Set due date",
        "inputs": [{
            "@type": "DateInput",
            "id": "dueDate",
            "title": "Enter a due date for this task"
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://video2.skills-academy.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://video2.skills-academy.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "ActionCard",
        "name": "Change status",
        "inputs": [{
            "@type": "MultichoiceInput",
            "id": "list",
            "title": "Select a status",
            "isMultiSelect": "false",
            "choices": [{
                "display": "In Progress",
                "value": "1"
            }, {
                "display": "Active",
                "value": "2"
            }, {
                "display": "Closed",
                "value": "3"
            }]
        }],
        "actions": [{
            "@type": "HttpPOST",
            "name": "Save",
            "target": "https://video2.skills-academy.com/outlook/actionable-messages"
        }]
    }]
}

次の図は、チャネル内のコネクタ メッセージ カードの例です。

チャネル内のコネクタ カードの例を示すスクリーンショット。

cURL と PowerShell を使用してメッセージを送信する

cURL を使用して webhook にメッセージを投稿するには、次の手順に従います。

  1. cURL Web サイトから cURL をインストールします。

  2. コマンド ラインから、次の cURL コマンドを入力します。

    // on macOS or Linux
    curl -H 'Content-Type: application/json' -d '{"text": "Hello World"}' <YOUR WEBHOOK URL>
    
    // on Windows
    curl.exe -H "Content-Type:application/json" -d "{'text':'Hello World'}" <YOUR WEBHOOK URL>
    

    注:

    POST が成功した場合は、curlによって単純な 1出力が表示される必要があります。

  3. Teams クライアントで、投稿された新しいカードを確認します。

受信 Webhook を使用してアダプティブ カードを送信する

注:

  • Action.Submitを除くすべてのネイティブ アダプティブ カード スキーマ要素は、完全にサポートされています。
  • ✔ サポートされているアクションは Action.OpenURLAction.ShowCard、および Action.ToggleVisibility です。

受信 Webhook を介してテキストまたは Base64 でエンコードされたイメージを使用してアダプティブ カードを送信するには、次の手順に従います。

  1. Teams でカスタム Webhook を設定します。
  2. 次のコードを使用してアダプティブ カード JSON ファイルを作成します。
    {
       "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)"
                    }
                ]
             }
          }
       ]
    }

アダプティブ カード JSON ファイルのプロパティは次のとおりです。

  • "type" フィールドは "message" であることが必要です。
  • "attachments" 配列には、カード オブジェクトのセットが含まれています。
  • "contentType" フィールドは、アダプティブ カードの種類に設定する必要があります。
  • "content" オブジェクトは、JSON で書式設定されたカードです。
  1. Postman でアダプティブ カードをテストする:

    1. Postmanを使用してアダプティブ カードをテストし、受信 Webhook を設定するために作成された URL に POST 要求を送信します。
    2. 要求の本文に JSON ファイルを貼り付け、アダプティブ カード メッセージを [アダプティブ カード] Teams。

ヒント

アダプティブ カード コード サンプルとテンプレート を使用して、POST 要求の本文をテストします。

コネクタのレート制限

アプリケーションレート制限は、コネクタまたは受信 Webhook がチャネルで生成することを許可されるトラフィックを制御します。 Teams は、固定レート ウィンドウと増分カウンターを使用して、秒単位で測定された要求を追跡します。 1 秒間に 4 つ以上の要求が行われた場合、クライアント接続は、ウィンドウが固定レートの間更新されるまで調整されます。

1 秒あたりのトランザクションのしきい値

次の表に、時間ベースのトランザクションの詳細を示します。

時間 (秒) 許可される最大要求数
1 4
30 60
3600 100
7200 150
86400 1800

注:

指数バックオフを備えた再試行ロジックでは、要求が 1 秒以内に制限を超えている場合のレート制限を軽減できます。 レート制限を避けるために、HTTP 429 応答を参照してください。

// Please note that response body needs to be extracted and read 
// as Connectors do not throw 429s
try
{
    // Perform Connector POST operation     
    var httpResponseMessage = await _client.PostAsync(IncomingWebhookUrl, new StringContent(content));
    // Read response content
    var responseContent = await httpResponseMessage.Content.ReadAsStringAsync();
    if (responseContent.Contains("Microsoft Teams endpoint returned HTTP error 429")) 
    {
        // initiate retry logic
    }
}

これらの制限は、コネクタによるチャネルのスパムを減らし、ユーザーに最適なエクスペリエンスを確保するために実施されます。

関連項目