シーケンシャル ワークフロー

アダプティブ カードでは、ユーザー アクションで更新されるシーケンシャル ワークフローがサポートされるようになりました。 シーケンシャル ワークフローを使用すると、ユーザー アクションでアダプティブ カードが更新され、ユーザーはユーザー入力を必要とする一連のカードを進めることができます。 Action.Execute はシーケンシャル ワークフローをサポートしています。これにより、ボット開発者はユーザー アクションに応答してアダプティブ カードを返すことができます。

たとえば、カフェテリアがチームまたはチャネルの注文を受けたいシナリオを考えます。 Action.Execute食べ物や飲み物など、さまざまなアイテムに対するユーザーの選択を順番に記録することができます。 ユーザーは、ボット開発者によって定義されたロジックに従って、カードを行き来することもできます。

次の図は、シーケンシャル ワークフローを示しています。

シーケンシャル ワークフロー

ユーザーは、他のユーザーのカードを変更することなく、ワークフローを進めることができます。 このワークフローは、シーケンシャル アダプティブ カードを使用してテストを実施する場合にも役立ちます。 次の図は、さまざまなユーザーがワークフローのさまざまな段階にあり、カードの状態を示しています。

ケータリング ボットの状態

注:

デバイス間でユーザーの進行状況を同期するには、Adaptive Card JSON の プロパティを refresh 使用します。

アダプティブ カードのシーケンシャル ワークフロー

次のコードは、アダプティブ カードの例を示しています。

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "body": [
    {
      "type": "TextBlock",
      "text": "Select from food options"
    },
    { 
      "type": "ActionSet",
      "actions": [
        {
          "type": "Action.Execute",
          "title": "Chicken",
          "verb": "food",
          "data": {
              "item": "chicken"
          }
        },
        {
          "type": "Action.Execute",
          "title": "Beef",
          "verb": "food",
          "data": {
              "item": "beef"
          }
        },
        {
          "type": "Action.Execute",
          "title": "Vegan",
          "verb": "food",
          "data": {
              "item": "vegan"
          }
        }
      ]
    }
  ]
}

Action.Executeボットを呼び出すと、応答としてアダプティブ カードを返すことができます。これにより、Teams の既存のカードが置き換えられます。 次の例では、食べ物または飲み物の選択または注文の確認でボットが返す内容を示します。

  • カード 1 からの食品の選択では、ボットはカード 2 である飲み物の選択にカードを返すことができます。
  • カード 2 からの飲み物の選択では、ボットはカード 3 である注文確認カードを返すことができます。
  • カード 3 からの注文確認では、ボットは、カード 4 である注文確認カードを返すことができます。

ボット側で受信した呼び出し要求

次のコードは、ボット側で受信した呼び出し要求の例を示しています。

{ 
  "type": "invoke",
  "name": "adaptiveCard/action",

  // ... other properties omitted for brevity

  "value": { 
    "action": { 
      "type": "Action.Execute", 
      "id": "", 
      "verb": "food",
      "data": { 
            "item": "vegan"
      } 
    },
    "trigger": "manual" 
  }
}

アダプティブ カードを返す応答を呼び出す

次のコードは、アダプティブ カードを返す呼び出し応答の例を示しています。

string cardJson = "<adaptive card json>";
var card = JsonConvert.DeserializeObject(cardJson);

var adaptiveCardResponse = JObject.FromObject(new
 {
    statusCode = 200,
    type = "application/vnd.microsoft.adaptive.card",
    value = card
 });

コード サンプル

サンプルの名前 説明 .NET Node.js マニフェスト
Teams ケータリング ボット このサンプルは、アダプティブ カードを使用して食品の注文を受け入れるボットを示しています。 表示 該当なし 該当なし
シーケンシャル ワークフロー アダプティブ カード このサンプルでは、ボットでのシーケンシャル ワークフロー、ユーザー固有のビュー、および現在のアダプティブ カードの実装を示します。 表示 表示 表示

関連項目