respondo_sdk 0.1.0 copy "respondo_sdk: ^0.1.0" to clipboard
respondo_sdk: ^0.1.0 copied to clipboard

retracted

Native Respondo support-chat SDK for Flutter: chat, news, surveys, banners, checklists and push notifications in pure Dart, with no native code.

respondo_sdk (Flutter) #

Нативный чат поддержки Respondo для встраивания в Flutter-приложения. Чистый Dart, без нативного кода и плагинов с нативным кодом. Публичная поверхность соответствует sdks/spec/api-surface.md; поведение — sdks/spec/behavior.md.

Установка #

Пакет версии 0.1.0. Публикация на pub.dev появится позже; пока подключается по path- или git-зависимости.

Локально (монорепо):

dependencies:
  respondo_sdk:
    path: ../sdks/flutter/respondo_sdk

По git (пакет лежит в подкаталоге репозитория):

dependencies:
  respondo_sdk:
    git:
      url: https://bitbucket.org/hub2026/respondo.git
      path: sdks/flutter/respondo_sdk
      ref: sdk-v0.1.0   # git-тег релиза

Зависимости: http, web_socket_channel, uuid. Полное руководство — docs/sdk/getting-started-flutter.md.

Подключение #

  1. Привяжите Respondo.navigatorKey к MaterialApp.navigatorKey — по нему SDK показывает bottom-sheet чата без BuildContext от host:
MaterialApp(
  navigatorKey: Respondo.navigatorKey,
  home: HomeScreen(),
);
  1. Инициализируйте SDK (обычно один раз при старте):
final dir = await getApplicationSupportDirectory(); // из host-приложения
await Respondo.init(
  RespondoConfig(
    agentId: '<agent-uuid>',
    channelId: '<channel-uuid>',
    locale: 'ru',
    storageDirectory: dir.path, // без него — in-memory (не переживёт перезапуск)
  ),
);
  1. Управляйте чатом:
Respondo.open();                 // показать bottom-sheet
Respondo.identify(RespondoIdentity(userId: 'u1', email: 'a@b.c', userHash: '<hmac>'));
Respondo.track('purchase', properties: {'plan': 'pro'});
Respondo.close();
Respondo.reset();                // logout: revoke-session + новый визитёр

Наблюдаемые и колбэки #

Respondo.unreadCountStream.listen((n) => setBadge(n));
Respondo.chatStateStream.listen((s) => print(s));
Respondo.onUnreadChanged = (n) => setBadge(n);
Respondo.onUrlRequested = (url) { openInApp(url); return true; };

Push #

Токен добывает host (например firebase_messaging); SDK его только принимает:

Respondo.setPushToken(fcmToken);
Respondo.clearPushToken();               // logout

// На входящий data-пуш / тап по нему:
final handled = Respondo.handlePushData(remoteMessage.data);
// либо, если payload уже разобран:
final payload = RespondoPushPayload.from(remoteMessage.data);
if (payload != null) Respondo.handlePush(payload);

Вложения #

Пакет не тянет нативный пикер файлов. Передайте attachmentPicker в конфиг — host сам выбирает файл, SDK загружает и прикрепляет:

RespondoConfig(
  agentId: '...',
  attachmentPicker: () async {
    final picked = await myImagePicker(); // ваша реализация
    if (picked == null) return null;
    return RespondoPickedFile(
      bytes: picked.bytes,
      filename: picked.name,
      contentType: picked.mimeType,
    );
  },
);

Если attachmentPicker не задан — кнопка вложения в композере скрыта.

Ссылки в чате #

SDK не открывает URL сам (нет плагина браузера — пакет чистый). Назначьте Respondo.onUrlRequested, чтобы перехватывать ссылки/CTA; верните true, если host открыл URL.

Ограничения (осознанные) #

  • Тёмная тема не поддерживается (в вебе её нет; чат всегда светлый — theming.md §7).
  • Engagement-поверхности (News, опросы, баннеры, чеклисты, proactive) — фаза Ф3; сейчас openNews/openChecklists открывают чат-лист.
  • app_version и device_model в автоконтексте metadata host передаёт сам (через identity.metadata) — пакет чистый и не добывает их плагинами.
0
likes
0
points
109
downloads

Publisher

unverified uploader

Weekly Downloads

Native Respondo support-chat SDK for Flutter: chat, news, surveys, banners, checklists and push notifications in pure Dart, with no native code.

Homepage
Repository
View/report issues

License

unknown (license)

Dependencies

flutter, http, uuid, web_socket_channel

More

Packages that depend on respondo_sdk