Integration in Zendesk Chat

So funktioniert's

Durch die Integration in Zendesk Chat können Sie Benutzer von Xsolla-Login mit Ihrem Projekt verknüpfen, das Zendesk Chat-Besucher enthält, die Fragen an Ihr Support-Team stellen. Der aufseiten von Zendesk verwendete Parameter external_id entspricht der Benutzer-ID in Ihrem Login-Projekt. Wenn Sie einen Besucher als Xsolla-Login-Benutzer identifiziert haben, besteht die Möglichkeit, deren Konto über das Kundenportal zu verwalten.

Für wen ist es

Partner, die bereits Login integriert haben und ein Zendesk Chat-Konto besitzen.

Wie komme ich dazu

So verknüpfen Sie einen Besucher:

  1. Authentifizieren Sie einen Benutzer in Ihrem Login-Projekt durch eine der folgenden Anfragen:
    • Authentifizierung über Benutzername und Passwort (JWT und OAuth 2.0).
    • Authentifizierung über soziale Netzwerke (JWT und OAuth 2.0).
  2. Generieren Sie einen Zendesk-JWT.
  3. Authentifizieren Sie einen Besucher in Zendesk Chat.

Zendesk-JWT generieren

Der Zendesk-JWT basiert auf einem Token, den Sie vom Xsolla-Login-Server erhalten, wenn Sie einen Benutzer in Ihrem Login-Projekt authentifizieren. Sie können einen Token in Cookie-Dateien auf einer erforderlichen Domäne speichern und ihn beim Generieren eines Zendesk-JWT zu einer HTTP-Anfrage hinzufügen.

Sie können bei der Implementierung des Aufrufs auch Ihr eigenes Antwortformat festlegen.

Im Folgenden ist ein vereinfachter Ablauf für das Abrufen eines Zendesk-JWT basierend auf Go dargestellt. Der vollständige Code für das Generieren eines Zendesk-JWT finden Sie auf GitHub.

Installieren Sie die folgenden Pakete, bevor Sie ein JWT generieren:

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

So rufen Sie ein Zendesk-JWT ab:

  1. Validieren Sie einen JWT.
  2. Dekodieren Sie einen JWT.
  3. Erstellen Sie eine Liste der JWT-Ansprüche.
  4. Signieren Sie einen JWT.

JWT validieren

Extrahieren Sie einen JWT aus den Cookie-Dateien und validieren Sie ihn mithilfe des geheimen Schlüssel. Dieser befindet sich im Kundenportal unter Ihrem Login-Projekt > Allgemeine Einstellungen > Geheimer Schlüssel.

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 dekodieren

Dekodieren Sie einen JWT und extrahieren Sie daraus die Werte der folgenden Ansprüche:

  • email: E-Mail-Adresse
  • sub: Benutzer-ID

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

Liste der JWT-Ansprüche erstellen

Erstellen Sie eine Liste der JWT-Ansprüche. Eine Beschreibung zu jedem Anspruch befindet sich im Abschnitt 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 signieren

Signieren Sie eine Token mit dem geheimen Schlüssel Ihres Zendesk Chat-Kontos. Sie finden ihn im Chat dashboard unter Settings > Widget > Registerkarte Widget security > Visitor Authentication.

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

Besucher in Zendesk Chat authentifizieren

Ermöglicht das Hinzufügen folgender Besucherdaten zu Zendesk Chat:

  • Name
  • E-Mail-Adresse
  • Kennung
Besucherdaten werden beim Generieren eines Zendesk-JWT hinzugefügt.

Nutzen Sie den empfangenen Zendesk-JWT, um einen Besucher in Zendesk Chat zu authentifizieren. Initialisieren Sie das Web SDK mit der authentication wie folgt:

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)
        });
      });
    }
  }
});

Der Ablauf der Besucherauthentifizierung ist in der Anleitung und im Web SDK erläutert.

Note:
Soziale Netzwerke geben eventuell keine E-Mail-Adressen von Benutzern weiter. Folgen Sie daher der Anleitung, um eine E-Mail-Adresse anzufragen.

Methodengruppe "Visitor" nutzen

Nach erfolgreicher Authentifizierung wird ein Besucher in Ihrem Zendesk Chat-Konto im Modul Visitors angezeigt.

Sie müssen eine Token abrufen, um den Endpunkt Visitors nutzen zu können (Anleitung). Bei Nutzung der Daten eines Besuchers, welcher mit Ihrem Login-Projekt verknüpft ist, müssen Sie:

  1. Besucherdaten abrufen.
  2. Besucher mit Ihrem Login-Projekt verknüpfen.

Besucherdaten abrufen

Sie sollten die Visitor ID abrufen, um die Anfrage Get a Visitor auszuführen. Sie finden diese in Ihrem Zendesk Chat-Konto durch Auswahl des gewünschten Besuchers.

Beispiel der Anfrage Get a Visitor:

Copy
Full screen
Small screen
GET /api/v2/visitors/9855790-xjj3u5xPWhW1Fv HTTP/1.1
Host: www.zopim.com
Authorization: Bearer <token>

Antwortbeispiel:

Copy
Full screen
Small screen
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"
}

Wenn ein Besucher mit Ihrem Login-Projekt verknüpft ist, entspricht der mit den Daten empfangene Parameter external_id der Benutzer-ID. Die Benutzer-ID befindet sich im Kundenportal unter Ihrem Login-Projekt > Nutzer > Nutzername/ID.