Zendesk Chatとの統合

どのように動作するか

Zendesk Chatとの統合により、エクソラログイン製品のユーザーを、サポートチームに質問を提出したZendesk Chatの訪問者とプロジェクトにリンクさせることができます。Zendesk側で使用するexternal_idパラメータは、ログインプロジェクトのユーザIDに対応しています。訪問者をエクソラログインユーザーとして識別した場合、パブリッシャーアカウントを介してそのアカウントを管理することができます。

使用に適した方

ログインがすでに統合されており、Zendesk Chatアカウントを持っているパートナー。

入手方法

訪問者をリンクするには:

  1. 次のいずれかのリクエストにより、ログインプロジェクトのユーザーを認証します:
    • ユーザー名とパスワードによる認証(JWTOAuth 2.0)。
    • ソーシャルネットワークによる認証(JWTOAuth 2.0)。
  2. Zendesk JWTを生成する
  3. Zendesk Chatへの訪問者を認証する

Zendesk JWTを生成する

Zendesk JWTは、ログインプロジェクトでユーザーを認証するときにエクソラログインサーバーから受信したトークンに基づいています。必要なドメインのクッキーファイルにトークンを保存し、Zendesk JWTの生成時にHTTPリクエストに追加できます。

コールを実装するときに、自分の応答形式を設定することもできます。

以下は、Goに基づいてフローを取得するZendesk JWTの簡易バージョンです。Zendesk JWT生成コード全体はGitHubにあります。

JWTを生成する前に、次のパッケージをインストールします:

Copy
Full screen
Small screen
go get github.com/dgrijalva/jwt-go
go get github.com/rs/cors

Zendesk JWTを取得するには:

  1. JWTを検証する
  2. JWTをデコードする
  3. JWTクレームのリストを作成する
  4. JWTに署名する

JWTを検証する

クッキーファイルからJWTを抽出し、パブリッシャーアカウント>ログインプロジェクト>一般設定>秘密鍵にある秘密鍵で検証します。

Copy
Full screen
Small screen
cookie, err := r.Cookie("token")

token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
  if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
    return nil, errors.New("unexpected signing method")
  }
  return []byte(loginSecret), nil
})

var loginClaims jwt.MapClaims
var ok bool
if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
  writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
  return
}

JWTをデコードする

JWTをデコードし、JWTから次のクレームの値を抽出します:

  • email-メールアドレス
  • sub-ユーザーID

Copy
Full screen
Small screen
var sub, email string
sub, _ = loginClaims["sub"].(string)
email, _ = loginClaims["email"].(string)

JWTクレームのリストを作成する

JWTのクレームのリストを作成します。すべてのクレームの説明は、Creating a JWT tokenモジュールにあります。

Copy
Full screen
Small screen
zendeskClaims := jwt.MapClaims{}
zendeskClaims["name"] = email
zendeskClaims["email"] = email
zendeskClaims["external_id"] = sub
zendeskClaims["iat"] = time.Now().UTC().Unix()

JWTを署名する

Zendesk Chatアカウントの秘密鍵でトークンに署名します。Chat dashboard>Settings>Widget>Widget securityタブ>Visitor Authenticationで確認できます。

Copy
Full screen
Small screen
zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))

Zendesk Chatへの訪問者の認証

以下の訪問者データをZendesk Chatに追加できます:

  • 名前
  • メールアドレス
  • 識別子
Zendesk JWTの生成中に訪問者データが追加されます。

受け取ったZendesk JWTを使用して、訪問者をZendesk Chatに認証します。以下の方法で、authenticationオプションを使用してWeb SDKを初期化します:

Copy
Full screen
Small screen
zChat.init({
  account_key: ACCOUNT_KEY,
  authentication: {
    jwt_fn: function(callback) {
      fetch('https://example.com:8001/generate/token', {
        credentials: "include"
      }).then(function(res) {
        res.text().then(function(body) {
          const jwt = JSON.parse(body).token;
          callback(jwt)
        });
      });
    }
  }
});

訪問者認証フローは、説明Web SDKに記載されています。

Note
ソーシャルネットワークは、ユーザーのメールアドレスに関するデータを渡さない場合があります。説明に従ってメールアドレスをリクエストします。

訪問者との操作

認証に成功すると、Zendesk Chatアカウント>Visitorsモジュールに訪問者が表示されます。

メソッドのVisitorsエンドポイントを操作するには、トークン(説明)を取得する必要があります。ログインプロジェクトにリンクされている訪問者データを操作する場合:

  1. 訪問者データを取得する
  2. 訪問者がログインプロジェクトにリンクされています。

訪問者データを取得する

Show Visitorリクエストを実行するには、Visitor IDを取得する必要があります。必要な訪問者を選択することにより、Zendesk Chatアカウントでそれを見つけることができます。

Show Visitorリクエストの例:

Copy
Full screen
Small screen
http
  • http
  • curl
GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
Authorization: Bearer <token>
curl --request GET \
  --url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
  --header 'authorization: bearer_token'

応答の例:

Copy
Full screen
Small screen
http
  • http
  • curl
HTTP/1.1 200 OK
Content-Type: application/json

{
  "banned": false,
  "notes": "",
  "id": "9855790.xjj3ukxyIhn6j3",
  "email": "email@email.com",
  "phone": "",
  "created": 1586950554,
  "name": "email@email.com",
  "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}
{
  "banned": false,
  "notes": "",
  "id": "9855790.xjj3ukxyIhn6j3",
  "email": "email@email.com",
  "phone": "",
  "created": 1586950554,
  "name": "email@email.com",
  "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
}

訪問者がログインプロジェクトにリンクされている場合、受信データのexternal_idパラメータはユーザーIDに対応します。ユーザーIDは、パブリッシャーアカウント>ログインプロジェクト>ユーザー>ユーザー名/IDで確認できます。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
このページを評価する
このページを評価する
改善できることはありますか?

答えたくない

ご意見ありがとうございました!
最終更新日: 2021年4月12日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!