Перейти до основного вмісту
ДокументаціяFlutter
Версія 0.2.0Flutter 3.22.3 і Dart 3.4 або новіші

Flutter SDK: Довідник API

Flutter: Типізований міст до спільних нативних рушіїв iOS та Android для вибраного мобільного фреймворку.

На цій сторінці

Конфігурація

DobroDeskFlutterClient

Обов'язковий

Конфігурація фреймворку передає особу застосунку й область облікового запису та отримує свіжий короткоживучий authorization token від credential provider хоста. Форми токена й результату відповідають сигнатурі платформи.

DobroDeskFlutterClient
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

Створює клієнт і перевіряє конфігурацію інтеграції.

DobroDeskFlutterClient
new DobroDeskFlutterClient({ integrationId, apiOrigin, accountScope, authorizationToken?, credentialProvider? })

startSession

Починає розмову з ідемпотентним першим повідомленням.

startSession
startSession(String message, { prefill?, idempotencyKey?, metadata?, timeZone?, turnstileToken?, startedAt? }): Future<DobroDeskSession>
Помилки
  • network
  • field-invalid
  • idempotency-conflict
  • outbox-corrupt

resumeSession

Відновлює стан облікового запису або серверну сесію.

resumeSession
resumeSession(): Future<DobroDeskSession?>
Помилки
  • network
  • session-expired
  • outbox-corrupt

refresh

Завантажує поточний знімок розмови.

refresh
refresh(): Future<DobroDeskSnapshot>
Помилки
  • network
  • session-expired
  • message-rejected

waitForAssistant

Опитує з обмеженим інтервалом, доки робота асистента не завершиться або не спливе час очікування.

waitForAssistant
waitForAssistant({ timeout?, afterMessageCount? }): Future<DobroDeskSnapshot>
Помилки
  • realtime-unavailable
  • network
  • session-expired

sendMessage

Надсилає повідомлення та повертає його статус доставки.

sendMessage
sendMessage(String text, { String? idempotencyKey }): Future<DobroDeskAcceptedMessage>
Помилки
  • network
  • idempotency-conflict
  • conversation-stale
  • rate-limited
  • message-rejected

flushOutbox

Повторює очікувані мутації з оригінальним тілом і ключем ідемпотентності.

flushOutbox
flushOutbox(): Future<List<DobroDeskAcceptedMessage>>
Помилки
  • network
  • outbox-corrupt
  • session-expired

resetSession

Очищає сесію, snapshot і очікувані мутації в межах облікового запису.

resetSession
resetSession(): Future<void>
Помилки
  • request-in-progress
  • outbox-corrupt

setAuthorizationToken

Передає найновіший короткоживучий токен нативному мосту.

setAuthorizationToken
setAuthorizationToken(String token): Future<void>

logout

Завершує сесію клієнта й очищає додаткові можливості.

logout
logout(): Future<void>
Помилки
  • outbox-corrupt

presentWidget

Показує нативний віджет зі спільним контрактом вигляду.

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
closeWidget(): Future<void>

events

Підписує host на канонічні події SDK. Для звільнення listener використовуйте subscription, callback відписки або stream subscription, який повертає платформа.

events
events: Stream<DobroDeskEvent>

operations

Надає типізовані операції форм, client tools, вкладень і commerce через нативний рушій.

operations
operations: DobroDeskOperations

submitForm

Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.

submitForm
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 інструмента плоский, обмежений і відхиляє чутливі назви полів.

requestClientTool
operations.requestClientTool(input: DobroDeskClientToolRequest): Future<Object?>

Параметри

inputDobroDeskClientToolRequestОбов'язковий
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
Повертає
Future<Object?>
Помилки
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

completeClientTool

Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.

completeClientTool
operations.completeClientTool(input: DobroDeskClientToolResult): Future<Object?>

Параметри

inputDobroDeskClientToolResultОбов'язковий
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
Повертає
Future<Object?>
Помилки
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

clientToolStatus

Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.

clientToolStatus
operations.clientToolStatus(String callId): Future<Object?>

Параметри

callIdStringОбов'язковий
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
Повертає
Future<Object?>
Помилки
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

procedureAction

Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.

procedureAction
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.

attachmentIntents
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.

uploadAttachment
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-замовлення.

listOrders
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-замовлення.

orderDetail
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-замовлення.

createCommerceProposal
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-замовлення.

confirmCommerceProposal
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-замовлення.

commerceProposal
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 інструмента плоский, обмежений і відхиляє чутливі назви полів.

DobroDeskClientToolRequest
{ toolName: String; basisMessageId: String; input: Map<String, Object?> }

DobroDeskClientToolResult

Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.

DobroDeskClientToolResult
{ callId: String; output: Map<String, Object?> }

DobroDeskAttachmentDescriptor

Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.

DobroDeskAttachmentDescriptor
{ clientId: String; fileName: String; mimeType: String; sizeBytes: int; kind: String (image|video|pdf|text) }

DobroDeskUploadIntent

Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.

DobroDeskUploadIntent
{ 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.

DobroDeskLoadingState
"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.

DobroDeskEvent
loading(state: DobroDeskLoadingState) | session-cleared | session-started | snapshot | message-accepted | error | host-action-requested | host-action-cancelled

dispose

Зупиняє роботу додаткових можливостей і звільняє ресурси host.

dispose
dispose(): Future<void>

Показ віджета

WidgetExperience (JSON schema)

Спільний об'єкт appearance-v2: кольори, типографіка, компонування й тіні в задокументованих межах.

WidgetExperience (JSON schema)
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy
Помилки
  • field-invalid
  • unsupported

DobroDeskWidgetView

Показує нативний віджет зі спільним контрактом вигляду.

DobroDeskWidgetView
DobroDeskWidgetView({ required DobroDeskFlutterClient client, NativeWidgetOptions options = const NativeWidgetOptions(), bool visible = true, onError?, errorBuilder? })

beginInlineWidget

Показує нативний віджет зі спільним контрактом вигляду.

beginInlineWidget
beginInlineWidget(NativeWidgetOptions options, String ownerId): Future<void>
Помилки
  • invalid-config
  • request-in-progress
  • field-invalid

mountInlineWidget

Показує нативний віджет зі спільним контрактом вигляду.

mountInlineWidget
mountInlineWidget(String ownerId): Future<void>
Помилки
  • invalid-config
  • request-in-progress
  • field-invalid

disposeInlineWidget

Закриває поточний нативний показ або звільняє змонтований host.

disposeInlineWidget
disposeInlineWidget(String ownerId): Future<void>

NativeOperation (wrapper bridge)

Надає типізовані операції форм, client tools, вкладень і commerce через нативний рушій.

NativeOperation (wrapper bridge)
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-операція через прямий нативний клієнт.

complete-host-action (local bridge)
{ operation: "complete-host-action"; requestId: string; actionId: string; result: HostActionResult }

Параметри

requestIdstringОбов'язковий
Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
actionIdstringОбов'язковий
Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
resultHostActionResultОбов'язковий
Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
Повертає
JsonValue
Помилки
  • field-invalid
  • session-expired
  • unsupported

Додаткові можливості

attachVoice

Підключає окремо встановлену голосову можливість, якою керує хост.

attachVoice
attachVoice(DobroDeskVoicePort port): Future<DobroDeskVoiceFacade>
Помилки
  • unsupported
  • invalid-config

voice

Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.

voice
voice: DobroDeskVoiceFacade?

voice lifecycle

Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.

voice lifecycle
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.

push module (native only)
No JS/Dart wrapper export; use the iOS DobroDeskPush product or Android com.dobrodesk:dobrodesk-push:<version>.

Помилки

DobroDeskException

Обробляйте стабільні машинні коди та не показуйте діагностику сервера в UI.

DobroDeskException
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