ライブ チャットのシングル サインオン中に、認証トークンをボットに渡す

重要

Power Virtual Agents 機能は、生成 AI への多大な投資と Microsoft Copilot 全体の統合の強化により、現在 Microsoft Copilot Studio の一部となっています

ドキュメントやトレーニング コンテンツが更新される際、一部の記事やスクリーンショットで Power Virtual Agents に言及することがあります。

Customer Service 用オムニチャネルでシングル サインオン (SSO) を使用すると、進行中の顧客との会話中にボットが顧客に代わって安全なアクションを実行できます。

ライブ チャット チャネルで、Azure や Copilot Studio ボットの認証を設定できます。 請求書の支払い、注文の返品、その他の個人情報など、機密情報の検索や処理を行う前に、顧客との会話で認証を要求できます。 顧客がサインインしていない場合や、顧客のサインインを検証できなかった場合に、ボットの作成者や開発者は OAuth カードの表示を選択できます。 すでに顧客がサインインしている場合は、カードの非表示を選択できます。

この動作の仕組みを次に説明します。

  • ライブ チャットで個人情報や機密情報を処理する前に、ボットは顧客に認証を要求します。

  • OAuth カードを介入させて機能を呼び出し、認証トークンをボットに直接送信します。

  • 次に、この機能は (見つかった場合に) 認証トークンを渡し、顧客のサインイン状態に基づいて、OAuth やサインイン カードを表示するかどうかを Customer Service 用オムニチャネルに伝えます。

前提条件

Azure ボットを使用している場合は、次の 2 つのライブラリ パッケージの最新バージョンを必ずインストールしてください。

  • Microsoft.Bot.Builder.Dialogs このライブラリは .NET のシンプル ダイアログ クラスを実装します。
  • Microsoft.Bot.Builder.Integration.AspNet.Core このライブラリは Bot Builder SDK と ASP.NET Core を統合します。

Copilot Studio ボットを使用している場合は、Copilot Studio のエンド ユーザー認証を必ず手動で設定します。 詳細情報: ユーザー認証を手動で構成する

サンプル コード

こちらが、ライブ チャットのシングル サインオン (SSO) 中に、Azure や Copilot Studio ボットに認証トークンを渡す方法を示すコード サンプルです。

const signInIds = [];
window.Microsoft.Omnichannel.LiveChatWidget.SDK.setBotAuthTokenProvider(async (botTokenUrl, callback) => {
  const urlSearchParams = new URLSearchParams(botTokenUrl);
  const signInId = urlSearchParams.get("state");

  if (signInIds.includes(signInId)) { // Ignore authenticated sign-in cards
    callback({show: false});  // Hide card
    return;
  }

  signInIds.push(signInId);

  const authUrl = ""; // Customer's Authentication API
  const authResponse = await fetch(authUrl, method: "POST"});
  const {token} = authResponse;  // Customer's Auth Token

  const data = {
    token: "token"
  };

  const payload = {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify(data)
  };

  try {
    const botAuthResponse = await fetch(botTokenUrl, payload); // Posts Auth Token to Bot directly
    
    // Sign in through Bot is successful
    if (botAuthResponse.status === 200) {
      signInIds.push(signInId); // Track authenticated sign-in card
      callback({show: false}); // Hide card
    }

    if (botAuthResponse.status === 404 || botAuthResponse.status == 202) {
      callback({show: false}); // Hide card
      return;
    } else {
      // Other condition handling    
    }

    return;
  } catch (error) {
  
  }

  callback({show: true});  // Show sign-in card by default
});

参照

Azure ボットの統合
Copilot Studio ボットを統合する
setBotAuthTokenProvider メソッド