アダプティブ カードのユニバーサル アクションの操作
アダプティブ カードのユニバーサル アクションは、Teams と Outlook の両方にアダプティブ カード ベースのシナリオを実装する方法を提供します。 このドキュメントでは、次のトピックについて説明します。
アダプティブ カードのユニバーサル アクションを Teams で活用するためのクイック スタート ガイド
Action.Submit
のすべてのインスタンスをAction.Execute
に置き換えて、Teams の既存のシナリオを更新します。自動更新モデルを活用したい場合や、シナリオにユーザー固有のビューが必要な場合は、アダプティブ カードに
refresh
句を追加します。注:
userIds
プロパティを指定して、自動更新を取得するユーザーを特定します。ボットの中で
adaptiveCard/action
の起動要求を処理します。起動要求のコンテキストを利用して、ユーザー向けに作成されたカードを返信します。
注:
ボットが
Action.Execute
を処理した結果、新しいカードを返す場合はいつでも、その応答は応答の形式に準拠している必要があります。
アダプティブ カードのユニバーサル アクション向けスキーマ
アダプティブ カードのユニバーサル アクションは、アダプティブ カード スキーマ バージョン 1.5 で導入されています。 アダプティブ カードを効果的に使用するには、アダプティブ カードの version
プロパティを 1.5 に設定する必要があります。
注:
version
プロパティを 1.5 に設定すると、アダプティブ カードは、アダプティブ カードのユニバーサル アクションをサポートしていないため、Outlook や Teams などのプラットフォームやアプリケーションの古いクライアントと互換性がありません。
カードのバージョンを 1.5 未満に設定し、プロパティとAction.Execute
refresh
一方または両方を使用すると、次の処理が実行されます。
クライアント | 動作 |
---|---|
Teams | カードが作動しなくなります。 カードは更新されず、 Action.Execute は Teams クライアントのバージョンによってはレンダリングされません。 Teams で最大限の互換性を確保するために、フォールバック プロパティに Action.Submit を含む Action.Execute を定義します。 |
以前のバージョンのクライアントをサポートする方法の詳細については、「下位換機能」を参照してください。
Action.Execute
アダプティブ カードの作成では、Action.Submit
と Action.Http
を Action.Execute
に置き換えます。
Action.Execute
のスキーマは Action.Submit
のスキーマと類似しています。
詳細については、「Action.Execute のスキーマとプロパティ」を参照してください。
モデルのリフレッシュを使用して、アダプティブ カードが自動的に更新されるようになりました。
モデルのリフレッシュ
アダプティブ カードを自動的に更新するには、refresh
プロパティを定義し、タイプ Action.Execute
のアクションと userIds
配列を埋め込みます。
詳細については、「スキーマとプロパティの更新」を参照してください。
リフレッシュでのユーザー ID
リフレッシュでの UserIds の機能は以下のとおりです。
UserIds は、アダプティブ カードの
refresh
プロパティの一部であるユーザー MRI の配列です。userIds
リストプロパティがカードの更新セクションでuserIds: []
として指定されている場合、カードは自動的に更新されません。 代わりに、Teams Web クライアントまたはデスクトップのトリプル ドット メニューと、Teams モバイルの長押しコンテキスト メニュー (Android または iOS) にカードを手動で更新するための [カードの更新 ] オプションが ユーザーに表示されます。 または、シナリオに Teams グループ チャットまたはチャネルで <=60 メンバーが含まれる場合に備えて、更新プロパティのuserIds
をスキップすることもできます。 Teams クライアントは、グループまたはチャネルに <=60 ユーザーがある場合、すべてのユーザーの更新呼び出しを自動的に呼び出します。UserIds プロパティが追加されたのは、Teams チャネルには多数のメンバーが含まれる場合があるためです。 すべてのメンバーが同時にチャネルを視聴している場合、無条件に自動更新を行うと、ボットへの同時呼び出しが多くなります。
userIds
プロパティを常に含める必要があり、最大 60 人のユーザー MRI で自動更新を行うべきユーザーを特定する必要があります。Teams 会話メンバーのユーザー MRI をフェッチできます。 アダプティブ カードの更新セクションで userIds リストを追加する方法の詳細については、「 名簿またはユーザー プロファイルをフェッチする」を参照してください。
次の例を使用して、チャネル、グループ チャット、または 1:1 チャットのユーザーの MRI を取得できます。
TurnContext の使用
userMRI= turnContext.Activity.From.Id
GetMemberAsync メソッドの使用
var member = await TeamsInfo.GetMemberAsync(turnContext, turnContext.Activity.From.Id, cancellationToken);var userMRI = member.Id;
- サンプルの Teams ユーザー MRI は
29:1bSnHZ7Js2STWrgk6ScEErLk1Lp2zQuD5H2qQ960rtvstKp8tKLl-3r8b6DoW0QxZimuTxk_kupZ1DBMpvIQQUAZL-PNj0EORDvRZXy8kvWk
です
注:
Outlook では userIds
プロパティは無視され、refresh
プロパティは常に自動的に有効化されます。 Outlook では、ユーザーがカードを表示する時間が異なるため、規模の問題はありません。
次の手順では、adaptiveCard/action
の起動アクティビティを使用して、Action.Execute
が実行された後にどのような要求を行う必要があるか把握します。
adaptiveCard/action
起動アクティビティ
クライアントで Action.Execute
が実行されると、新しい種類の起動アクティビティ adaptiveCard/action
がボットに作成されます。
詳細については、「一般的な adaptiveCard/action
起動アクティビティの要求形式とプロパティ」を参照してください。
詳細については、「サポートされた応答の種類を使用した一般的な adaptiveCard/action
起動アクティビティの応答形式とプロパティ」を参照してください。
次に、異なるプラットフォームの以前のバージョンのクライアントに下位互換機能を適用し、アダプティブ カードの互換性を持たせることができます。
下位互換機能
アダプティブ カードのユニバーサル アクションでは、以前のバージョンの Outlook や Teams との下位互換機能を実現するためのプロパティを設定することができます。
Teams
アダプティブ カードの以前のバージョンの Teams との下位互換機能を確保するためには、fallback
プロパティを含め、その値を Action.Submit
に設定する必要があります。 また、ボット コードは、Action.Execute
と Action.Submit
の両方を処理する必要があります。
詳細については、「Teams での下位互換機能」を参照してください。
コード サンプル
サンプルの名前 | 説明 | .NET | Node.js | マニフェスト |
---|---|---|---|---|
Teams ケータリング ボット | このサンプルは、アダプティブ カードを使用して食品の注文を受け入れるボットを示しています。 | 表示 | 該当なし | 該当なし |
シーケンシャル ワークフロー アダプティブ カード | このサンプルでは、ボットでのシーケンシャル ワークフロー、ユーザー固有のビュー、および現在のアダプティブ カードの実装を示します。 | 表示 | 表示 | 表示 |
関連項目
Platform Docs