Login / Integration in Zendesk Chat
 Alle Dokumentation

Login

  • Integrationsleitfaden

  • Authentifizierungs­optionen

  • Nutzerdatenspeicher

  • Sicherheit

  • Personalisierung

  • Anbieter von Kommunikationsdiensten

  • Funktionen

  • Anleitungen

  • Erweiterungen

  • Einstellungen zu Rechtlichem

  • Referenzen

  • 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.

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

    Arbeiten mit Besuchern

    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 Show Visitor auszuführen. Sie finden diese in Ihrem Zendesk Chat-Konto durch Auswahl des gewünschten Besuchers.

    Beispiel der Anfrage 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'

    Antwortbeispiel:

    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"
    }

    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.

    War dieser Artikel hilfreich?
    Vielen Dank!
    Gibt es etwas, das wir verbessern können? Nachricht
    Das tut uns leid
    Bitte erläutern Sie, weshalb dieser Artikel nicht hilfreich ist. Nachricht
    Vielen Dank für Ihr Feedback!
    Wir werden Ihr Feedback aufgreifen und dazu nutzen, Ihr Erlebnis verbessern.
    Diese Seite bewerten
    Diese Seite bewerten
    Gibt es etwas, das wir verbessern können?

    Jetzt nicht

    Vielen Dank für Ihr Feedback!
    Letztmalig aktualisiert: 30. Dezember 2022

    Haben Sie einen Tippfehler oder einen anderen Textfehler gefunden? Wählen Sie den Text aus und drücken Sie Strg+Eingabe.

    Problem melden
    Wir überprüfen unsere Inhalte ständig. Ihr Feedback hilft uns, sie zu verbessern.
    Geben Sie eine E-Mail-Adresse an, damit wir Sie erreichen können
    Vielen Dank für Ihr Feedback!