制限付きのヘルプセンター(ユーザーがアクセスするにはログインが必要)のコンテンツ、またはナレッジベースの制限されたコンテンツ(特定のユーザー以外は閲覧できない記事が含まれる一般公開のヘルプセンター)を、Web Widget(従来版)に表示するように設定できます。
制限されたコンテンツをWeb Widget(従来版)に表示するように設定した場合:
- Webサイトにログインしている訪問者は、Web Widget(従来版)を介して制限付きヘルプセンターの記事を読むことができます。なお、Web Widgetを埋め込んだカスタマーのサイトは、ユーザーのメール認証に責任を負います。
- ただし、ログインしていない訪問者には、一般公開の記事のみが表示されます。一般公開用の記事がない場合は、Web Widget(従来版)にヘルプセンター機能が表示されません。
この記事では、次のトピックについて説明します。
Web Widget(従来版)について詳しくは、「Web Widget(従来版)を使用したWebサイトへのカスタマーサービスの埋め込み」を参照してください。
制限付きヘルプセンターおよびナレッジベースのコンテンツの詳細については、「コンテンツの利用をログインユーザーのみに制限する」および「ナレッジベースコンテンツへのアクセスを制限する方法」を参照してください。
ヘルプセンターのセキュリティ設定を確認する
Web Widget(従来版)では、ヘルプセンターのコンテンツを次のいずれかのセキュリティ設定で表示できます。ヘルプセンターのタイプに応じて、Guideのヘルプセンターのセキュリティ設定で、「サインインが必要」オプションを有効または無効にする必要があります。
ヘルプセンターのタイプ | 「サインインが必要」を有効にするかどうか |
---|---|
一般公開ヘルプセンター:すべてのコンテンツが公開されている。 | 「サインインが必要」を有効にしない。 |
制限付きヘルプセンター:コンテンツを表示するにはユーザー登録して、ログインする必要がある。 | 「サインインが必要」を有効にする。 |
制限されたコンテンツのある一般公開ヘルプセンター:一部の記事やセクションは特定のユーザーのみが利用でき、それ以外はヘルプセンターのすべての訪問者が利用できる。 | 「サインインが必要」を有効にしない。ヘルプセンター内の制限のない記事は、ログインせずに誰でも閲覧できます。一方で、制限された記事は、適切な権限を持つサインインユーザーのみが閲覧可能です。 |
ヘルプセンターのセキュリティ設定を確認するには
- Guideで、サイドバーにある設定アイコン()をクリックします。
- 必要に応じて「セキュリティ」セクションで、ヘルプセンターのタイプごとに「サインインが必要」オプションを有効または無効にします。
- 制限付きのヘルプセンターを使用している場合や、一般に公開されたヘルプセンターに制限付きのコンテンツを置いている場合には、「制限されたコンテンツがWeb Widget(従来版)に表示されるように設定する」の手順に進みます。
制限されたコンテンツがWeb Widget(従来版)に表示されるように設定する
制限付きのヘルプセンターを使用している場合や、一般に公開されたヘルプセンターに制限付きのコンテンツを置いている場合は、コンテンツが制限されています(「ヘルプセンターのセキュリティ設定を確認する」を参照してください)。制限付きコンテンツをWeb Widget(従来版)に表示させるには、Web Widget(従来版)の設定で、Webページのコードにスニペットを挿入する必要があります。
一般に公開されているヘルプセンターの場合は、この作業は関係ありません。
まず、Web Widget(従来版)の設定を確認し、共有シークレットを生成する必要があります。
Web Widgetの設定を確認し共有シークレットを生成するには
- 管理センターで、サイドバーにあるチャネルアイコン()をクリックし、「従来版」>「Web Widget」を選択します。
- 「カスタマイズ」タブをクリックします。
- ヘルプセンターのトグルがオンになっていることを確認します。
Guideの設定が完了していない場合は、Guideの設定に進み、ヘルプセンターのタイプに応じて「サインインが必要」オプションを有効または無効にします(「ヘルプセンターのセキュリティ設定を確認する」を参照)。
- 「セキュリティの設定」セクションまでスクロールし、「設定」をクリックします。
- 「許可リスト」ボックスに、Web Widget(従来版)が含まれるサブドメインを入力します。これにより、Web Widgetで認証されたユーザーに、制限されているヘルプセンターコンテンツの表示が許可されます。
セキュリティを守るために、サブドメインを許可リストに追加することをお勧めします。特別な理由があって、特定のサブドメインへのアクセスを制限しない場合は、このボックスは空のままでかまいません。
- 「エージェントが制限されたヘルプセンターコンテンツにアクセスできるようにします」を選択すると、エージェントと管理者がWeb Widget(従来版)にアクセスしたときに、制限されたヘルプセンターコンテンツが表示されるようになります。
制限付きのヘルプセンターを運用している場合にエージェントのアクセスが有効になっていないと、エージェントや管理者のWeb Widget(従来版)にヘルプセンター機能が表示されません。制限された記事がある場合にエージェントのアクセスが有効になっていないと、エージェントに表示されるコンテンツは一般公開のものだけになります。
-
共有シークレットの設定:
- 「生成」ボタンをクリックして共有シークレットを生成します。
共有シークレットはセキュリティ設定なので、生成したら間をおかずに、エンジニアリングチームとのコミュニケーションまたはコードベースに直接貼り付けてください。ブラウザに入力するものではありません。
メモ:共有シークレットはセキュリティを保つためのものです。そのため、生成されるのは一度きりです。共有シークレットへのアクセス権がなく、トークンを作成するために完全なシークレットが必要な場合は、「リセット」をクリックしてシークレットをリセットすることができます。 - 共有シークレットが侵害されたと思われる場合は、共有シークレットをリセットした後、すべてのトークンを取り消すことができます。これにより、以前に認証されたユーザーのアクセスが無効になり、新しい有効なトークンが発行されるまで制限されたコンテンツは表示されなくなります。
- 「生成」ボタンをクリックして共有シークレットを生成します。
共有シークレットを生成したら、それを使用してWeb Widget(従来版)スニペットに追加するJWTトークン(JWTの詳細はこちらを参照)を作成します。
JWTトークンを作成してWeb Widget(従来版)スニペットにコードを追加するには
- JWTトークン用にサーバー側のデータペイロードを構築します。これには以下の情報が必要です。
- name:カスタマーの名前
- email:顧客のメールアドレス
-
iat:現在のタイムスタンプの整数値(秒単位)。言語によっては、たとえばJavaScript's Date.now()のようにミリ秒を返す関数があるので、秒単位に換算する必要があります。
Web Widget認証用のiatで許可されるクロックスキューは最大2分です。
- jti:このトークンの一意の識別子。既に送信されている他のjwtトークンと同じ識別子にすることはできません。たとえば64ビットのランダムな数値。
- 下のコードサンプルの中から言語の要件に合ったテンプレートを見つけてください。
- サーバーからJWTを取得し、JWTの値を使用してコールバックを作成する関数を追加します。「YOUR_JWT_TOKEN」を作成したトークンに置き換えます。このコードを、次のようにWeb Widget(従来版)スニペットの前に挿入します。
<script type="text/javascript"> window.zESettings = { webWidget: { authenticate: { jwtFn: function(callback) { callback('YOUR_JWT_TOKEN'); } } } }; </script>
トークンは2時間後に失効します。ユーザーがログアウトしたときに次のAPIコールを追加して、ローカルストレージからすぐにトークンを削除できます。
<script type="text/javascript"> zE(function() { zE.logout(); }); </script>
コードサンプル
トークンは、ページの読み込み時にサーバー側から動的に生成される必要があります。言語の要件に合ったテンプレートを以下のサンプルから見つけます。必要に応じてサンプルをカスタマイズし、#{details}をご自分の情報で置き換えてください。
これらのサンプルのどれも要件に合致しない場合は、JWTライブラリの広範なリストで探してみてください。
Ruby
まず、ruby-jwtをインストールします。
Rubygemsを使用している場合:
gem install jwt
Bundlerを使用している場合は、gemファイルに次の行を追加します。
gem 'jwt'
次に、共有シークレットを使用してトークンを生成します。
require 'jwt'
payload = {
:name => "#{customerName}",
:email => "#{customerEmail}",
:iat => timestamp,
:jti => "#{uniqueId}"
}
token = JWT.encode payload, "#{yourSecret}"
NodeJS
jsonwebtokenをインストールします。
npm install jsonwebtoken --save-dev
次に、共有シークレットを使用してトークンを生成します。
var jwt = require('jsonwebtoken');
var payload = {
name: '#{customerName}',
email: '#{customerEmail}',
iat: #{timestamp},
jti: '#{uniqueId}'
};
var token = jwt.sign(payload, '#{yourSecret}');
Python
python-joseをインストールします。
pip install python-jose
共有シークレットを使用してトークンを生成します。
from jose import jwt
var payload = {
'name': '#{customerName}',
'email': '#{customerEmail}',
'iat': #{timestamp},
'jti': '#{uniqueId}'
}
token = jwt.encode(payload, '#{yourSecret}'
PHP
PHP-JWTをダウンロードします。
composer require firebase/php-jwt
共有シークレットを使用してトークンを生成します。
use \Firebase\JWT\JWT;
$payload = {
'name' => '#{customerName}' ,
'email' => '#{customerEmail}',
'iat' => #{timestamp},
'jti' => '#{uniqueId}'
};
$token = JWT::encode($payload, '#{yourSecret}');
Elixir
`json_web_token_ex`を`mix.exs`ファイルに追加します。
defp deps do
[{:json_web_token, "~> 0.2"}]
end
共有シークレットを使用してトークンを生成します。
data = %{
name: "#{customerName}",
email: "#{customerEmail}",
iat: "#{timestamp}",
jti: "#{uniqueId}"
}
options = %{ key: "#{yourSecret}" }
jwt = JsonWebToken.sign data, options