認証設定を構成する

Customer Service のオムニチャネルには、Dynamics 365 Customer Service Enterprise の機能を拡張する一連の機能が用意されており、組織はデジタル メッセージング チャネルをまたいで顧客とすぐに接続して連携できます。 Customer Service 用オムニチャネルにアクセスする際は、追加のライセンスが必要です。 詳細については、Dynamics 365 Customer Service価格の概要およびDynamics 365 Customer Service価格プランページを参照してください。

適用対象: Dynamics 365 Contact Center—組み込み、Dynamics 365 Contact Center—スタンドアロン、Dynamics 365 Customer Service

ドメインからサインインした顧客を検証する認証設定を作成し、定義されているコンテキスト変数に基づいて情報を抽出できます。 匿名の顧客と認証済みの顧客を区別したり、コンテキスト変数に基づいたルールを作成できます。

たとえば、匿名の顧客と認証済みの顧客に対して別々のキューを設定できます。 認証された顧客に関する情報が多いので、ショッピング カートの値や特権ステータスなどの特定の変数に基づいて優先順位を付けることもできます。

認証設定レコードを作成したら、それをワークストリーム内のチャネル インスタンスに追加して機能させる必要があります。 これらのチャネルでは、認証がサポートされています。

  • チャット
  • Apple ビジネス向けメッセージ

顧客が認証されているかどうかを示すために、顧客サービス担当者 (サービス担当者 または 担当者) は 会話の概要 セクションで通知を受け取ります。 認証済み フィールドは、顧客の認証状態に基づいて はい または いいえ に設定されます。 詳細については、会話の要約 を参照してください。

認証と顧客識別の比較

認証と顧客識別は異なる機能です:

  • 認証は顧客の本人確認を行います。 顧客はあなたのウェブサイトやポータルにサインインし、サイトは署名済みのJSONウェブトークン(JWT)をチャットウィジェットに渡します。 システムは認証設定レコードで指定した公開鍵でトークンを検証します。
  • 顧客識別 は、顧客が事前アンケートで入力した名前、メールアドレス、電話番号などの情報を用いて、一致する取引先責任者またはアカウントのレコードを見つけて関連付けます。 身分証明書は顧客の認証にはなりません。 詳細は「顧客を自動的に特定する」をご覧ください。

前提条件

チャットの認証設定レコードを作成する

Copilot サービス管理センターでチャット認証設定レコードを作成できます。

  1. Copilot Service Admin Centerのサイトマップで、Customer support>Customer settingsへ行ってください。 顧客設定ページが表示されます。

  2. 認証設定セクションで、管理を選択します。 認証設定 ページが表示されます。

  3. 新しい認証設定を選択し、認証設定を追加ページで次の情報を入力します。

    • 名前: 認証設定の名前を入力します。

    • 所有者: 既定値を受け入れるか、必要な値に変更します。

    • 認証タイプ: 既定では、OAuth 2.0 は編集できません。

    • 公開キーの URL: ドメインの公開キーの URL を指定します。 このURLは、顧客がサインインしたドメインのJWTから入ってくる情報を検証するために使われます。

    • Javascriptクライアント関数:認証に使用するJavaScriptクライアント関数を指定します。 この関数はトークン エンド ポイントからトークンを抽出します。

      チャット認証設定レコードを構成します。

    公開鍵URLやJavaScriptクライアント関数の見つけ方については、この記事の後半で「Power Apps Portalsのセットアップ」や「カスタムポータルのセットアップ」で詳しくご覧ください。

  4. 保存を選びます。

チャット ウィジェットに認証を追加する

  1. Copilot サービス管理センターで、ワークストリーム設定でチャット ウィジェットを編集し、[ 動作 ] タブに移動します。

  2. 認証設定ボックスで、チャット認証レコードを参照して選択します。

ポータルにサインインしている顧客がチャット ウィジェットを開くと、JavaScript クライアント機能が JWT をクライアントからサーバーに渡します。 サーバーは公開鍵でJWT署名を検証し、その情報をDynamics 365 Contact Centerのチャット担当者に渡します。 管理者として、カスタムコンテキスト変数を定義することで、JWT にサインイン中の顧客に関する追加情報を含めて渡すことも可能です。 コンテキスト変数は、チャットウィジェットに関連付けられたワークストリームで定義されているとおり、正確に定義しなければなりません。 詳細については、コンテキスト変数の管理 を参照してください。

Power Apps ポータルのセットアップ

Power Appsポータルを使って作成したウェブサイトのチャットウィジェットに認証を追加すると、公開鍵URLとJavaScript クライアント関数が得られます。 Power Apps ポータルで有効な公開キー URL を持つには、カスタム証明書をアップロードする必要があります。

  • 公開キーの URL: <portal_base_URL>/_services/auth/publickey
  • Javascript クライアント関数: auth.getAuthenticationToken

標準のPower Appsポータルの場合、JavaScriptクライアント関数はデフォルトで連絡先レコードを会話にリンクする適切なクレームを持つトークンを返します。 このトークンには、サインインしたユーザーのコンタクト ID を含む sub クレームが含まれています。 subクレームは、システムがDataverse環境の連絡先レコードを自動的に識別してリンクするために使用する一意の識別子を提供します。 クレームについて詳しくは、subのステップ 3 をご覧ください。

カスタム ポータルの設定

認証されたチャット エクスペリエンスを、Power Apps ポータルを使用して開発されていないカスタム Web サイトに追加する場合、管理者が認証されたチャットを構成するには、Web 開発チームが次の手順を実行する必要があります。

  1. 認証サーバ-に公開キー/秘密キーのペアを生成します。 キーは RSA256 アルゴリズムを使用して生成する必要があります。

    以下のサンプルコードは秘密鍵と公開鍵のペアを生成します。

    openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
    openssl rsa -pubout -in private_key.pem -out public_key.pem
    
  2. 公開キーを返すエンドポイントを作成します。 システムは公開鍵を使って、チャットリクエストを認可する際に渡されるJWTを検証します。 認証設定レコードを作成する際に、このエンドポイントのURLを管理者アプリに入力してください。

    公開キーのエンドポイントは、次の例のようになります。

        -----BEGIN PUBLIC KEY----- 
        NIIBIjANBgkqhkiG9w0BAQEFABCOPQ8AMIIBCgKCAQEAn+BjbrY5yhSpLjcV3seP 
        mNvAvtQ/zLwkjCbpc8c0xVUOzEdH8tq4fPi/X5P/Uf2CJomWjdOf1wffmOZjFasx 
        ELG+poTqy5uX2dNhH6lOMUsV31QGG36skLivpLBCSK6lWlzsV6WGkb/m8r86aGzp 
        jtNhw8yvoTYB4updDrJ8pC+tx4EWK0WEmKn1GsW6TjUtxJjcTLI1puSbmcGHbkSi 
        RSbWkKPqaEVFALprw+W5ZCung5QX3KOkY/rJd+2JwULm7okyQCQaF7qwa5i9Uf65 
        7M6ZL4vsDevq7E/v3tf6qxpSSHzt4XspXVQty9QHhqDqBEY3PfI4L2JjgIGuPhfS 
        YQIDAQAB 
        -----END PUBLIC KEY-----
    

    複数の公開鍵を使用する必要がある場合、公開キーのエンドポイントは <kid, publickey> 組のセットを返すことができ、ここで kid はキー ID を指します。 キーIDペアは重複がないようにする必要があります。 ステップ3のJWTヘッダーに kid を渡します。 複数のキーを使用している場合、公開キーのエンドポイントは以下の例のようなものを返します。 公開キーは、Base64 でエンコードされます。

    [
        { 
            "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4=",
            "publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
            "expiry": 1608495423
        },
    {
            "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp__valid=",
            "publicKey": "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0NCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbjFLdXhtSEh3V3hjelZSWGRBVmMNCnBEaFZwa0FnYklhTGZBUWc1bFpvemZqc29vcWRGWkl0VlFMdmRERWFVeDNqTytrTkxZM0JFRnBYVDZTN3ZNZCsNCnZoM2hpMDNsQ1dINnNCTWtaSWtuUUliMnFpekFsT0diU2EvK3JrUElnYnpXQjRpT1QyWVhyOVB4bXR5d2o4WUINCnYram55VU5DSzMyZy9FYWsvM0k3YW1vZ2pJY0JISjNFTjVuQWJBMExVVnJwMW5DODJmeEVPOHNJTzNYdjlWNVUNCnc5QnVTVVFRSmtMejNQYVI5WTdRZUEyNW5LUGtqTXZ2Y0UxVU5oeVpIYlNLbmorSitkZmFjb1hsSGtyMEdGTXYNCldkSDZqR0pWcGNQMHBkNjFOa3JKa2c0aStheThwS2ZqdjNUOHN3NWdaVHFweFFaaitVRWxqaVM0SHRPTlhkNlENCnZRSURBUUFCDQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0NCg==",
            "expiry": 1608495423
        } 
    ]
    
  3. 認証済みユーザーのチャット開始時にシステムに送信するためのJWTを生成するサービスが必要です。

    a. JWT ヘッダーは、次の例のようになります。

    { 
      "alg": "RS256", 
      "typ": "JWT" 
    } 
    

    複数の公開キーを使用している場合は、キー ID (kid) を渡す必要があります。 ヘッダーは、次の例のようになります。

    { 
      "alg": "RS256", 
      "typ": "JWT",
      "kid": "qWO4EaKT1xRO7JC/oqALz6DCVr41B/qL0Hqp4in7hu4="
    } 
    

    b. JWT のペイロードには、以下を含める必要があります。

    • 少なくとも、以下の請求項を含みます。

      請求 定義
      iss トークンの発行者。
      イアット トークンが発行された日付 (数値の日付形式)。
      経験値 このトークンの有効期限 (数値の日付形式)。
      サブ 要求の件名です。
      注意: サインインしているユーザーの顧客サービスの連絡先または取引先企業レコードの GUID を渡すことをお勧めします。 この GUID は、連絡先レコードを識別して会話にリンクするために使用されます。 レコード検索では、連絡先またはアカウントでアクティブなステータスコードを持つレコードが特定されます。 カスタム状態コードを使用する場合、レコードの識別は機能しません。
    • lwicontexts ルーティングの目的で、または担当者に表示するために、会話の一部として渡すコンテキスト変数。
      詳細情報はこちら:
      カスタム コンテキストの管理
      setAuthTokenProvider メソッド
      コンテキスト変数を使用してレコードを自動的に識別する

    • 渡したいその他のデータ。

    ペイロードは、次のようになっている必要があります。

      { 
          "sub" : "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",  
          "lwicontexts" :"{\"msdyn_cartvalue\":\"10000\", \"msdyn_isvip\":\"false\", \"portalcontactid\":\"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb\"}", 
          "iat" : 1542622071, 
          "iss" : "contosohelp.com", 
          "exp" : 1542625672, 
          "nbf" : 1542622072 
      } 
    

    c. JWT の署名は秘密キーで署名されている必要があります。

    Note

    • トークンの有効期限が切れているか無効な場合、チャット ウィジェットはエラー イベントをスローします。
    • setContextProvider メソッドは、認証されているチャットには対応していません。 lwicontextsをJWTペイロードの一部として渡してください。
  4. コールバック関数を受け入れて、コールバック関数に JWT を返す JavaScript 関数を Web サイト上に作成します。 タイムアウトを避けるために、このJavaScript関数は10秒以内にJWTを返すべきです。 この JWT は、次の条件を満たす必要があります。

    • 手順 3 のヘッダー、ペイロード、署名を含んでいる。

    • 手順 1 のキー ペアの秘密キーで署名する必要があります。

      JWT は Web サーバー上で生成することをお勧めします。

以下のJavaScriptメソッドは、Copilotサービス管理センター内の認証設定レコードの認証トークンを取得します。

// This is a sample JavaScript client function

auth.getAuthenticationToken = function(callback) {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            callback(xhttp.responseText);
        }
    };
    xhttp.onerror = function(error) {
        callback(null);
    };

    // Replace this with a call to your token generating service
    xhttp.open("GET", "https://contosohelp.com/token", true);
    xhttp.send();
};
  1. あなたの開発者は以下の情報をあなたの管理者と共有する必要があります:

    a. 手順2の公開キー サービスの URL。

    例: https://www.contoso.com/auth/publickey

    b. 手順 4 の javascript クライアント関数の名前。 チャット開始時にライブ チャット ウィジェットが内部でこの名前を呼び出します。

    例 : auth.getAuthenticationToken

    Note

    ユーザーが認証される前にチャット ボタンが表示される場合、必要に応じて認証ページにリダイレクトするようにしてください。 手順 4 に記載の方法でリダイレクトを設定することもできますが、ユーザー フローの初期の設定手順で行うこともできます。

    次の図は、セットアップを示しています。

    認証済のチャット設定。

    続いて、以下の手順で認証済みチャットを設定します :

認証付きチャットの設定

  1. Copilotサービス管理センターに行き、前のセクションのステップ5の情報で認証設定レコードを作成してください。 詳細については、チャットの認証設定レコードを作成する を参照してください。

  2. 認証されたエクスペリエンスを持つチャット ウィジェットに認証設定を関連付けます。 詳細については、チャット ウィジェットに認証を追加する を参照してください。

    次の図は、ユーザーが認証された設定でチャットにアクセスした場合のコールシーケンスを示しています。

    認証済みチャットのランタイム。

Apple Messages for Business の認証設定を作成する

Note

Apple Messages for Businessチャネルのサポートは終了しました。 詳細については、非推奨を参照してください。

前提条件

  • 認証設定を構成する管理者には、より多くのセキュリティ アクセス許可が必要です。 詳細については、フィールドのセキュリティ アクセス許可の設定 を参照してください。

  • 組織に OAuth 2.0 OpenID Connect フローの実務知識があること確認してください。 手順は、次のセクションで説明します。

  • 組織に Apple Messages for Business認証の種類のリッチ メッセージ が少なくとも 1 つあることを確認します。 このリッチ メッセージ構成は、セットアップに必要です。

OAuth 2.0 OpenID Connect フローを使用して Apple Messages for Business の認証設定レコードを作成する

  1. Copilot サービス管理センターのサイト マップで、カスタマー サポート>Customer の設定に移動し、[認証設定の管理] を選択します。 既存の認証設定の一覧が表示されます。

  2. 新しい認証設定を選択し、認証設定を追加ページで次の情報を入力します。

    1. チャネルの種類ページで名前を入力し、チャネルの種類として Apple Messages for Business を選択します。

    2. [認証の種類] で、[OAuth 2.0 OpenID 接続フロー] を選択します。

    3. 認証設定の追加 ページで、以下の情報を入力します:

      • クライアント ID: 認証サーバーから発行される OAuth 2.0 のクライアント ID。
      • クライアント シークレット: 承認サーバーに送信された要求を認証するために使用するクライアント シークレット。
      • スコープ: 追加される各スコープによって、顧客にどのユーザー データを要求するかが指定されます。 スコープのコンテンツは、サービス プロバイダーから入手できるものと、完全に一致する必要があります。
      • アクセス トークン URL: アクセス トークンを要求できるサービス プロバイダーのエンドポイント。
      • 解読トークン URL: スコープで要求された顧客情報を OAuth 2.0 API が取得するためのエンドポイント。
      • 追加パラメーター: 要求からの追加パラメーターの取得を認証サービスに許可します。
    4. 追加情報ページで、必要であればアクセス トークンの有効期限 (秒) を定義します。 既定の有効期限は 1 時間です。
      指定した時間が経過すると、以前に認証された会話の [会話の概要] セクションの [認証済み] フィールドが [いいえ] に変わります。

    5. リッチ メッセージ ページで追加を選択してから、認証設定に関連付けるリッチ メッセージを 1 つ以上選択します。

    6. 概要 ページを確認し、次へ を選択します。 認証の設定を構成しました。

    7. リダイレクト情報 ページで URL をコピーします。 このURLを認証サービスプロバイダーのウェブサイトの許可されたコールバックURL欄に追加してください。

    8. 完了を選択します。

Apple Messages for Business チャネルに認証を追加する

  1. 認証を追加するチャネル インスタンスを含む作業ストリームを開きます。
  2. チャネル設定の動作ページで認証設定に移動し、機能を有効にしてから、認証設定をドロップダウン メニューから選択します。 詳細については、Apple Messages for Business チャネルを構成する を参照してください。
  3. 各チャネル インスタンスの認証設定を確認または更新するには、編集を選択します。

チャット ウィジェットの追加
会話の事前アンケートを構成する
クイック返信を作成します。
作業時間の作成および管理
チャット ウィジェットを Power Apps ポータルに埋め込む
顧客を自動的に識別する