ボットとタブを組み合わせる

重要

この記事は、v3 Bot Framework SDK に基づいています。 SDK の現在のドキュメント バージョン 4.6 以降をお探しの場合は、「 会話ボット 」セクションを参照してください。

ボットとタブは連携して動作し、多くの場合、1 つのバックエンド サービスに組み合わされます。 このセクションでは、タブとボットを一緒に使用するためのベスト プラクティスと一般的なパターンについて説明します。

ボットとタブ間でのユーザー ID の関連付け

たとえば、タブ アプリケーションが独自の ID システムを使用してそのコンテンツをセキュリティで保護しているとします。 ユーザーと対話できるボットがあるとします。 通常、表示ユーザーに固有のコンテンツをタブに表示します。 課題は、システム内のユーザー ID が Microsoft Teams ユーザー ID と異なる可能性が高いということです。 では、これら 2 つの ID をどのように関連付けますか? 一般に、推奨される方法は、タブ コンテンツの認証を提供するために使用されるのと同じ ID システムを使用して、ボットでユーザーをサインインすることです。 サインイン アクションを使用して実装できます。これは通常、OAuth フローを介してユーザーにサインインします。

このフローは、ID プロバイダーが OAuth 2.0 プロトコルを実装している場合に最適です。 その後、Teams ユーザー ID を、独自の ID サービスからのユーザーの資格情報に関連付けることができます。

関連付け ID を示すスクリーンショット。

タブを使用して、カード内に収まるコンテンツを表示したり、タブ キャンバスを使用して複雑なフォーム入力タスクを完了する方法を提供したりしたい。 たとえば、ユーザーがボットからカードを選択したときに、ユーザーをタブに移動することを検討してください。 これを行うには、マークアップを介して、または openUrl アクションのターゲットとして ディープ リンク URL を含むようにボットのメッセージをエンコードする必要があります。

ディープ リンクは entityId に依存します。これは、システム内の一意のエンティティにマップされる不透明な値です。 タブが作成されると、単純な状態が格納されます。 たとえば、バックエンドでタブがチャネルに作成されていることを示すフラグを設定します。 ボットは、メッセージを構築するときに、そのタブに関連付けられている entityId をターゲットにすることができます。

注:

個人用チャットでは、タブは 静的 であり、アプリと共にインストールされるため、常にその存在を想定し、それに応じてディープ リンクを構築できます。

タブの更新に関する通知の送信

多くの場合、更新またはユーザー アクションがタブで発生するたびにエンド ユーザーに通知する必要があります。シナリオの例としては、タスクまたはチケットを仲間のチーム メンバーに割り当て、そのチーム メンバーに通知する方法があります。

このシナリオを実現するには、次の 2 つの方法があります。

  1. チャネル全体に通知する場合、ボットは非同期的にチャネルにメッセージを投稿できます。 ボットがタブを使用して作成されていない場合、タブの会話を事前に作成する方法はありません。

  2. アクションに関係する受信者または利害関係者にのみ通知する場合は、ボットがユーザーに個人用チャット メッセージを送信できます。 最初にチェックして、ボットとユーザーの間に個人的な会話が存在するかどうかを確認する必要があります。 そうでない場合は、 を呼び出 CreateConversation して個人用チャットを開始できます。

どちらの場合も、イベント通知を賢明に使用し、不要な更新プログラムでユーザーにスパムを送信しないでください。

関連項目

Microsoft Teams アプリにハウツー ガイドを追加する