Rehber menüsü

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.
AlanZorunluAçıklama
subEvetSisteminizdeki kullanıcı kimliği, 1 ile 128 karakter arasında.
expEvetSon geçerlilik zamanı, en fazla 30 gün sonrası olabilir. SDK'larda varsayılan süre 7 gündür.
phoneHayırE.164 biçiminde (+972501234567) veya yerel bir numara. Test kullanıcılarını tanımak için kullanılır.
nameHayırKarşılamada gösterilir ve destek talebi formuna önceden doldurulur.
emailHayırDestek 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).

Node.js
yarn add @kavchat/node
# or: npm install @kavchat/node
Python
pip install kavchat
PHP
composer require kavchat/kavchat-php
Java
<!-- 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>
.NET
dotnet add package Kavchat
Go
go get kavchat.com/kavchat-go
Ruby
# Gemfile
gem "kavchat"

Belirteç oluşturma

Node.js
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.
Python
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
)
PHP
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
);
Java
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());
.NET
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
});
Go
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
})
Ruby
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:

Node.js
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' },
);
Python
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",
)
PHP
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.

Website
// 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);
React Native
<KavchatProvider publicKey="pk_live_..." userToken={session?.kavchatToken} userName={session?.firstName}>
Flutter
await kavchat.setUser(token: jwt, name: 'Dana'); // after login
await kavchat.setUser(token: null);              // after logout
iOS
Kavchat.setUser(token: identityToken, name: "Dana")    // after login
Kavchat.setUser(token: nil)                            // after logout
Android
Kavchat.setUser(token = identityToken, name = "Dana")   // after login
Kavchat.setUser(token = null)                           // after logout

Ayrı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.