制限付きのヘルプセンター(ユーザーがアクセスするにはログインが必要)のコンテンツ、またはナレッジベースの制限されたコンテンツ(特定のユーザー以外は閲覧できない記事が含まれる一般公開のヘルプセンター)を、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の設定を確認し共有シークレットを生成するには
- Zendesk Supportで、サイドバーにある管理アイコン(
)をクリックし、「チャネル」>「ウィジェット」を選択します。
- 「カスタマイズ」タブをクリックします。
- ヘルプセンターのトグルがオンになっていることを確認します。
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ビットのランダムな数値。
- 下のコードサンプルの中から言語の要件に合ったテンプレートを見つけてください。
- 作成したトークンをwindow.zESettingsオブジェクトに設定します( "YOUR_JWT_TOKEN"を置き換えます)。このコードを、次のようにWeb Widgetスニペットの前に挿入します。
window.zESettings = { authenticate: { jwt: 'YOUR_JWT_TOKEN' } };
トークンは2時間後に失効します。ユーザーがログアウトしたときに次のAPIコールを追加して、ローカルストレージからすぐにトークンを削除できます。
zE(function() { zE.logout(); });
コードサンプル
トークンは、ページの読み込み時にサーバー側から動的に生成される必要があります。言語の要件に合ったテンプレートを以下のサンプルから見つけます。必要に応じてサンプルをカスタマイズし、#{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
0 コメント
ログインしてコメントを残してください。