ユーザー認証をトピックに追加して、顧客が会話内で直接サインインできるようにします。 次に、ユーザー変数を使用して会話をパーソナライズしたり、ユーザーの代わりにバック エンド システムにアクセスしたりすることができます。
トピックで認証を使用する前に、Microsoft Entra ID を使用してユーザー認証を構成する必要があります。
「Microsoft Entra ID を使用してユーザー認証を構成する」の手順に従います。
サインイン システム トピック でユーザー認証を追加する
コパイロットを作成すると、Copilot Studio では サインイン というシステム トピックが自動的に追加されます。 これを使用するには、コパイロットの認証を手動に設定し、ユーザーにサインインを要求する必要があります。 顧客がコパイロットとの会話を開始すると、サインイン トピックがトリガーされ、ユーザーにサインインを求めます。 コパイロットに合わせて サインイン トピック をカスタマイズできます。
重要
サインイン トピックは、Copilot Studio が提供する認証方法を提供するためだけに使用することをお勧めします。 他のアクションやフロー、または他の認証方法を呼び出すせるように変更しないでください。
Copilot Studio でコパイロットを開いた状態で、設定 ページ上部の セキュリティ を選択します。
認証を選択します。
手動で認証するを選択し、ユーザーにログインを要求するを選択します。
必要に応じて、すべての手動認証フィールドを構成します。
保存 を選びます。
カスタム トピックでユーザー認証を追加する
サインイン トピック は会話の開始時にユーザーを認証します。 ユーザーが後でサインインできるようにするため、任意のカスタム トピックに認証ノードを追加できます。
顧客がユーザー名とパスワードを入力すると、検証コードの入力を求められる場合があります。 ログイン後は、別の 認証 ノードに到達しても、再度プロンプトは表示されません。
ページ上部の設定を選択し、セキュリティを選択します。
認証 タイルを選択します。
注意Note
カスタム トピックにユーザー認証を追加するには、手動で認証 を選択する必要があります。
ユーザーにサインインを要求する チェックボックスをオフにします。
必要に応じて、すべての手動認証フィールドを構成します。
保存 を選びます。
ページ上部にある トピック を選択します。
ノードを追加 ( ) >詳細>認証を選択します。
IDプロバイダーで設定されたユーザーを使用して、トピック をテストします。
チップ
サインインが成功した場合と失敗した場合の両方のパスを作成することが重要です。 サインインに失敗する理由は、ID プロバイダーのサインイン エクスペリエンスに関するエラーなど、複数あります。
認証変数
コパイロットのユーザー認証を構成するときに、トピックで認証変数を使用できます。 次の表は、選択した認証オプションに基づくこれらの変数の利用可能性を比較したものです。
変数の詳細については、「 変数の操作」を参照してください。
認証変数 |
認証なし |
Microsoft で認証する |
手動で認証する |
ユーザー.表示名 |
該当なし |
対応可能 |
対応可能 |
User.FirstName |
該当なし |
対応可能 |
対応可能 |
User.LastName |
該当なし |
対応可能 |
対応可能 |
User.PrincipalName |
該当なし |
対応可能 |
対応可能 |
User.Email |
該当なし |
対応可能 |
対応可能 |
User.Id |
該当なし |
対応可能 |
対応可能 |
ユーザー.ログイン中 |
該当なし |
対応可能 |
対応可能 |
ユーザー.アクセストークン |
該当なし |
該当なし |
対応可能 |
サインイン理由 |
該当なし |
対応可能 |
対応可能 |
User.DisplayName
警告
この変数に値が入ることは保証されていない。 トピックが正しく動作することを確認するために、ID プロバイダーのユーザーを使ってテストしてください。
User.DisplayName
変数には、アイデンティティ プロバイダーに保存されている 表示名 が含まれます。 この変数を使用して、コパイロットに明示的に名前を指定しなくてもユーザーに挨拶や参照を行い、会話をよりカスタマイズされたものにします。
Copilot Studio は、profile
スコープが手動認証の設定時に定義されている限り、ID プロバイダーによって提供される name
要求から User.DisplayName
の値を自動的に設定します。 スコープの詳細については、Microsoft Entra ID を使用してユーザー認証を構成する を参照してください。
User.Id
警告
この変数に値が入ることは保証されていない。 トピックが正しく動作することを確認するために、ID プロバイダーのユーザーを使ってテストしてください。
User.Id
変数には、IDプロバイダーに保存されているユーザーIDが含まれます。 UserID を値とする API を呼び出す場合は、Power Automate フロー でこの変数を使用する。
Copilot Studio は、ID プロバイダから提供される sub
要求からの User.DisplayName
の値を自動的に設定します。
User.IsLoggedIn
User.IsLoggedIn
ユーザーのサインイン ステータスを保存する ブール値 変数です。 true
の値は、ユーザーがサインインしていることを示します。 この変数を使用して、サインインに成功したかどうかをチェックするトピック内の分岐ロジックを作成したり、ユーザーがサインインしている場合にのみユーザー情報を取得したりすることができます。
User.AccessToken
警告
信頼できるソースに対してのみ User.AccessToken
変数をパスしていることを確認してください。 これにはユーザー認証情報が含まれており、侵害された場合、ユーザーに害を及ぼす可能性があります。
User.AccessToken
変数には、ユーザーのサイン イン後に取得されるユーザーのトークンが含まれます。 この変数を Power Automate フロー に渡すことができるため、バック エンド API に接続してユーザーの情報を取得したり、ユーザーに代わってアクションを実行したりできます。
メッセージ ノード内または信頼できないフロー内で User.AccessToken
を使用しないでください。
SignInReason
SignInReason
ユーザーがいつログインする必要があるかを示す選択型変数です。 次の 2 つの値があります:
認証変数
コパイロットが Microsoftによる認証 または 手動 認証オプションのいずれかで構成されている場合は、トピックで使用できる認証変数のセットが提供されます。 コパイロットで認証を構成する方法の詳細については、Copilot Studio を使用したユーザー認証の構成を参照してください。
次の表は、認証構成オプションごとの認証変数の可用性を比較しています。
認証変数 |
認証なし |
Microsoft で認証する |
手動 |
User.DisplayName |
❌ |
✔️ |
✔️ |
User.Id |
❌ |
✔️ |
✔️ |
User.IsLoggedIn |
❌ |
❌ |
✔️ |
User.AccessToken |
❌ |
❌ |
✔️ |
UserDisplayName 変数
User.DisplayName
変数には、ID プロバイダーに保存されているユーザーの表示名が含まれます。 この変数を使用して、エンドユーザーが明示的にコパイロットに伝えなくても、挨拶やメンションを行うことができるため、よりパーソナライズされたものになります。
このフィールド値は、Microsoft Entra ID name
要求から取得されます。 プロバイダーの場合、この値はクレームに保存されます。 OAuth name
Copilot Studio は、このフィールドを変数に自動的に抽出するので、認証スコープ設定の一部として profile
があることを確認します。
UserID 変数
User.Id
変数には、ID プロバイダーに保存されているユーザーの ID が含まれます。 Power Automate フローはこの値を使用して、UserIDを値として受け取るAPIを呼び出すことができます。
このフィールド値は、Microsoft Entra ID sub
要求から取得されます。 プロバイダーの場合、この値はクレームに保存されます。 OAuth sub
Copilot Studio は、このフィールドを変数に自動的に抽出します。
警告
User.DisplayName
および User.Id
変数が入力されることは保証されておらず、アイデンティティ プロバイダーのユーザー構成によっては空の文字列になる可能性があります。 これらの変数が空の場合でも、ID プロバイダーのユーザーでテストして、トピックが正しく機能することを確認します。
IsLoggedIn 変数
User.IsLoggedIn
変数は、ユーザーがログインしているか(ログイン中または既にログインしている状態、つまりログイン成功パスとも呼ばれる)、ログインしていないか(ログイン失敗パスになる)を示します。
User.IsLoggedIn
ユーザーのサインインステータスを含む ブール値 変数です。 この変数を使用して、サイン インが成功したかどうかをチェックする分岐ロジックをトピックに作成が可能で (たとえば、認証ノード追加の一部としてすでに提供されているテンプレートで)、またユーザーがサイン インしている場合にのみ、便宜的にユーザー情報をフェッチします。
User.AccessToken変数
User.AccessToken
変数には、ユーザーのサイン イン後に取得されるユーザーのトークンが含まれます。 この変数を Power Automate フロー に渡すことができるため、バック エンド API に接続してユーザーの情報を取得したり、ユーザーに代わってアクションを実行したりできます。
警告
信頼できるソースに対してのみ User.AccessToken
変数をパスしていることを確認してください。 これにはユーザー認証情報が含まれており、侵害された場合、ユーザーに害を及ぼす可能性があります。
User.AccessToken
内部メッセージ ノード、または信頼できないフローを使用しないでください。
認証変数のテスト
デフォルトでは、 ボットのテスト ペインは現在サインインしているユーザーのアカウントを使用して、 User.DisplayName
および User.Id
変数を入力します。 ただし、認証を使用するトピックをテストする場合は、これらの変数に他の値 (または空白の値) を使用することをお勧めします。
たとえば、特殊文字がどのように使用されるか、または変数が空の場合に何が起こるかをテストしたい場合があります。
次の表に、これらの変数を設定するためのコマンドを示します。 これらのコマンドは、 ボットのテスト ペインにのみ適用されます。チャネルに展開された公開済みコパイロットでは使用できません。
副操縦士と通常チャットする場合と同じように、 ボットのテスト ペインに必要なコマンドを入力します。 成功すると、コパイロットから確認メッセージが届きます。 コパイロットが認証を使用しない場合、エラーが発生します。
ボットのテスト ペインをリセットした場合 (または、 ボットのテスト が自動的にリセットされるような トピック への変更を行った場合)、コマンドを再度送信する必要があります。
変数 |
カスタム値コマンド |
空の (空白の) 値コマンド |
User.DisplayName |
/debug set bot.UserDisplayName "Value" |
/debug set bot.UserDisplayName "" |
User.Id |
該当なし |
/debug set bot.UserID "" |
重要
セキュリティ上の理由から、 User.Id
変数にカスタム値(空の値または空白の値以外)を入力することはできません。
「Microsoftで認証」を使用する場合の認証
認証オプションが Microsoftで認証 に設定されている場合、トピックに認証を明示的に追加する必要はありません。 この構成では、Microsoft Teams の Teams 資格情報を介して自動的にログインし、認証カードを使用して明示的にログインする必要はありません。 認証オプションが 手動 に設定されている場合は、 認証 ノードを追加する必要があります (Teamsチャネルの場合も同様)。
注意
認証オプションが Microsoftで認証 に設定されている場合、トピックに認証を明示的に追加するオプションはありません。
トピックにエンド ユーザー認証を追加
認証 ノードは、ユーザーにサインイン カード を使用してログインするよう要求します。 ユーザーがログインすると、別の 認証 ノードに到達しても再度プロンプトは表示されません。
ユーザーがユーザー名とパスワードをプロンプトに (ID プロバイダーによってホストされている) 入力すると、チャネル に応じて、検証コードの入力を求められる場合があります。 Microsoft Teamsなどの一部のチャネルでは、ユーザーからの検証コードは必要ありません。
コパイロットが SSO 構成の場合、ユーザーはサイン インを求められません。
トピック に Authenticate ノードを追加するには:
編集するコパイロット用の トピック ページに移動します。
認証テンプレートを追加する トピック を開きます。
注意
コパイロットが Dynamics 365 Customer Service に接続されている場合、コパイロットがユーザーに最初に挨拶するときの会話パスの一部に認証ノードを使用することはできません。 代わりに、ユーザー 応答 によってトリガーされる別の トピック に Authenticate ノードを追加する必要があります。
ノードの追加 (+) を選択して、メッセージ ノードを追加します。 サインオン エクスペリエンスが発生しようとしていることをコパイロットが示す内容を入力します。
メッセージ ノードの下で、ノードの追加 (+) を選択し、アクションを呼び出す、認証の順に選択します。
Note
認証ノードは、ダイアログ ツリーの最後のアクション ピッカーで (リーフ ノードとして) のみ使用できます。 ダイアログの途中で追加することはできません。 追加したら、他のノードをその下に追加できます。
新しいノードが自動的に表示されます: 親 Authenticate ノード、その後に成功パスと失敗パスのノードが続きます。
AuthenticateノードなしでのUser.AccessTokenの使用
User.IsLoggedIn
および User.AccessToken
変数は、 アクションの呼び出し メニュー エントリで提供されるテンプレートを使用しない場合でも使用できます。 最初にユーザーに User.AccessToken
Authenticate ノードを通過させずに 変数を渡すと、ユーザーにはその 手順 でログインするように求められます。
ユーザーが常にログインしていることが予想される場合、またはユーザーが別の トピック からリダイレクトされている場合は、 User.AccessToken
変数を渡すと便利です。 ユーザーがサイン インに失敗した場合に扱うアクションを呼び出すエントリで、提供されるテンプレートの使用をお勧めします。
Note
ユーザーが会話の途中でサインアウトした場合、トピック が User.AccessToken
変数を使用するノードに到達すると、再度ログインするように求められます。
成功パス
成功パスはwhere User.IsLoggedIn = True
に相当し、ユーザーが正常にログインした(またはすでにログインしていた)時点を表します。
User.AccessToken
変数を使用するロジックがある場合 (たとえば、フローを使用してバックエンド システムに 接続 し、ユーザーの情報を取得する場合)、このパスの下に配置する必要があります。
失敗パス
失敗パスは、IsLoggedIn = True
以外の条件に相当します。 ほとんどの場合、失敗パスは、ユーザーがログインに失敗した、間違ったパスワードを使用した、またはサインイン エクスペリエンスをキャンセルしたために発生します。
このケースを扱うロジックを追加します。 例として、再試行するためのオプション、またはライブ エージェントにエスカレートする オプションを提供しています。 特定のシナリオと使用状況に合わせて失敗パスのアクションをカスタマイズします。
使用しているトピックをテストする
IDプロバイダーで構成された実際のユーザーを使用して、必ずトピックをテストしてください。 サインインの成功パスと失敗パスの両方が実行されていることを確認します。そうすれば、ユーザーがログインに失敗したり、IDプロバイダーのサインイン エクスペリエンスにエラーが発生したりしても、驚くような事態は発生しません。