हम कैसे मदद करें?

संक्षेप में बताएँ – हम ईमेल से संपर्क करेंगे।

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
मुख्य पृष्ठ पर

Ziyaretçileri tanımlama ve bağlam iletme

ReactiveChat('identify') ile oturum açmış kullanıcıları bildirme, userHash değerini sunucunuzda HMAC-SHA256 ile imzalama, gizli anahtarı yenileme ve asistana ürün veya sepet gibi yapılandırılmış sayfa bağlamı verme.

Web siteniz kimin geldiğini biliyorsa sohbete bildirin. Ekibiniz böylece panelde “Ziyaretçi 4f2a” yerine ad görür; müşteri verileri ve müşteri portalı gibi özellikler ancak bu şekilde mümkün olur.

İlke: Tarayıcı hiçbir şeyi kanıtlamaz. Sayfanın identify üzerinden iddia ettiği her şeyi herhangi bir ziyaretçi konsolda taklit edebilir. Kullanıcı yalnızca sunucunuzun, tarayıcıya asla ulaşmayan gizli anahtarla hesapladığı imzayla doğrulanmış sayılır.

Tarayıcıdaki çağrı

ReactiveChat('identify', {
  userId:   '4711',
  email:    'kim@example.com',
  name:     'Kim Berger',
  userHash: '9c1f…',
  exp:      1792503600
});

Diğer alanlar atılır. identify, widget yüklenmeden önce gelebilir; kuyruğa alınır, erken yüklemeyi tetiklemez. Değerler bağlantı kurulurken iletilir; widget zaten bağlıysa hemen iletilir.

Gizli anahtar

Hesabınızda Proje → Kimlik doğrulama altında projenin gizli anahtarını oluşturursunuz (yetki: projeyi düzenleme). 64 onaltılık karakterden oluşur; tam hâli yalnızca bir kez, sonrasında maskeli gösterilir. Sunucunuzun ortamına koyun; tarayıcı betiğine, uygulamaya veya kod deposuna asla koymayın.

Hesaplama için önemli: HMAC anahtarı, gösterildiği biçimde 64 karakterlik dizenin kendisidir; bundan çözümlenen baytlar değildir.

İmzayı hesaplama

userHash = hex( HMAC_SHA256( secret, userId + "." + exp ) )

Küçük harfli onaltılık, 64 karakter. Doğrulanmış e-posta adresiyle:

userHash = hex( HMAC_SHA256( secret, userId + "." + exp + "." + email ) )

E-posta adresi yalnızca ikinci biçimde doğrulanmış sayılır. exp gerektirir.

PHP:

<?php
$geheim   = getenv('RC_IDENT_SECRET');      // 64 hex characters from the account
$userId   = (string) $kunde->id;
$exp      = time() + 3600;                  // at most 24 h
$userHash = hash_hmac('sha256', $userId . '.' . $exp, $geheim);
?>
<script nonce="<?= $cspNonce ?>">
  ReactiveChat('identify', {
    userId: <?= json_encode($userId) ?>,
    userHash: <?= json_encode($userHash) ?>,
    exp: <?= (int) $exp ?>
  });
</script>

Node.js:

const crypto = require('crypto');

function rcIdentitaet(kunde) {
  const userId = String(kunde.id);
  const exp = Math.floor(Date.now() / 1000) + 3600;
  const userHash = crypto.createHmac('sha256', process.env.RC_IDENT_SECRET)
    .update(userId + '.' + exp)
    .digest('hex');
  return { userId, userHash, exp };
}

Python:

import hmac, hashlib, os, time

def rc_identitaet(kunde_id: str) -> dict:
    exp = int(time.time()) + 3600
    msg = f"{kunde_id}.{exp}".encode()
    key = os.environ["RC_IDENT_SECRET"].encode()   # the hex string as text
    return {"userId": kunde_id, "exp": exp,
            "userHash": hmac.new(key, msg, hashlib.sha256).hexdigest()}

E-posta adresiyle (PHP):

$userHash = hash_hmac('sha256', $userId . '.' . $exp . '.' . $email, $geheim);

Adres tam olarak identify çağrısına ilettiğiniz biçimde imzalanmalıdır.

Satır içi betik olmadan (sıkı CSP)

Content Security Policy satır içi betiklere izin vermiyorsa değerleri veri olarak verip kendi betik dosyanızdan identify çağırın:

<meta name="rc-ident" content='{"userId":"4711","userHash":"9c1f…","exp":1792503600}'>
// /js/chat-ident.js
var m = document.querySelector('meta[name="rc-ident"]');
if (m) { ReactiveChat('identify', JSON.parse(m.content)); }

Tek sayfalı uygulamalarda, oturum açtıktan sonra üç değeri sunucunuzdan fetch ile alın.

Sunucunun kontrol ettikleri

Geçerli özeti ve exp değeri olan kullanıcı doğrulanmış ve güncel sayılır. Yalnızca o zaman müşteri verilerine ve müşteri portalına erişir.

exp içermeyen eski biçim: userHash = HMAC_SHA256(secret, userId) hâlâ doğrulanmış olarak kabul edilir, ancak güncel sayılmaz; sohbet geçmişi ve panelde gösterim için yeterlidir, müşteri verileri için değildir. Mevcut entegrasyonları exp içeren biçime geçirin.

Kontrol başarısız olduğunda

Sohbet çalışmaya devam eder, ancak anonim olarak. Widget auth_failed hatasını, detail.reason içinde nedenle alır:

Geliştirici araçlarının ağ sekmesinde neden, WebSocket bağlantısının error çerçevesindedir; init_ok.identity, verified ve reason gösterir.

“Yalnızca doğrulanmış ziyaretçilere izin ver” ayarı yoktur; doğrulanmamış ziyaretçiler her zaman anonim olarak sohbet eder.

Gizli anahtarı yenileme

Kullanıcı değiştirme ve oturumu kapatma

Bağlam iletme

Kimliğin yanında sayfanız asistana ve ekibinize şu anda neler olduğunu bildirebilir; örneğin gösterilen ürün veya sepet içeriği. Bu track ile çalışır:

ReactiveChat('track', 'warenkorb', {
  page_type: 'cart',
  cart_value: 129.80,
  cart_items: 3,
  currency: 'EUR'
});

Yalnızca şu alanlar alınır; diğer her şey atılır:

Widget adresi, başlığı, yönlendireni ve kampanya parametrelerini zaten her sayfa değişikliğinde kendisi kaydeder. Bağlam yalnızca onayla iletilir (Gizlilik entegrasyonu). Bu alanlara kişisel veri yazmayın; bunun için identify vardır.

Mobil uygulamalar

Uygulamada kimliği WebView yüklendikten sonra JavaScript ile iletirsiniz; asla adres üzerinden değil. Burada da özet uygulamada değil, sunucunuzda hesaplanır: Mobil uygulamalar.

Sonraki: Müşteri verisi uç noktası · SPA ve sayfa değişiklikleri

अंतिम अपडेट: