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

アクション可能なメッセージを作成し、受信 Webhook または Office 365 コネクタを介して送信できます。

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

アクション可能なメッセージには、カードに表示される 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 アクションでは、ベアラー トークンは要求に含まれています。 このトークンには、アクションを実行した Office 365 ユーザーの Microsoft Azure Active Directory (Azure AD) ID が含まれています。

受信 Webhook または Office 365 コネクタ経由でメッセージを送信する

受信 Webhook または Office 365 コネクタを介してメッセージを送信するには、WEBhook URL に JSON ペイロードを投稿します。 このペイロードは、 Office 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://teamsnodesample.azurewebsites.net/static/img/image5.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

A retry logic with exponential back-off can mitigate rate limiting for cases where requests are exceeding the limits within a second. Follow best practices to avoid hitting the rate limits.

注意

A retry logic with exponential back-off can mitigate rate limiting for cases where requests are exceeding the limits within a second. Refer HTTP 429 responses to avoid hitting the rate limits.

// 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
    }
}

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

関連項目