Flutter SDK
Mteja wa Dart safi kwa gumzo la huduma la Respondo — hakuna msimbo asilia wa jukwaa wa kukusanya au kutatua.
Mahitaji#
- Dart
>=3.4.0 <4.0.0. - Flutter
>=3.16.0(mstari wa 3.x). - Dart safi: hakuna madaraja asilia, hakuna
pod install, hakuna marekebisho ya Gradle. Vitegemezi vya mpito ni vifurushi vya kawaida vya Dart (http, web_socket_channel, uuid).
Usakinishaji#
Ongeza kifurushi kutoka pub.dev:
dependencies:
respondo_sdk: ^0.1.2import 'package:respondo_sdk/respondo_sdk.dart';Uanzishaji#
Funga Respondo.navigatorKey kwenye MaterialApp yako ili SDK iweze kufungua karatasi ya gumzo bila BuildContext yako, ita Respondo.init mara moja, kisha Respondo.open().
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:respondo_sdk/respondo_sdk.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// File storage directory comes from a host-app plugin; the SDK stays pure.
final dir = await getApplicationSupportDirectory();
await Respondo.init(
RespondoConfig(
agentId: '<agent-uuid>',
channelId: '<channel-uuid>',
storageDirectory: dir.path,
),
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: Respondo.navigatorKey, // required so the SDK can open the chat
home: Scaffold(
body: Center(
child: FilledButton(
onPressed: () => Respondo.open(),
child: const Text('Support'),
),
),
),
);
}
}Mbinu zote za facade ni idempotent, ni salama kuziita kabla ya init (huhifadhi maombi na kuyarudia baadaye), na hazitupi kosa lolote ndani ya programu yako.
Tambua watumiaji#
Kwa chaguo-msingi kila mgeni hajulikani. Katika uzinduzi wa kwanza SDK huzalisha visitor_id thabiti na kuiweka katika hifadhi ya ndani, hivyo mtumiaji anayerudi hupata mazungumzo yake tena. Hakuna ufunguo wa API wa kupachika — kila mazungumzo hulindwa na tokeni ya kipindi ya mazungumzo hayo ambayo backend huitengeneza na kuisogeza mbele kwa kila ujumbe, hivyo mgeni asiyejulikana hahitaji kamwe kuthibitisha upya.
Ita identify mara mtumiaji wako anapoingia kwenye akaunti. Hii huambatanisha utambulisho wake halisi ili historia yake imfuate kwenye vifaa vyote na usakinishaji upya, na jina lake na barua pepe yake vionekane kando ya mazungumzo katika kikasha chako badala ya mgeni asiyejulikana.
userHash ni saini ambayo backend yako huihesabu kutoka identity_secret ya wakala — HMAC-SHA256(secret, userId) (au barua pepe pale ambapo hakuna userId), iliyosimbwa kama hex ya herufi ndogo. Siri hiyo huthibitisha kuwa utambulisho ni halisi, hivyo ni lazima ikae kwenye backend yako pekee na kamwe isisafirishwe ndani ya programu. Angalia ukurasa wa Uthibitishaji wa utambulisho kwa fomula kamili na mifano ya upande wa seva.
// 1. Sign in against your own backend and read the precomputed hash
// (for example, a field returned alongside the login response).
final session = await api.login(email, password);
// 2. Hand the finished userHash to the SDK — never compute it in the app.
Respondo.identify(RespondoIdentity(
userId: session.userId,
email: session.email,
name: session.fullName,
userHash: session.respondoUserHash,
));
// 3. On logout: revoke the session and start a fresh anonymous visitor.
Respondo.reset();Ikiwa hash haipo au si sahihi, hakuna kosa linalotupwa: backend humwacha mgeni bila utambulisho kimyakimya, gumzo huendelea kufanya kazi, na unapoteza tu kiungo kati ya vifaa hadi hash sahihi itakapotolewa. Uthibitishaji hufanyika tu pale wakala ana identity_secret iliyowekwa — iache tupu wakati wa utengenezaji na userId / barua pepe hukubaliwa kama zilivyo.
Mitiririko & callbacks#
Kila kitu kinapatikana kama Stream ya matangazo, kiwekaji cha callback, na kipataji cha thamani ya sasa.
// Reactive stream of unread counts (for a badge).
Respondo.unreadCountStream.listen((n) => setBadge(n));
// Or a callback setter.
Respondo.onUnreadChanged = (n) => setBadge(n);
// Intercept links/CTAs; return true if the host opened the URL itself.
Respondo.onUrlRequested = (url) {
openInAppBrowser(url);
return true;
};Ufuatiliaji wa skrini#
Ripoti skrini ya sasa katika kila usogezaji ili vishawishi vya awali na ulengaji wa kiwango cha ukurasa viweze kulinganishwa nayo. Pitisha null kuifuta; katika kila mabadiliko kishawishi cha awali huthaminiwa upya kwa skrini mpya.
Respondo.setCurrentScreen('pricing');Hatua zinazofuata#
Ongeza Arifa za push na Uthibitishaji wa utambulisho. Uso kamili wa API, nyuso za ushirikishaji, na utatuzi wa matatizo vimeelezwa katika mwongozo wa kuanza wa Flutter SDK kwenye ukurasa wa kifurushi wa pub.dev.