Nyaraka

Utambulisho wa mtumiaji

Kutambua watumiaji huunganisha vipindi vya gumzo visivyojulikana na wasifu halisi wa watumiaji.

Inavyofanya kazi

Unapoita Respondo.identify(), sehemu ulizotoa huambatishwa kwenye mazungumzo. Sehemu zote si lazima — pitisha tu zile ulizo nazo. Kwa mfano, unaweza kutuma userId pekee bila email wala jina. Maafisa wa huduma huona data hii katika kidirisha cha maelezo ya mazungumzo.

Vigezo#

SifaAinaInahitajikaMaelezo
emailstringsi lazimaAnwani ya barua pepe ya mtumiaji
namestringsi lazimaJina la kuonyesha
userIdstringsi lazimaKitambulisho chako cha ndani cha mtumiaji au cha kuonyesha — huonyeshwa kama kilivyo katika dashibodi
userHashstringsi lazimaSahihi ya HMAC-SHA256 kwa uthibitishaji wa utambulisho
metadataobjectsi lazimaJozi za funguo na thamani za sehemu maalum (plan, company, n.k.)
propertiesobjectsi lazimaSifa maalum za mwasiliani zilizofafanuliwa katika Agent Settings. Funguo lazima zilingane na fasili za sifa. Thamani huhifadhiwa zikiwa na kiambishi cp_ na zinaweza kuchujwa katika Kikasha.
Mfano: programu ya ukurasa mmoja (SPA)javascript
// Baada ya kuingia kwa mafanikio
async function onLogin(user) {
  await authenticateUser(user);

  Respondo.identify({
    email: user.email,
    name: user.fullName,
    userId: user.id,
    metadata: {
      plan: user.subscription.plan,
      company: user.company.name,
      role: user.role,
      signedUp: user.createdAt
    },
    properties: {                        // sifa maalum za mwasiliani
      account_type: user.accountType,    // lazima zilingane na funguo kutoka Agent Settings
      industry: user.industry,
      contract_tier: user.tier
    }
  });
}
Ukiwa na kijisehemu cha kawaida cha usakinishaji unaweza kuita identify() wakati wowote — miito iliyofanywa kabla widget.js haijamaliza kupakia huwekwa foleni na kijisehemu na kurudiwa kiotomatiki mara wijeti inapoanzishwa. Data ya utambulisho hupotea tu (pamoja na onyo kwenye console) ikiwa unapakia widget.js mwenyewe na kuita identify() kabla hujawahi kuita init() — katika usanidi wa mkono daima ita init() kwanza.

Wageni wasiojulikana#

Usipoita identify(), wijeti hutoa kiotomatiki visitor ID ya kudumu iliyohifadhiwa katika localStorage (ufunguo respondoai_visitor_id). Katika dashibodi, mazungumzo huonekana kama Guest · Web widget.

HaliInavyoonekana katika dashibodiHMAC inahitajika
Bila identify()Guest · Web widgetHapana
identify({ email, name })Jina na email huonyeshwaHapana — isipokuwa Uthibitishaji wa utambulisho umewashwa; hapo email/jina visivyo na sahihi huondolewa kimya kimya na kipindi hubaki bila utambulisho
identify({ userId })userId huonyeshwa kama ilivyoHapana — isipokuwa Uthibitishaji wa utambulisho umewashwa; hapo userHash halali inahitajika, la sivyo utambulisho huondolewa
identify({ userId, userHash })Utambulisho uliothibitishwaNdiyo — umethibitishwa kwa kriptografia

Pale Uthibitishaji wa utambulisho umewashwa kwa kituo, kila identify() inayobeba email au userId bila userHash halali huondolewa upande wa seva na mgeni hubaki asiyejulikana — angalia Uthibitishaji wa utambulisho (HMAC) hapa chini.

Visitor ID hudumu katika vipindi vyote kwenye kivinjari kile kile. Haitumwi kamwe kwa Respondo kama utambulisho uliothibitishwa — hutumika tu ili mazungumzo ya mgeni asiyejulikana yaendelee bila kukatika.

Utambulisho kwa userId pekee (bila email wala jina)#

Ikiwa jukwaa lako halina barua pepe wala majina ya watumiaji — kwa mfano, una kitambulisho cha ndani cha kuonyesha pekee — unaweza kupitisha userId tu. Hakuna sehemu nyingine zinazohitajika. Dashibodi itaonyesha userId kama ilivyo katika maelezo ya mazungumzo.

userId + metadata (bila email wala jina)javascript
// Jukwaa lako lina kitambulisho cha kuonyesha pekee — hiyo inatosha
Respondo.identify({
  userId: user.displayId,      // k.m. "USR-4821" — huonyeshwa katika dashibodi
  metadata: {                  // muktadha wa ziada, si lazima
    plan: 'premium',
    region: 'eu-west'
  }
});
// Hakuna email wala jina linalohitajika — wijeti hufanya kazi kwa userId pekee
Ili kuzuia userId kuigwa, iunganishe na userHash (angalia Uthibitishaji wa utambulisho hapa chini). Bila HMAC, yeyote anaweza kupitisha userId yoyote kutoka console ya kivinjari.

Google Tag Manager / identify() iliyoahirishwa#

Unapopachika kupitia GTM, data ya mtumiaji huenda isiwepo wakati ukurasa unapopakia. Kuna njia mbili:

Chaguo A: localStorageKey (bila JS yoyote)javascript
// Ikiwa jukwaa lako tayari huandika user ID kwenye localStorage:
Respondo.init({
  agentId: 'YOUR_AGENT_ID',
  localStorageKey: 'myapp_user_id'  // husoma localStorage.getItem('myapp_user_id') kiotomatiki
});
// Hakuna haja ya kuita identify() — wijeti huchukua userId yenyewe
Chaguo B: identify() iliyoahirishwa kupitia dataLayerjavascript
// 1. Anzisha wijeti mara moja (tagi ya GTM)
Respondo.init({ agentId: 'YOUR_AGENT_ID' });

// 2. Baadaye, data ya mtumiaji inapopatikana (k.m. kutoka dataLayer au programu yako):
var waitForUser = setInterval(function() {
  var uid = localStorage.getItem('myapp_user_id');
  if (uid && window.Respondo && typeof window.Respondo.identify === 'function') {
    clearInterval(waitForUser);
    Respondo.identify({ userId: uid });
  }
}, 500);
localStorageKey hutumika tu ikiwa hakuna userId iliyowekwa tayari kupitia identify(). Miito ya wazi ya identify() daima hutangulia.

Uthibitishaji wa utambulisho (HMAC)#

Bila uthibitishaji, yeyote anaweza kujifanya mtumiaji mwingine kwa kupitisha userId au email ya uongo. Uthibitishaji wa utambulisho hutumia HMAC-SHA256 kuthibitisha kwa kriptografia kuwa utambulisho wa mtumiaji uliwekwa na seva yako, si na msimbo wa upande wa mteja.

Inavyofanya kazi#

  1. Washa Identity Verification katika mipangilio ya kituo chako — utapata ufunguo wa siri.
  2. Kwenye seva yako, kokotoa HMAC-SHA256(secret, userId) — siri ndiyo ufunguo, userId ndiyo ujumbe — kisha tuma matokeo kwenye frontend. Ikiwa unatambua watumiaji kwa email pekee (bila userId), tia sahihi email badala yake: data inayosainiwa ni userId ikiwa ipo, la sivyo email. Ukipitisha vyote viwili, tia sahihi userId; ndiyo yenye kipaumbele.
  3. Pitisha hash kama userHash ndani ya Respondo.identify().
  4. Respondo huthibitisha hash upande wa seva. Ikiwa si sahihi, utambulisho huondolewa na mtumiaji huchukuliwa kama asiyejulikana.
Usiweke kamwe ufunguo wako wa siri katika msimbo wa frontend. HMAC lazima ikokotolewe kwenye backend yako.
Mara uthibitishaji unapowashwa, kila identify() inayobeba userId au email lazima ijumuishe userHash halali — la sivyo sehemu za utambulisho huondolewa na mgeni huchukuliwa kama asiyejulikana.

Mifano ya upande wa seva#

Node.jsjavascript
const crypto = require('crypto');

const SECRET = process.env.RESPONDO_IDENTITY_SECRET;

function generateUserHash(userId) {
  return crypto
    .createHmac('sha256', SECRET)
    .update(userId)
    .digest('hex');
}

// Katika API endpoint yako:
app.get('/api/respondo-hash', (req, res) => {
  const hash = generateUserHash(req.user.id);
  res.json({ userHash: hash });
});
Pythonpython
import hmac, hashlib, os

SECRET = os.environ['RESPONDO_IDENTITY_SECRET']

def generate_user_hash(user_id: str) -> str:
    return hmac.new(
        SECRET.encode(),
        user_id.encode(),
        hashlib.sha256
    ).hexdigest()

# Katika view / endpoint yako:
user_hash = generate_user_hash(request.user.id)
Gogo
import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/hex"
)

func GenerateUserHash(userID, secret string) string {
    mac := hmac.New(sha256.New, []byte(secret))
    mac.Write([]byte(userID))
    return hex.EncodeToString(mac.Sum(nil))
}

Matumizi upande wa frontend#

Ukiwa na uthibitishaji wa utambulishojavascript
// Chukua hash kutoka SEVA YAKO
const { userHash } = await fetch('/api/respondo-hash').then(r => r.json());

Respondo.identify({
  email: user.email,
  name: user.name,
  userId: user.id,
  userHash: userHash  // sahihi ya HMAC-SHA256
});