Ви можете визначити, чи належить проблема конфігурації хоста, ідентичності, нативному життєвому циклу або відновлюваному стану мережі.
Поширені запитання про інтеграцію
- Чи може вебвіджет бути анонімним? Так. Вебінтеграції можуть почати анонімно й після входу хоста додати короткоживучу підписану ідентичність. Нативні SDK вимагають підписаний токен ідентичності клієнта до мережевих операцій.
- Чи відтворює мобільний SDK вебвіджет у WebView? Ні. iOS, Android, Flutter, React Native, NativeScript і Capacitor відкривають спільний нативний віджет та нативний транспорт. Capacitor може залишати решту UI застосунку у звичайному WebView.
- Які мінімальні версії підтримуються? iOS 15.1, Android API 26, Flutter 3.22.3 або новіший із Dart 3.4–3.x, React Native 0.76–0.87 з New Architecture, NativeScript 8.9–9.x і Capacitor 6–8.
- Чи можна тримати кілька активних розмов в одному клієнті? Ні. Один accountScope володіє однією активною нативною сесією та довговічним outbox. Завершіть або скиньте поточну сесію перед новою та викличте logout до зміни ідентичності.
- Чи транслює публічний SDK токени ШІ? Ні. Публічний API повертає типізовані snapshots і результати wait-for-assistant. Не будуйте UI токен за токеном на основі polling-подій.
- Чи входять push і voice до базового пакета? Ні. Це окремі додаткові нативні можливості з власними провайдерами та дозволами.
Зіставте помилки з безпечною наступною дією
Прочитайте типізований код помилки та збережіть ідентичність запиту. Стани network, reconnecting і rate-limited можна повторювати за правилами SDK. session-expired потребує свіжого токена для того самого акаунта. field-invalid, payload-too-large і message-rejected потребують виправлення хостом або клієнтом. idempotency-conflict означає, що хост має перевірити початковий ключ, а не надсилати нове повідомлення.
import { DobroDeskSdkError } from "@dobrodesk/mobile-protocol";
try {
await client.sendMessage(text, idempotencyKey);
} catch (error) {
// These host functions render controls; they do not retry inside catch.
if (!(error instanceof DobroDeskSdkError)) {
showRecoverableSdkError(error);
return;
}
switch (error.details.code) {
case "network":
case "rate-limited":
showRetryControl();
break;
case "session-expired":
showRefreshAndRetryControlForTheSameAccount();
break;
case "field-invalid":
case "payload-too-large":
case "message-rejected":
showCorrection(error.details);
break;
case "idempotency-conflict":
investigateOriginalRequest(error.details);
break;
default:
showRecoverableSdkError(error);
}
}Перевірте хост перед зверненням у підтримку
- Переконайтеся, що apiOrigin — це HTTPS origin без path, query або облікових даних, а integrationId вказує на потрібну DobroDesk інтеграцію.
- Переконайтеся, що підписаний токен виданий бекендом хоста для поточного клієнта, а accountScope стабільний і належить лише цьому клієнту.
- Переконайтеся, що нативний presenter викликається з foreground-екрана й хост не змонтував другого клієнта для того самого акаунта.
- Переконайтеся, що повтор використовує початковий idempotency key, а logout або reset не викликано, поки операція просто була офлайн.