Pular para o conteúdo principal
DocumentaçãoReact Native
Versão 0.2.0React Native de 0.76 a menos de 0.88

React Native SDK: Referência da API

React Native: Uma ponte tipada para os mecanismos nativos compartilhados de iOS e Android do framework móvel selecionado.

Nesta página

Configuração

DobroDeskSdkConfig

Obrigatório

A configuração do framework fornece a identidade do aplicativo e o escopo da conta e obtém um token de autorização novo e de curta duração do provedor de credenciais do host. As formas do token e do resultado seguem a assinatura da plataforma exibida.

DobroDeskSdkConfig
{ apiOrigin: string; integrationId: string; accountScope: string; locale?: SdkLocale; turnstileToken?: string; pollIntervalMs?: number; fetchImpl?: typeof fetch; credentialProvider: () => Promise<{ authorizationToken: string }>; hostActions?: HostActionHandlers; context?: JsonObject }
Erros
  • invalid-config

Ciclo de vida e conversa

DobroDeskReactNativeClient

Cria o cliente e valida a configuração.

DobroDeskReactNativeClient
new DobroDeskReactNativeClient(nativeModule, config: DobroDeskSdkConfig)

createDobroDeskReactNativeClient

Cria o cliente e valida a configuração.

createDobroDeskReactNativeClient
createDobroDeskReactNativeClient(config: DobroDeskSdkConfig): DobroDeskReactNativeClient

startSession

Inicia uma conversa com uma primeira mensagem idempotente.

startSession
startSession(message: string, options?: Omit<SessionStartInput, 'message'>): Promise<Object>
Erros
  • network
  • field-invalid
  • idempotency-conflict
  • outbox-corrupt

resumeSession

Restaura o estado da conta ou uma sessão do servidor.

resumeSession
resumeSession(): Promise<Object | null>
Erros
  • network
  • session-expired
  • outbox-corrupt

refresh

Carrega o estado atual da conversa.

refresh
refresh(): Promise<Object>
Erros
  • network
  • session-expired
  • message-rejected

waitForAssistant

Consulta com tempo limitado até o trabalho do assistente terminar ou a espera expirar.

waitForAssistant
waitForAssistant(options?: Omit<WaitForAssistantOptions, 'pollIntervalMs'>): Promise<Object>
Erros
  • realtime-unavailable
  • network
  • session-expired

sendMessage

Envia uma mensagem e retorna o status de entrega.

sendMessage
sendMessage(text: string, idempotencyKey?: string): Promise<Object>
Erros
  • network
  • idempotency-conflict
  • conversation-stale
  • rate-limited
  • message-rejected

flushOutbox

Reenvia mutações pendentes com o corpo e a chave originais.

flushOutbox
flushOutbox(): Promise<ReadonlyArray<Object>>
Erros
  • network
  • outbox-corrupt
  • session-expired

resetSession

Limpa a sessão, o snapshot e as mutações pendentes associados à conta.

resetSession
resetSession(): Promise<void>
Erros
  • request-in-progress
  • outbox-corrupt

setAuthorizationToken

Fornece à ponte nativa o token de curta duração mais recente.

setAuthorizationToken
setAuthorizationToken(token: string): Promise<void>

logout

Encerra a sessão e libera recursos opcionais.

logout
logout(): Promise<void>
Erros
  • outbox-corrupt

presentWidget

Apresenta o widget nativo com o contrato compartilhado.

presentWidget
presentWidget(options?: NativeWidgetOptions): Promise<void>

Parâmetros

localeSdkLocale?
Locale do widget para o conteúdo. A web usa auto por padrão; os bundles nativos aceitam atualmente en, uk, de e es.
titleString?
Overrides limitados para as chaves de texto compartilhadas do widget.
subtitleString?
Overrides limitados para as chaves de texto compartilhadas do widget.
appearanceobject?
Objeto compartilhado appearance-v2: cores, tipografia, layout e sombra dentro dos limites documentados.
platformobject?
Overrides específicos da plataforma para área segura, teclado e navegação dentro do contrato de design compartilhado.
reduceMotionboolean?
Por padrão, segue o sistema e as políticas nativas de acessibilidade, energia e temperatura.
viewhome | messages | help
Opções de navegação nativa e de apresentação do launcher ou painel web.
articleIdstring?
Contexto JSON limitado fornecido a ações do host registradas explicitamente.
hostActionIdsstring[]?
Callbacks permitidos do aplicativo para ações guiadas do widget. Eles não autenticam solicitações de rede.
contextJsonObject?
Contexto JSON limitado fornecido a ações do host registradas explicitamente.
Erros
  • invalid-config
  • request-in-progress
  • field-invalid

closeWidget

Fecha a apresentação nativa atual ou libera um host montado.

closeWidget
closeWidget(): Promise<void>

subscribe

Assina os eventos canônicos do SDK. Para liberar o listener, use a assinatura, o callback de cancelamento ou a assinatura do stream retornada pela plataforma.

subscribe
subscribe(listener: (event: SdkEvent) => void): () => void

operations

Expõe operações tipadas de formulários, ferramentas do cliente, anexos e comércio pelo mecanismo nativo.

operations
operations: DobroDeskRichOperations

submitForm

Envia valores limitados para um formulário de conversa fornecido pelo servidor. O identificador e os valores são validados antes da solicitação nativa assinada.

submitForm
operations.submitForm(requestId: string, values: JsonObject): Promise<JsonValue>

Parâmetros

requestIdstringObrigatório
Envia valores limitados para um formulário de conversa fornecido pelo servidor. O identificador e os valores são validados antes da solicitação nativa assinada.
valuesJsonObjectObrigatório
Envia valores limitados para um formulário de conversa fornecido pelo servidor. O identificador e os valores são validados antes da solicitação nativa assinada.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • message-rejected

requestClientTool

Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.

requestClientTool
operations.requestClientTool(input: ClientToolRequest): Promise<JsonValue>

Parâmetros

inputClientToolRequestObrigatório
Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

completeClientTool

Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.

completeClientTool
operations.completeClientTool(input: ClientToolResult): Promise<JsonValue>

Parâmetros

inputClientToolResultObrigatório
Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

clientToolStatus

Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.

clientToolStatus
operations.clientToolStatus(callId: string): Promise<JsonValue>

Parâmetros

callIdstringObrigatório
Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

procedureAction

Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.

procedureAction
operations.procedureAction(input: ProcedureActionInput): Promise<JsonValue>

Parâmetros

input.actionstart | answer | availability | select | calendar_date | back | confirm | declineObrigatório
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
input.valuestringObrigatório
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
input.idempotencyKeystring (16-128 characters)Obrigatório
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
input.procedureId / runId / expectedUpdatedAtstring?
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
input.locale"en" | "uk" | "de" | "es"?
Locale do widget para o conteúdo. A web usa auto por padrão; os bundles nativos aceitam atualmente en, uk, de e es.
input.stepId / parameterId / timeZonestring?
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
input.nativeCommerceUitrue?
Avança uma ação de procedimento fornecida pelo servidor com uma chave de idempotência e a revisão esperada do fluxo.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • message-rejected
  • idempotency-conflict

attachmentIntents

Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.

attachmentIntents
operations.attachmentIntents(messageId: string, attachments: readonly AttachmentDescriptor[]): Promise<JsonValue>

Parâmetros

messageIdstringObrigatório
Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.
attachmentsAttachmentDescriptor[] (1-5; each up to 10 MiB)Obrigatório
Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • attachment_policy_failed
  • attachment_rate_limited

uploadAttachment

Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.

uploadAttachment
operations.uploadAttachment(intent: AttachmentUploadIntent, fileUri: string, mimeType: string): Promise<JsonValue>

Parâmetros

intentAttachmentUploadIntentObrigatório
Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.
fileUristring (file:// or content:// URI)Obrigatório
Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.
mimeTypestringObrigatório
Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • attachment_policy_failed
  • attachment_rate_limited

listOrders

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

listOrders
operations.listOrders(query?: CommerceOrderQuery): Promise<JsonValue>

Parâmetros

queryCommerceOrderQuery
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited

orderDetail

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

orderDetail
operations.orderDetail(orderRef: string): Promise<JsonValue>

Parâmetros

orderRefstringObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • not_found

createCommerceProposal

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

createCommerceProposal
operations.createCommerceProposal(input: CommerceProposalInput, idempotencyKey: string): Promise<JsonValue>

Parâmetros

inputCommerceProposalInputObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
idempotencyKeystring (16-128 characters)Obrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited
  • idempotency-conflict

confirmCommerceProposal

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

confirmCommerceProposal
operations.confirmCommerceProposal(proposalId: string, idempotencyKey: string): Promise<JsonValue>

Parâmetros

proposalIdstringObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
idempotencyKeystring (16-128 characters)Obrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited
  • not_found
  • idempotency-conflict

commerceProposal

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

commerceProposal
operations.commerceProposal(proposalId: string): Promise<JsonValue>

Parâmetros

proposalIdstringObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Promise<JsonValue>
Erros
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • not_found

ClientToolRequest

Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.

ClientToolRequest
{ toolName: string; basisMessageId: string; input: ClientToolPayload }

ClientToolResult

Solicita uma ferramenta do cliente permitida, confirma o resultado ou consulta o estado. Os payloads são planos, limitados e rejeitam nomes de campos sensíveis.

ClientToolResult
{ callId: string; output: ClientToolPayload }

AttachmentDescriptor

Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.

AttachmentDescriptor
{ clientId: string; fileName: string; mimeType: string; sizeBytes: number; kind: AttachmentKind }

AttachmentUploadIntent

Cria intents de upload e envia arquivos locais selecionados dentro dos limites de tamanho, tipo, URI e política do SDK.

AttachmentUploadIntent
{ clientId: string; attachmentId: string; uploadUrl: string; uploadToken: string; expiresAt: string }

CommerceProposalInput

Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.

CommerceProposalInput
{ actionId: "shopify_order_cancel"; selection: { storeReference: string; orderReference: string; lineItems?: { lineItemReference: string; quantity: number }[] } }

DobroDeskLoadingState

O estado de carregamento partilhado é idle, starting-session, loading-messages, sending-message, waiting-for-assistant, executing-action, reconnecting ou flushing-outbox.

DobroDeskLoadingState
"idle" | "starting-session" | "loading-messages" | "sending-message" | "waiting-for-assistant" | "executing-action" | "reconnecting" | "flushing-outbox"

SdkEvent

Eventos nativos e de wrappers usam o envelope compartilhado de carregamento, sessão, snapshot, mensagem aceita, erro e sessão limpa.

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

Apresentação do widget

WidgetExperience

Objeto compartilhado appearance-v2: cores, tipografia, layout e sombra dentro dos limites documentados.

WidgetExperience
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy
Erros
  • field-invalid
  • unsupported

DobroDeskWidgetView

Apresenta o widget nativo com o contrato compartilhado.

DobroDeskWidgetView
<DobroDeskWidgetView client={client} options?: NativeWidgetOptions visible?: boolean style?: ViewStyle onError?: (error) => void loadingBuilder?: () => ReactNode errorBuilder?: (error, retry) => ReactNode />

createInlineWidgetOwner

Apresenta o widget nativo com o contrato compartilhado.

createInlineWidgetOwner
createInlineWidgetOwner(): DobroDeskInlineWidgetOwner

prepareInlineWidget

Apresenta o widget nativo com o contrato compartilhado.

prepareInlineWidget
prepareInlineWidget(options?: NativeWidgetOptions, owner?: DobroDeskInlineWidgetOwner): Promise<{ config; widget; lease: DobroDeskInlineWidgetLease }>
Erros
  • invalid-config
  • request-in-progress
  • field-invalid

releaseInlineWidget

Fecha a apresentação nativa atual ou libera um host montado.

releaseInlineWidget
releaseInlineWidget(ownerOrLease?: DobroDeskInlineWidgetOwner | DobroDeskInlineWidgetLease): Promise<void>

NativeOperation (wrapper bridge)

Expõe operações tipadas de formulários, ferramentas do cliente, anexos e comércio pelo mecanismo nativo.

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)

As pontes de framework codificam a conclusão de uma ação do host por uma ponte nativa local. Ela não é enviada como uma operação HTTP pelo cliente nativo direto.

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

Parâmetros

requestIdstringObrigatório
Callbacks permitidos do aplicativo para ações guiadas do widget. Eles não autenticam solicitações de rede.
actionIdstringObrigatório
Callbacks permitidos do aplicativo para ações guiadas do widget. Eles não autenticam solicitações de rede.
resultHostActionResultObrigatório
Callbacks permitidos do aplicativo para ações guiadas do widget. Eles não autenticam solicitações de rede.
Retorna
JsonValue
Erros
  • field-invalid
  • session-expired
  • unsupported

Recursos opcionais

attachVoice

Conecta o recurso de voz opcional instalado pelo host.

attachVoice
attachVoice(port: DobroDeskVoicePort): Promise<DobroDeskVoiceFacade>
Erros
  • unsupported
  • invalid-config

voice

Controla um recurso de voz opcional instalado pelo host: iniciar, parar, silenciar, barge-in e liberar recursos. O widget web pode mostrar uma interface de voz, mas esta API do SDK controla apenas uma ponte de voz fornecida pelo host.

voice
voice: DobroDeskVoiceFacade | undefined

createReactNativeVoicePort

Conecta o recurso de voz opcional instalado pelo host.

createReactNativeVoicePort
createReactNativeVoicePort(bridge): DobroDeskVoicePort

voice lifecycle

Controla um recurso de voz opcional instalado pelo host: iniciar, parar, silenciar, barge-in e liberar recursos. O widget web pode mostrar uma interface de voz, mas esta API do SDK controla apenas uma ponte de voz fornecida pelo host.

voice lifecycle
start(): Promise<void>; stop(): Promise<void>; setMuted(muted: boolean): Promise<void>; bargeIn(): Promise<void>; dispose(): Promise<void>
Erros
  • invalid-configuration
  • permission-denied
  • audio-unavailable
  • session-expired
  • realtime-unavailable
  • invalid-response
  • protocol-violation
  • stale-frame
  • queue-overloaded
  • cancelled
  • unsupported

push module (native only)

Descreve o artefato push nativo opcional e o registo do host. Os wrappers de framework não exportam um cliente push JavaScript ou Dart; use o módulo nativo iOS ou Android.

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

Erros

SdkErrorCode

Trate códigos estáveis legíveis por máquina e mantenha os diagnósticos do servidor fora da interface do cliente.

SdkErrorCode
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