Конфігурація
DobroDeskSdkConfig
Обов'язковий
Конфігурація фреймворку передає особу застосунку й область облікового запису та отримує свіжий короткоживучий authorization token від credential provider хоста. Форми токена й результату відповідають сигнатурі платформи.
{ apiOrigin: string; integrationId: string; accountScope: string; locale?: SdkLocale; turnstileToken?: string; pollIntervalMs?: number; fetchImpl?: typeof fetch; credentialProvider: () => Promise<{ authorizationToken: string }>; hostActions?: HostActionHandlers; context?: JsonObject }- Помилки
- invalid-config
Життєвий цикл і розмова
DobroDeskReactNativeClient
Створює клієнт і перевіряє конфігурацію інтеграції.
new DobroDeskReactNativeClient(nativeModule, config: DobroDeskSdkConfig)createDobroDeskReactNativeClient
Створює клієнт і перевіряє конфігурацію інтеграції.
createDobroDeskReactNativeClient(config: DobroDeskSdkConfig): DobroDeskReactNativeClientstartSession
Починає розмову з ідемпотентним першим повідомленням.
startSession(message: string, options?: Omit<SessionStartInput, 'message'>): Promise<Object>- Помилки
- network
- field-invalid
- idempotency-conflict
- outbox-corrupt
resumeSession
Відновлює стан облікового запису або серверну сесію.
resumeSession(): Promise<Object | null>- Помилки
- network
- session-expired
- outbox-corrupt
refresh
Завантажує поточний знімок розмови.
refresh(): Promise<Object>- Помилки
- network
- session-expired
- message-rejected
waitForAssistant
Опитує з обмеженим інтервалом, доки робота асистента не завершиться або не спливе час очікування.
waitForAssistant(options?: Omit<WaitForAssistantOptions, 'pollIntervalMs'>): Promise<Object>- Помилки
- realtime-unavailable
- network
- session-expired
sendMessage
Надсилає повідомлення та повертає його статус доставки.
sendMessage(text: string, idempotencyKey?: string): Promise<Object>- Помилки
- network
- idempotency-conflict
- conversation-stale
- rate-limited
- message-rejected
flushOutbox
Повторює очікувані мутації з оригінальним тілом і ключем ідемпотентності.
flushOutbox(): Promise<ReadonlyArray<Object>>- Помилки
- network
- outbox-corrupt
- session-expired
resetSession
Очищає сесію, snapshot і очікувані мутації в межах облікового запису.
resetSession(): Promise<void>- Помилки
- request-in-progress
- outbox-corrupt
logout
Завершує сесію клієнта й очищає додаткові можливості.
logout(): Promise<void>- Помилки
- outbox-corrupt
presentWidget
Показує нативний віджет зі спільним контрактом вигляду.
presentWidget(options?: NativeWidgetOptions): Promise<void>Параметри
localeSdkLocale?- Локаль віджета для контенту. Web за замовчуванням використовує auto; нативні bundle зараз підтримують en, uk, de та es.
titleString?- Обмежені перевизначення ключів спільного тексту віджета.
subtitleString?- Обмежені перевизначення ключів спільного тексту віджета.
appearanceobject?- Спільний об'єкт appearance-v2: кольори, типографіка, компонування й тіні в задокументованих межах.
platformobject?- Платформні налаштування безпечної області, клавіатури й навігації в межах спільного дизайн-контракту.
reduceMotionboolean?- За замовчуванням використовуйте системне налаштування. Нативні хости також враховують доступність, економію енергії та термальний стан.
viewhome | messages | help- Налаштування нативної навігації та показу web launcher або панелі.
articleIdstring?- Обмежений JSON-контекст для явно зареєстрованих дій хоста.
hostActionIdsstring[]?- Дозволені callback-функції застосунку для керованих дій віджета. Вони не автентифікують мережеві запити.
contextJsonObject?- Обмежений JSON-контекст для явно зареєстрованих дій хоста.
- Помилки
- invalid-config
- request-in-progress
- field-invalid
closeWidget
Закриває поточний нативний показ або звільняє змонтований host.
closeWidget(): Promise<void>subscribe
Підписує host на канонічні події SDK. Для звільнення listener використовуйте subscription, callback відписки або stream subscription, який повертає платформа.
subscribe(listener: (event: SdkEvent) => void): () => voidoperations
Надає типізовані операції форм, client tools, вкладень і commerce через нативний рушій.
operations: DobroDeskRichOperationssubmitForm
Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
operations.submitForm(requestId: string, values: JsonObject): Promise<JsonValue>Параметри
requestIdstringОбов'язковий- Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
valuesJsonObjectОбов'язковий- Надсилає обмежені значення форми розмови, яку надав сервер. Ідентифікатор запиту та значення перевіряються до підписаного нативного запиту.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- message-rejected
requestClientTool
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.requestClientTool(input: ClientToolRequest): Promise<JsonValue>Параметри
inputClientToolRequestОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
completeClientTool
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.completeClientTool(input: ClientToolResult): Promise<JsonValue>Параметри
inputClientToolResultОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
clientToolStatus
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
operations.clientToolStatus(callId: string): Promise<JsonValue>Параметри
callIdstringОбов'язковий- Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- not_found
procedureAction
Виконує дію серверної процедури з ключем ідемпотентності та очікуваною версією workflow.
operations.procedureAction(input: ProcedureActionInput): Promise<JsonValue>Параметри
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.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- message-rejected
- idempotency-conflict
attachmentIntents
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
operations.attachmentIntents(messageId: string, attachments: readonly AttachmentDescriptor[]): Promise<JsonValue>Параметри
messageIdstringОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
attachmentsAttachmentDescriptor[] (1-5; each up to 10 MiB)Обов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
uploadAttachment
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
operations.uploadAttachment(intent: AttachmentUploadIntent, fileUri: string, mimeType: string): Promise<JsonValue>Параметри
intentAttachmentUploadIntentОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
fileUristring (file:// or content:// URI)Обов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
mimeTypestringОбов'язковий- Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
listOrders
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.listOrders(query?: CommerceOrderQuery): Promise<JsonValue>Параметри
queryCommerceOrderQuery- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
orderDetail
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.orderDetail(orderRef: string): Promise<JsonValue>Параметри
orderRefstringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
createCommerceProposal
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.createCommerceProposal(input: CommerceProposalInput, idempotencyKey: string): Promise<JsonValue>Параметри
inputCommerceProposalInputОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
idempotencyKeystring (16-128 characters)Обов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
- idempotency-conflict
confirmCommerceProposal
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
operations.confirmCommerceProposal(proposalId: string, idempotencyKey: string): Promise<JsonValue>Параметри
proposalIdstringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
idempotencyKeystring (16-128 characters)Обов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Promise<JsonValue>
- Помилки
- 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(proposalId: string): Promise<JsonValue>Параметри
proposalIdstringОбов'язковий- Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
- Повертає
- Promise<JsonValue>
- Помилки
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
ClientToolRequest
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
{ toolName: string; basisMessageId: string; input: ClientToolPayload }ClientToolResult
Запитує дозволений client tool, підтверджує його результат або читає його стан. Payload інструмента плоский, обмежений і відхиляє чутливі назви полів.
{ callId: string; output: ClientToolPayload }AttachmentDescriptor
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
{ clientId: string; fileName: string; mimeType: string; sizeBytes: number; kind: AttachmentKind }AttachmentUploadIntent
Створює intent для завантаження та передає вибрані локальні файли з урахуванням лімітів розміру, типу, URI і політик SDK.
{ clientId: string; attachmentId: string; uploadUrl: string; uploadToken: string; expiresAt: string }CommerceProposalInput
Читає дані замовлення та створює, підтверджує або читає обмежену пропозицію скасування Shopify-замовлення.
{ actionId: "shopify_order_cancel"; selection: { storeReference: string; orderReference: string; lineItems?: { lineItemReference: string; quantity: number }[] } }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"SdkEvent
Події 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
Спільний об'єкт appearance-v2: кольори, типографіка, компонування й тіні в задокументованих межах.
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy- Помилки
- field-invalid
- unsupported
DobroDeskWidgetView
Показує нативний віджет зі спільним контрактом вигляду.
<DobroDeskWidgetView client={client} options?: NativeWidgetOptions visible?: boolean style?: ViewStyle onError?: (error) => void loadingBuilder?: () => ReactNode errorBuilder?: (error, retry) => ReactNode />createInlineWidgetOwner
Показує нативний віджет зі спільним контрактом вигляду.
createInlineWidgetOwner(): DobroDeskInlineWidgetOwnerprepareInlineWidget
Показує нативний віджет зі спільним контрактом вигляду.
prepareInlineWidget(options?: NativeWidgetOptions, owner?: DobroDeskInlineWidgetOwner): Promise<{ config; widget; lease: DobroDeskInlineWidgetLease }>- Помилки
- invalid-config
- request-in-progress
- field-invalid
releaseInlineWidget
Закриває поточний нативний показ або звільняє змонтований host.
releaseInlineWidget(ownerOrLease?: DobroDeskInlineWidgetOwner | DobroDeskInlineWidgetLease): Promise<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(port: DobroDeskVoicePort): Promise<DobroDeskVoiceFacade>- Помилки
- unsupported
- invalid-config
voice
Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.
voice: DobroDeskVoiceFacade | undefinedcreateReactNativeVoicePort
Підключає окремо встановлену голосову можливість, якою керує хост.
createReactNativeVoicePort(bridge): DobroDeskVoicePortvoice lifecycle
Керує опційною голосовою можливістю, встановленою хостом: запуском, зупиненням, вимкненням мікрофона, barge-in і звільненням ресурсів. Віджет у браузері може показувати voice UI, але цей API керує лише голосовим мостом хоста.
start(): Promise<void>; stop(): Promise<void>; setMuted(muted: boolean): Promise<void>; bargeIn(): Promise<void>; dispose(): Promise<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>.Помилки
SdkErrorCode
Обробляйте стабільні машинні коди та не показуйте діагностику сервера в UI.
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