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#
| Sifa | Aina | Inahitajika | Maelezo |
|---|---|---|---|
| string | si lazima | Anwani ya barua pepe ya mtumiaji | |
| name | string | si lazima | Jina la kuonyesha |
| userId | string | si lazima | Kitambulisho chako cha ndani cha mtumiaji au cha kuonyesha — huonyeshwa kama kilivyo katika dashibodi |
| userHash | string | si lazima | Sahihi ya HMAC-SHA256 kwa uthibitishaji wa utambulisho |
| metadata | object | si lazima | Jozi za funguo na thamani za sehemu maalum (plan, company, n.k.) |
| properties | object | si lazima | Sifa 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. |
// 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
}
});
}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.
| Hali | Inavyoonekana katika dashibodi | HMAC inahitajika |
|---|---|---|
Bila identify() | Guest · Web widget | Hapana |
identify({ email, name }) | Jina na email huonyeshwa | Hapana — isipokuwa Uthibitishaji wa utambulisho umewashwa; hapo email/jina visivyo na sahihi huondolewa kimya kimya na kipindi hubaki bila utambulisho |
identify({ userId }) | userId huonyeshwa kama ilivyo | Hapana — isipokuwa Uthibitishaji wa utambulisho umewashwa; hapo userHash halali inahitajika, la sivyo utambulisho huondolewa |
identify({ userId, userHash }) | Utambulisho uliothibitishwa | Ndiyo — 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.
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.
// 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 pekeeuserHash (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:
// 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// 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#
- Washa Identity Verification katika mipangilio ya kituo chako — utapata ufunguo wa siri.
- 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. - Pitisha hash kama
userHashndani yaRespondo.identify(). - Respondo huthibitisha hash upande wa seva. Ikiwa si sahihi, utambulisho huondolewa na mtumiaji huchukuliwa kama asiyejulikana.
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#
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 });
});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)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#
// 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
});