Конфігурація
DobroDeskFlutterClient
Обов'язковий
Конфігурація фреймворку передає особу застосунку й область облікового запису та отримує свіжий короткоживучий authorization token від credential provider хоста. Форми токена й результату відповідають сигнатурі платформи.
DobroDeskFlutterClient({ required String integrationId, required String apiOrigin, required String accountScope, String? authorizationToken, Future<String> Function()? credentialProvider, String locale = 'en', Duration pollInterval = const Duration(seconds: 1), Map<String, Object?>? context, Map<String, DobroDeskHostActionHandler>? hostActions, MethodChannel? methodChannel, EventChannel? eventChannel })- Помилки
- invalid-config
Життєвий цикл і розмова
DobroDeskFlutterClient
Створює клієнт і перевіряє конфігурацію інтеграції.
new DobroDeskFlutterClient({ integrationId, apiOrigin, accountScope, authorizationToken?, credentialProvider? })startSession
Починає розмову з ідемпотентним першим повідомленням.
startSession(String message, { prefill?, idempotencyKey?, metadata?, timeZone?, turnstileToken?, startedAt? }): Future<DobroDeskSession>- Помилки
- network
- field-invalid
- idempotency-conflict
- outbox-corrupt
resumeSession
Відновлює стан облікового запису або серверну сесію.
resumeSession(): Future<DobroDeskSession?>- Помилки
- network
- session-expired
- outbox-corrupt
refresh
Завантажує поточний знімок розмови.
refresh(): Future<DobroDeskSnapshot>- Помилки
- network
- session-expired
- message-rejected
waitForAssistant
Опитує з обмеженим інтервалом, доки робота асистента не завершиться або не спливе час очікування.
waitForAssistant({ timeout?, afterMessageCount? }): Future<DobroDeskSnapshot>- Помилки
- realtime-unavailable
- network
- session-expired
sendMessage
Надсилає повідомлення та повертає його статус доставки.
sendMessage(String text, { String? idempotencyKey }): Future<DobroDeskAcceptedMessage>- Помилки
- network
- idempotency-conflict
- conversation-stale
- rate-limited
- message-rejected
flushOutbox
Повторює очікувані мутації з оригінальним тілом і ключем ідемпотентності.
flushOutbox(): Future<List<DobroDeskAcceptedMessage>>- Помилки
- network
- outbox-corrupt
- session-expired
resetSession
Очищає сесію, snapshot і очікувані мутації в межах облікового запису.
resetSession(): Future<void>- Помилки
- request-in-progress
- outbox-corrupt
logout
Завершує сесію клієнта й очищає додаткові можливості.
logout(): Future<void>- Помилки
- outbox-corrupt
presentWidget
Показує нативний віджет зі спільним контрактом вигляду.
presentWidget({ title?, subtitle?, appearance?, platform?, reduceMotion?, view?, articleId?, context?, hostActionIds? }): Future<void>Параметри
titleString?- Обмежені перевизначення ключів спільного тексту віджета.
subtitleString?- Обмежені перевизначення ключів спільного тексту віджета.
appearanceMap<String, Object?>?- Спільний об'єкт appearance-v2: кольори, типографіка, компонування й тіні в задокументованих межах.
platformMap<String, Object?>?- Платформні налаштування безпечної області, клавіатури й навігації в межах спільного дизайн-контракту.
reduceMotionbool?Значення за замовчуванням:system- За замовчуванням використовуйте системне налаштування. Нативні хости також враховують доступність, економію енергії та термальний стан.
viewString?- Налаштування нативної навігації та показу web launcher або панелі.
articleIdString?- Обмежений JSON-контекст для явно зареєстрованих дій хоста.
contextMap<String, Object?>?- Обмежений JSON-контекст для явно зареєстрованих дій хоста.
hostActionIdsList<String>?- Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
- Помилки
- invalid-config
- request-in-progress
- field-invalid
closeWidget
Закриває поточний нативний показ або звільняє змонтований host.
closeWidget(): Future<void>events
Підписує host на канонічні події SDK. Для звільнення listener використовуйте subscription, callback відписки або stream subscription, який повертає платформа.
events: Stream<DobroDeskEvent>operations
Надає типізовані операції форм, client tools, вкладень і commerce через нативний рушій.
operations: DobroDeskOperationssubmitForm
Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
operations.submitForm(String requestId, Map<String, Object?> values): Future<Object?>Параметри
requestIdStringОбов'язковий- Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
valuesMap<String, Object?>Обов'язковий- Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- message-rejected
requestClientTool
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.requestClientTool(input: DobroDeskClientToolRequest): Future<Object?>Параметри
inputDobroDeskClientToolRequestОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
completeClientTool
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.completeClientTool(input: DobroDeskClientToolResult): Future<Object?>Параметри
inputDobroDeskClientToolResultОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
clientToolStatus
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.clientToolStatus(String callId): Future<Object?>Параметри
callIdStringОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
procedureAction
Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
operations.procedureAction(input: DobroDeskProcedureAction): Future<Object?>Параметри
input.actionstart | answer | availability | select | calendar_date | back | confirm | declineОбов'язковий- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
input.valueStringОбов'язковий- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
input.idempotencyKeystring (16-128 characters)Обов'язковий- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
input.procedureId / runId / expectedUpdatedAtString?- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
input.locale"en" | "uk" | "de" | "es"?- Локаль віджета для контенту. Web за замовчуванням використовує auto; нативні bundle зараз підтримують en, uk, de та es.
input.stepId / parameterId / timeZoneString?- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
input.nativeCommerceUitrue?- Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- message-rejected
- idempotency-conflict
attachmentIntents
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
operations.attachmentIntents(String messageId, List<DobroDeskAttachmentDescriptor> attachments): Future<Object?>Параметри
messageIdStringОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
attachmentsDobroDeskAttachmentDescriptor[] (1-5; each up to 10 MiB)Обов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
uploadAttachment
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
operations.uploadAttachment(DobroDeskUploadIntent intent, String fileUri, String mimeType): Future<Object?>Параметри
intentDobroDeskUploadIntentОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
fileUriString (file:// or content:// URI)Обов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
mimeTypeStringОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
listOrders
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.listOrders({String? cursor, String? store}): Future<Object?>Параметри
query{String? cursor, String? store}- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
orderDetail
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.orderDetail(String orderRef): Future<Object?>Параметри
orderRefStringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
createCommerceProposal
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.createCommerceProposal({required String storeReference, required String orderReference, required String idempotencyKey}): Future<Object?>Параметри
storeReferenceStringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
orderReferenceStringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
idempotencyKeystring (16-128 characters)Обов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
- idempotency-conflict
confirmCommerceProposal
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.confirmCommerceProposal(String proposalId, String idempotencyKey): Future<Object?>Параметри
proposalIdStringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
idempotencyKeystring (16-128 characters)Обов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
- not_found
- idempotency-conflict
commerceProposal
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.commerceProposal(String proposalId): Future<Object?>Параметри
proposalIdStringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Future<Object?>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
DobroDeskClientToolRequest
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
{ toolName: String; basisMessageId: String; input: Map<String, Object?> }DobroDeskClientToolResult
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
{ callId: String; output: Map<String, Object?> }DobroDeskAttachmentDescriptor
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
{ clientId: String; fileName: String; mimeType: String; sizeBytes: int; kind: String (image|video|pdf|text) }DobroDeskUploadIntent
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
{ clientId: String; attachmentId: String; uploadUrl: String; uploadToken: String; expiresAt: String }DobroDeskLoadingState
Спільний стан завантаження має одне зі значень idle, starting-session, loading-messages, sending-message, waiting-for-assistant, executing-action, reconnecting або flushing-outbox.
"idle" | "starting-session" | "loading-messages" | "sending-message" | "waiting-for-assistant" | "executing-action" | "reconnecting" | "flushing-outbox"DobroDeskEvent
Події native і wrapper використовують спільний envelope loading, session, snapshot, accepted-message, error і session-cleared.
loading(state: DobroDeskLoadingState) | session-cleared | session-started | snapshot | message-accepted | error | host-action-requested | host-action-cancelledПоказ віджета
WidgetExperience (JSON schema)
Спільний об'єкт appearance-v2: кольори, типографіка, компонування й тіні в задокументованих межах.
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy- Помилки
- field-invalid
- unsupported
DobroDeskWidgetView
Показує нативний віджет зі спільним контрактом вигляду.
DobroDeskWidgetView({ required DobroDeskFlutterClient client, NativeWidgetOptions options = const NativeWidgetOptions(), bool visible = true, onError?, errorBuilder? })beginInlineWidget
Показує нативний віджет зі спільним контрактом вигляду.
beginInlineWidget(NativeWidgetOptions options, String ownerId): Future<void>- Помилки
- invalid-config
- request-in-progress
- field-invalid
mountInlineWidget
Показує нативний віджет зі спільним контрактом вигляду.
mountInlineWidget(String ownerId): Future<void>- Помилки
- invalid-config
- request-in-progress
- field-invalid
disposeInlineWidget
Закриває поточний нативний показ або звільняє змонтований host.
disposeInlineWidget(String ownerId): Future<void>NativeOperation (wrapper bridge)
Надає типізовані операції форм, client tools, вкладень і commerce через нативний рушій.
operation: "complete-host-action" | "request-client-tool" | "complete-client-tool" | "client-tool-status" | "submit-form" | "procedure-action" | "attachment-intents" | "upload-attachment" | "list-orders" | "order-detail" | "create-commerce-proposal" | "confirm-commerce-proposal" | "commerce-proposal"complete-host-action (local bridge)
Framework-обгортки передають завершення host action через локальний нативний міст. Воно не надсилається як HTTP-операція через прямий нативний клієнт.
{ operation: "complete-host-action"; requestId: string; actionId: string; result: HostActionResult }Параметри
requestIdstringОбов'язковий- Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
actionIdstringОбов'язковий- Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
resultHostActionResultОбов'язковий- Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
- Повертає
- JsonValue
- Помилки
- field-invalid
- session-expired
- unsupported
Додаткові можливості
attachVoice
Підключає окремо встановлену голосову можливість, якою керує хост.
attachVoice(DobroDeskVoicePort port): Future<DobroDeskVoiceFacade>- Помилки
- unsupported
- invalid-config
voice
Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.
voice: DobroDeskVoiceFacade?voice lifecycle
Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.
start(): Future<void>; stop(): Future<void>; setMuted(bool muted): Future<void>; bargeIn(): Future<void>; dispose(): Future<void>- Помилки
- invalid-configuration
- permission-denied
- audio-unavailable
- session-expired
- realtime-unavailable
- invalid-response
- protocol-violation
- stale-frame
- queue-overloaded
- cancelled
- unsupported
push module (native only)
Описує окремий опційний нативний push-артефакт і реєстрацію хоста. Framework-обгортки не експортують JavaScript або Dart push-клієнт; використовуйте нативний модуль iOS або Android.
No JS/Dart wrapper export; use the iOS DobroDeskPush product or Android com.dobrodesk:dobrodesk-push:<version>.Помилки
DobroDeskException
Обробляйте стабільні машинні коди та не показуйте діагностику сервера в UI.
DobroDeskException(String code, String message, { int? status, int? retryAfterSeconds, String? fieldId, String? requestId }); code: String- Помилки
- invalid-config
- network
- http
- integration-disabled
- integration-paused
- origin-not-allowed
- turnstile-required
- turnstile-failed
- request-in-progress
- idempotency-conflict
- conversation-limit-reached
- rate-limited
- payload-too-large
- field-invalid
- conversation-stale
- session-expired
- realtime-unavailable
- message-rejected
- outbox-corrupt
- unsupported