§ 00Genel bakış
Flutter SDK, web sitesi sohbetinizin kullandığı anonim widget protokolünün aynısını konuşur — böylece müşteriler, temsilcilerinizin ortak gelen kutusunda hâlihazırda yönettiği konuşmaların tam üzerinden, mobil uygulamanızın içinden desteğe ulaşabilir.
İki paket olarak gelir:
easylivechat— başsız protokol istemcisi ve reaktif durum, arayüz yokeasylivechat_ui— hazır, temalandırılabilir widget'lar — başlatıcı, sohbet ekranı, ön sohbet formu, ekler, CSAT
§ 01Kurulum
SDK'yı uygulamanızın pubspec.yaml dosyasına ekleyin. Çoğu uygulama easylivechat_ui ister — bu paket çekirdeği yeniden dışa aktarır. Yalnızca tamamen özel bir arayüz oluşturuyorsanız başsız easylivechat paketini tek başına tercih edin.
dependencies: easylivechat_ui: ^0.1.0 # prebuilt UI + the headless core # — or, headless only — easylivechat: ^0.1.0
Flutter 3.19 veya daha yenisini gerektirir. socket_io_client, sunucuyla uyumlu olması için bir 3.x sürümü (Engine.IO v4) olmalıdır.
§ 02Hızlı başlangıç (hazır arayüz)
İstemciyi çalışma alanı kısaltmanızla bir kez başlatın, ardından widget ağacınıza bir başlatıcı ekleyin. Balon, tamamen bağlanmış bir sohbeti açar: ön sohbet formu, gerçek zamanlı konuşma, yazıyor göstergesi, ekler, CSAT, çalışma saatleri dışı çevrimdışı form, ayrıca sunucu güdümlü temalandırma ve RTL.
import 'package:easylivechat_ui/easylivechat_ui.dart';
await EasyLiveChat.instance.boot(
const EasyLiveChatConfig(
apiBase: 'https://api.livechattools.com',
tenantSlug: 'acme', // your workspace slug
),
storage: SecurePrefsStorage(), // durable visitorId + JWT
);
// In your widget tree — a floating bubble that opens the full chat:
Stack(children: [ MyApp(), const EasyLiveChatLauncher() ]);Çalışma alanı kısaltmanızı panonuzda bulabilirsiniz. Başlatıcı, ilk açılışta tembel olarak başlatılır; ziyaretçi kimliğinin uygulama yeniden başlatmalarında korunması için kalıcı bir depolama geçirin.
§ 03Başsız (kendi arayüzünüzü oluşturun)
Kendi tasarım sisteminizi mi tercih ediyorsunuz? Başsız istemciyi doğrudan kullanın. Her şey, herhangi bir durum yönetimine bağlayabileceğiniz ValueListenables ve Streams olarak sunulur.
import 'package:easylivechat/easylivechat.dart';
final chat = EasyLiveChat.instance;
await chat.boot(const EasyLiveChatConfig(
apiBase: 'https://api.livechattools.com', tenantSlug: 'acme'),
storage: myDurableStorage); // implement EasyLiveChatStorage
await chat.open(); // config → resume → prechat/anon → connect
chat.messages.addListener(rebuild); // ValueListenable<List<ChatMessage>>
chat.agentTyping.addListener(rebuild);
final res = chat.sendMessage('Hello!'); // optimistic; res.serverMessageId on ack
await chat.submitFeedback(rating: 5);open(), tüm yaşam döngüsünü düzenler: yapılandırmayı getirir, açık bir konuşmayı sürdürür, ön sohbet formunda durdurur ya da anonim olarak başlatır, ardından gerçek zamanlı sokete bağlanır.
§ 04Nasıl çalışır
Bir oturum açıldığında, sunucu kısa ömürlü, konuşma başına bir token üretir. SDK bunu REST çağrıları ve gerçek zamanlı soket için kullanır, süresi dolmadan önce şeffaf bir şekilde yeniden üretir ve mobil ağ koptuğunda boşluk güvenli bir geri doldurmayla yeniden bağlanır.
Her şey anonim önceliklidir: SDK, cihazda kalıcı bir ziyaretçi kimliği oluşturur — giriş gerektirmez — ve isteğe bağlı olarak kiracı ön sohbet formu aracılığıyla bir ad ve e-posta toplar.
Güvenlik: kiracı API anahtarınızı asla dağıtılan bir uygulamaya gömmeyin — bu, sunucudan sunucuya bir sırdır. Flutter SDK yalnızca, dağıtılmış bir istemci için güvenli olan ziyaretçi başına oturum token'ını kullanır.
§ 05Sunucu tarafında çalışma gerektiren konular
Tam ön plan sohbet deneyimi, hiçbir arka uç değişikliği olmadan bugün çalışır. Sunucu tarafı çalışma gerektiren tek yetenek arka plan push bildirimidir — kapalı bir uygulamaya “temsilci yanıtladı” bildirimi göndermek — çünkü arka uç şu anda yalnızca temsilcilere push gönderir. Bunu etkinleştirmek için bir ziyaretçi push kayıt defteri ve dağıtımı gereklidir; SDK push kancası o zamana kadar etkisiz kalır.
Herkese açık bir lansmandan önce önerilen ek adımlar: oturum oluşturma ve mesaj gönderiminde hız sınırlama, bir token yenileme uç noktası ve telefon medyası için HEIC/MOV yükleme desteği.