ログイン / Zendesk Chatとの統合
 ドキュメントに戻る

ログイン

  • 統合ガイド

  • 認証オプション

  • ユーザーデータストレージ

  • セキュリティ

  • カスタマイゼーション

  • 通信サービスプロバイダー

  • 特徴

  • ハウツー

  • 拡張機能

  • 法的設定

  • リファレンス

  • 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に記載されています。

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

    訪問者との操作

    認証に成功すると、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で確認できます。

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

    答えたくない

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

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

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