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

アクション可能なメッセージを作成して送信するには、受信 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://learn.microsoft.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://learn.microsoft.com/outlook/actionable-messages"
        }]
    }, {
        "@type": "OpenUri",
        "name": "Learn More",
        "targets": [{
            "os": "default",
            "uri": "https://learn.microsoft.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://learn.microsoft.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 を介してアダプティブ カードを送信するには、次の手順を実行します。

  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 で書式設定されたカードです。
  3. Postman でアダプティブ カードをテストする:

    • Postmanを使用してアダプティブ カードをテストし、受信 Webhook を設定するために作成された URL に POST 要求を送信します。
    • 要求の本文に 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
    }
}

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

関連項目