Zendesk Chatとの統合
どのように動作するか
Zendesk Chatとの統合により、エクソーラログイン製品のユーザーを、サポートチームに質問を提出したZendesk Chatの訪問者とプロジェクトにリンクさせることができます。Zendesk側で使用するexternal_id
パラメータは、ログインプロジェクトのユーザIDに対応しています。訪問者をエクソーラログインユーザーとして識別した場合、アドミンページを介してそのアカウントを管理することができます。
使用に適した方
ログインがすでに統合されており、Zendesk Chatアカウントを持っているパートナー。
入手方法
訪問者をリンクするには:
Zendesk JWTを生成する
Zendesk JWTは、ログインプロジェクトでユーザーを認証するときにエクソーラログインサーバーから受信したトークンに基づいています。必要なドメインのクッキーファイルにトークンを保存し、Zendesk JWTの生成時にHTTPリクエストに追加できます。
コールを実装するときに、自分の応答形式を設定することもできます。
以下は、Goに基づいてフローを取得するZendesk JWTの簡易バージョンです。Zendesk JWT生成コード全体はGitHubにあります。
JWTを生成する前に、次のパッケージをインストールします:
- curl
1go get github.com/dgrijalva/jwt-go
2go get github.com/rs/cors
Zendesk JWTを取得するには:
JWTを検証する
クッキーファイルからJWTを抽出し、アドミンページ>ログインプロジェクト>一般設定>秘密鍵にある秘密鍵で検証します。- go
1cookie, err := r.Cookie("token")
2
3token, err := jwt.Parse(cookie.Value, func(token *jwt.Token) (interface{}, error) {
4 if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
5 return nil, errors.New("unexpected signing method")
6 }
7 return []byte(loginSecret), nil
8})
9
10var loginClaims jwt.MapClaims
11var ok bool
12if loginClaims, ok = token.Claims.(jwt.MapClaims); !ok || !token.Valid {
13 writeErrorResponse(w, "00-01", "Token is invalid", http.StatusUnauthorized)
14 return
15}
JWTをデコードする
JWTをデコードし、JWTから次のクレームの値を抽出します:email
-メールアドレスsub
-ユーザーID
- go
1var sub, email string
2sub, _ = loginClaims["sub"].(string)
3email, _ = loginClaims["email"].(string)
JWTクレームのリストを作成する
JWTのクレームのリストを作成します。すべてのクレームの説明は、- go
1zendeskClaims := jwt.MapClaims{}
2zendeskClaims["name"] = email
3zendeskClaims["email"] = email
4zendeskClaims["external_id"] = sub
5zendeskClaims["iat"] = time.Now().UTC().Unix()
JWTを署名する
Zendesk Chatアカウントの秘密鍵でトークンに署名します。- go
1zendeskToken := jwt.NewWithClaims(jwt.SigningMethodHS256, zendeskClaims)
2zendeskTokenString, _ := zendeskToken.SignedString([]byte(zendeskSecret))
Zendesk Chatへの訪問者の認証
以下の訪問者データをZendesk Chatに追加できます:
- 名前
- メールアドレス
- 識別子
受け取ったZendesk JWTを使用して、訪問者をZendesk Chatに認証します。以下の方法で、
- javascript
1zChat.init({
2 account_key: ACCOUNT_KEY,
3 authentication: {
4 jwt_fn: function(callback) {
5 fetch('https://example.com:8001/generate/token', {
6 credentials: "include"
7 }).then(function(res) {
8 res.text().then(function(body) {
9 const jwt = JSON.parse(body).token;
10 callback(jwt)
11 });
12 });
13 }
14 }
15});
訪問者認証フローは、説明とWeb SDKに記載されています。
訪問者との操作
認証に成功すると、Zendesk Chatアカウント>
メソッドの
- 訪問者データを取得する。
- 訪問者がログインプロジェクトにリンクされています。
訪問者データを取得する

http
- http
- curl
1GET https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
2Authorization: Bearer <token>
1curl --request GET \
2 --url https://www.zopim.com/api/v2/visitors/9855790-xjj3u5xPWhW1Fv \
3 --header 'authorization: bearer_token'
応答の例:
http
- http
- curl
1HTTP/1.1 200 OK
2Content-Type: application/json
3
4{
5 "banned": false,
6 "notes": "",
7 "id": "9855790.xjj3ukxyIhn6j3",
8 "email": "email@email.com",
9 "phone": "",
10 "created": 1586950554,
11 "name": "email@email.com",
12 "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
13}
1{
2 "banned": false,
3 "notes": "",
4 "id": "9855790.xjj3ukxyIhn6j3",
5 "email": "email@email.com",
6 "phone": "",
7 "created": 1586950554,
8 "name": "email@email.com",
9 "external_id": "82cd5e0c-c3ff-11e9-b199-c1e5fc81c37f"
10}
ログインプロジェクトへの訪問者リンクの確認
訪問者がログインプロジェクトにリンクされている場合、受信データのexternal_id
パラメータはユーザーIDに対応します。ユーザーIDは、アドミンページ>ログインプロジェクト>ユーザー>ユーザー名/IDで確認できます。誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。