Kullanıcıları tanıma
Varsayılan olarak her ziyaretçi misafirdir. Bir kullanıcı sitenizde veya uygulamanızda oturum açtığında, sunucunuz onun için kısa bir kimlik belirteci imzalayabilir. Böylece Kavchat kullanıcının kim olduğunu bilir.
Kullanıcıları neden tanımalısınız?
- Her destek talebinde sizin kullanıcı kimliğiniz. Görüşmeler ve destek talepleri, sisteminizdeki kullanıcı kimliğiyle (destek talebindeki
userId) işaretlenir. Böylece ekibiniz bunların hangi hesaba ait olduğunu bilir. - İletişim bilgisi girmeye gerek yok. Misafirlerin destek talebi formunda e-posta adresi veya telefon numarası bırakması gerekir. Kimliği belirlenen kullanıcılar için bu zorunlu değildir.
- Test kullanıcıları. Hedef kitle "Test kullanıcıları" olduğunda bot, yalnızca telefon numarası test kullanıcıları listenizde bulunan kullanıcılara gösterilir. Kavchat onları belirteçteki telefon numarasından tanır.
- Kişisel karşılama. Senaryonun bir adımındaki
{name}, kullanıcının adıyla değiştirilir.
Belirteç
Kimlik belirteci, sunucunuzda oluşturulan standart bir JWT'dir:
- Algoritma:
HS256. Anahtar, gizli anahtarınızdır:sk_live_...dizgesinin tamamı, UTF-8 baytları olarak kullanılır. - Sayfa veya uygulama, Kavchat'e yapılan her çağrıda belirteci
Authorization: Bearer <token>başlığında gönderir. - Belirteçleri asla tarayıcıda veya uygulamada imzalamayın. Gizli anahtarınız sunucunuzda kalır.
| Alan | Zorunlu | Açıklama |
|---|---|---|
sub | Evet | Sisteminizdeki kullanıcı kimliği, 1 ile 128 karakter arasında. |
exp | Evet | Son geçerlilik zamanı, en fazla 30 gün sonrası olabilir. SDK'larda varsayılan süre 7 gündür. |
phone | Hayır | E.164 biçiminde (+972501234567) veya yerel bir numara. Test kullanıcılarını tanımak için kullanılır. |
name | Hayır | Karşılamada gösterilir ve destek talebi formuna önceden doldurulur. |
email | Hayır | Destek talebi formuna önceden doldurulur. |
Kullanıcı oturum açtığında ve önceki belirtecin süresi dolmadan yeni bir belirteç oluşturun. Birkaç günlük kısa bir geçerlilik süresi, varsayılan ayar olarak iyi bir seçimdir.
Sunucu SDK'sını yükleme
Sunucu SDK'ları sizin için belirteç oluşturur, webhook'ları doğrular ve Server API'yi çağırır. Her dilin standart kütüphanesi dışında bağımlılıkları yoktur (Java'da Jackson bağımlılığı vardır).
yarn add @kavchat/node
# or: npm install @kavchat/nodepip install kavchatcomposer require kavchat/kavchat-php<!-- Maven, served by JitPack. Gradle: maven("https://jitpack.io") and implementation("com.kavchat:kavchat-java:0.0.11") -->
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.kavchat</groupId>
<artifactId>kavchat-java</artifactId>
<version>0.0.11</version>
</dependency>dotnet add package Kavchatgo get kavchat.com/kavchat-go# Gemfile
gem "kavchat"Belirteç oluşturma
import { Kavchat } from '@kavchat/node';
const kavchat = new Kavchat(process.env.KAVCHAT_SECRET_KEY!);
const token = kavchat.createUserToken({
userId: 'user_123', // required, 1 to 128 characters
phone: '+972501234567', // optional
name: 'Dana', // optional
email: 'dana@example.com', // optional
expiresIn: 7 * 24 * 3600, // seconds, default 7 days, at most 30 days
});
// Send the token to your page or app and pass it to the Kavchat widget or SDK.import os
from kavchat import Kavchat
kavchat = Kavchat(os.environ["KAVCHAT_SECRET_KEY"])
token = kavchat.create_user_token(
"user_123", # required, 1 to 128 characters
phone="+972501234567",
name="Dana",
email="dana@example.com",
expires_in=7 * 24 * 3600, # seconds, default 7 days, at most 30 days
)use Kavchat\Kavchat;
$kavchat = new Kavchat(getenv('KAVCHAT_SECRET_KEY'));
$token = $kavchat->createUserToken(
'user_123', // required, 1 to 128 characters
phone: '+972501234567',
name: 'Dana',
email: 'dana@example.com',
expiresIn: 7 * 24 * 3600 // seconds, default 7 days, at most 30 days
);KavchatClient kavchat = KavchatClient.builder(System.getenv("KAVCHAT_SECRET_KEY")).build();
String token = kavchat.createUserToken(UserTokenOptions.builder("user_123")
.phone("+972501234567")
.name("Dana")
.email("dana@example.com")
.expiresIn(Duration.ofDays(7)) // default 7 days, at most 30 days
.build());using Kavchat;
using var kavchat = new KavchatClient(Environment.GetEnvironmentVariable("KAVCHAT_SECRET_KEY")!);
var token = kavchat.CreateUserToken(new UserTokenOptions
{
UserId = "user_123", // required, 1 to 128 characters
Phone = "+972501234567",
Name = "Dana",
Email = "dana@example.com",
ExpiresIn = TimeSpan.FromDays(7), // default 7 days, at most 30 days
});import kavchat "kavchat.com/kavchat-go"
client := kavchat.New(os.Getenv("KAVCHAT_SECRET_KEY"))
token, err := client.CreateUserToken(kavchat.UserToken{
UserID: "user_123", // required, 1 to 128 characters
Phone: "+972501234567",
Name: "Dana",
Email: "dana@example.com",
ExpiresIn: 7 * 24 * time.Hour, // zero means 7 days; at most 30 days
})require "kavchat"
kavchat = Kavchat::Client.new(ENV.fetch("KAVCHAT_SECRET_KEY"))
token = kavchat.create_user_token(
user_id: "user_123", # required, 1 to 128 characters
phone: "+972501234567",
name: "Dana",
email: "dana@example.com",
expires_in: 7 * 24 * 3600 # seconds, default 7 days, at most 30 days
)Her SDK'da, gizli anahtarı ilk argüman olarak alan bağımsız bir sürüm de bulunur. Örneğin Node.js'te createUserToken(secretKey, options). Kullanıcı kimliğinin boş veya çok uzun olması ya da geçerlilik süresinin bir saniye ile 30 gün arasında olmaması argüman hatasına neden olur.
SDK olmadan
Herhangi bir JWT kütüphanesini kullanabilirsiniz. Bunlar, yönetim panelinin Kurulum sayfasında gösterilen örneklerle aynıdır:
import jwt from 'jsonwebtoken';
// On your server only. Never send the secret key to the browser.
const token = jwt.sign(
{ sub: user.id, phone: user.phone, name: user.firstName, email: user.email },
process.env.KAVCHAT_SECRET_KEY, // sk_live_...
{ algorithm: 'HS256', expiresIn: '7d' },
);import jwt, time, os
token = jwt.encode(
{"sub": user.id, "phone": user.phone, "name": user.first_name,
"exp": int(time.time()) + 7 * 24 * 3600},
os.environ["KAVCHAT_SECRET_KEY"], # sk_live_...
algorithm="HS256",
)use Firebase\JWT\JWT;
$token = JWT::encode([
'sub' => $user->id,
'phone' => $user->phone,
'name' => $user->first_name,
'exp' => time() + 7 * 24 * 3600,
], getenv('KAVCHAT_SECRET_KEY'), 'HS256'); // sk_live_...Belirteci sohbete aktarma
Belirteci sayfanıza veya uygulamanıza, örneğin oturum açma çağrısının yanıtıyla birlikte gönderin ve sohbet bileşenine veya SDK'ya aktarın. Kullanıcı değiştiğinde bot yeniden yüklenir ve yeni bir görüşme başlar.
// at page load, with a token your server created for the signed-in user
Kavchat.init({ publicKey: 'pk_live_...', userToken: token, userName: 'Dana' });
// later, after login or logout
Kavchat.setUser({ token, name: 'Dana' });
Kavchat.setUser(null);<KavchatProvider publicKey="pk_live_..." userToken={session?.kavchatToken} userName={session?.firstName}>await kavchat.setUser(token: jwt, name: 'Dana'); // after login
await kavchat.setUser(token: null); // after logoutKavchat.setUser(token: identityToken, name: "Dana") // after login
Kavchat.setUser(token: nil) // after logoutKavchat.setUser(token = identityToken, name = "Dana") // after login
Kavchat.setUser(token = null) // after logoutAyrıntılar için ilgili kılavuza bakın: Web sitesi, React Native, Flutter, iOS, Android.
Belirteç reddedildiğinde
Süresi dolmuş, başka bir anahtarla imzalanmış veya sub alanı eksik olan belirteçler, HTTP 401 ve identity_invalid hata koduyla reddedilir. Sunucunuzun saatini, anahtarı ve exp değerinin 30 günden daha ileride olmadığını kontrol edin.