Pular para o conteúdo principal
DocumentaçãoFlutter
Versão 0.2.0Flutter 3.22.3 e Dart 3.4 ou posteriores

Flutter SDK: Referência da API

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

Nesta página

Configuração

DobroDeskFlutterClient

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.

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 })
Erros
  • invalid-config

Ciclo de vida e conversa

DobroDeskFlutterClient

Cria o cliente e valida a configuração.

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

startSession

Inicia uma conversa com uma primeira mensagem idempotente.

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

resumeSession

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

resumeSession
resumeSession(): Future<DobroDeskSession?>
Erros
  • network
  • session-expired
  • outbox-corrupt

refresh

Carrega o estado atual da conversa.

refresh
refresh(): Future<DobroDeskSnapshot>
Erros
  • network
  • session-expired
  • message-rejected

waitForAssistant

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

waitForAssistant
waitForAssistant({ timeout?, afterMessageCount? }): Future<DobroDeskSnapshot>
Erros
  • realtime-unavailable
  • network
  • session-expired

sendMessage

Envia uma mensagem e retorna o status de entrega.

sendMessage
sendMessage(String text, { String? idempotencyKey }): Future<DobroDeskAcceptedMessage>
Erros
  • network
  • idempotency-conflict
  • conversation-stale
  • rate-limited
  • message-rejected

flushOutbox

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

flushOutbox
flushOutbox(): Future<List<DobroDeskAcceptedMessage>>
Erros
  • network
  • outbox-corrupt
  • session-expired

resetSession

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

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

setAuthorizationToken

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

setAuthorizationToken
setAuthorizationToken(String token): Future<void>

logout

Encerra a sessão e libera recursos opcionais.

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

presentWidget

Apresenta o widget nativo com o contrato compartilhado.

presentWidget
presentWidget({ title?, subtitle?, appearance?, platform?, reduceMotion?, view?, articleId?, context?, hostActionIds? }): Future<void>

Parâmetros

titleString?
Overrides limitados para as chaves de texto compartilhadas do widget.
subtitleString?
Overrides limitados para as chaves de texto compartilhadas do widget.
appearanceMap<String, Object?>?
Objeto compartilhado appearance-v2: cores, tipografia, layout e sombra dentro dos limites documentados.
platformMap<String, Object?>?
Overrides específicos da plataforma para área segura, teclado e navegação dentro do contrato de design compartilhado.
reduceMotionbool?Valor padrão: system
Por padrão, segue o sistema e as políticas nativas de acessibilidade, energia e temperatura.
viewString?
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.
contextMap<String, Object?>?
Contexto JSON limitado fornecido a ações do host registradas explicitamente.
hostActionIdsList<String>?
Callbacks permitidos do aplicativo para ações guiadas do widget. Eles não autenticam solicitações de rede.
Erros
  • invalid-config
  • request-in-progress
  • field-invalid

closeWidget

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

closeWidget
closeWidget(): Future<void>

events

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.

events
events: Stream<DobroDeskEvent>

operations

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

operations
operations: DobroDeskOperations

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(String requestId, Map<String, Object?> values): Future<Object?>

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.
valuesMap<String, Object?>Obrigató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
Future<Object?>
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: DobroDeskClientToolRequest): Future<Object?>

Parâmetros

inputDobroDeskClientToolRequestObrigató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
Future<Object?>
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: DobroDeskClientToolResult): Future<Object?>

Parâmetros

inputDobroDeskClientToolResultObrigató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
Future<Object?>
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(String callId): Future<Object?>

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
Future<Object?>
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: DobroDeskProcedureAction): Future<Object?>

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
Future<Object?>
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(String messageId, List<DobroDeskAttachmentDescriptor> attachments): Future<Object?>

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.
attachmentsDobroDeskAttachmentDescriptor[] (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
Future<Object?>
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(DobroDeskUploadIntent intent, String fileUri, String mimeType): Future<Object?>

Parâmetros

intentDobroDeskUploadIntentObrigató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
Future<Object?>
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({String? cursor, String? store}): Future<Object?>

Parâmetros

query{String? cursor, String? store}
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Future<Object?>
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(String orderRef): Future<Object?>

Parâmetros

orderRefStringObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
Retorna
Future<Object?>
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({required String storeReference, required String orderReference, required String idempotencyKey}): Future<Object?>

Parâmetros

storeReferenceStringObrigatório
Lê dados de pedidos e cria, confirma ou consulta uma proposta limitada para cancelar um pedido da Shopify.
orderReferenceStringObrigató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
Future<Object?>
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(String proposalId, String idempotencyKey): Future<Object?>

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
Future<Object?>
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(String proposalId): Future<Object?>

Parâmetros

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

DobroDeskClientToolRequest

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.

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

DobroDeskClientToolResult

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.

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

DobroDeskAttachmentDescriptor

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

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

DobroDeskUploadIntent

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

DobroDeskUploadIntent
{ clientId: String; attachmentId: String; uploadUrl: String; uploadToken: String; expiresAt: String }

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"

DobroDeskEvent

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

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

dispose

Interrompe o trabalho de recursos opcionais e libera os recursos do host.

dispose
dispose(): Future<void>

Apresentação do widget

WidgetExperience (JSON schema)

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

WidgetExperience (JSON schema)
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy
Erros
  • field-invalid
  • unsupported

DobroDeskWidgetView

Apresenta o widget nativo com o contrato compartilhado.

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

beginInlineWidget

Apresenta o widget nativo com o contrato compartilhado.

beginInlineWidget
beginInlineWidget(NativeWidgetOptions options, String ownerId): Future<void>
Erros
  • invalid-config
  • request-in-progress
  • field-invalid

mountInlineWidget

Apresenta o widget nativo com o contrato compartilhado.

mountInlineWidget
mountInlineWidget(String ownerId): Future<void>
Erros
  • invalid-config
  • request-in-progress
  • field-invalid

disposeInlineWidget

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

disposeInlineWidget
disposeInlineWidget(String ownerId): Future<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(DobroDeskVoicePort port): Future<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?

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(): Future<void>; stop(): Future<void>; setMuted(bool muted): Future<void>; bargeIn(): Future<void>; dispose(): Future<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

DobroDeskException

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

DobroDeskException
DobroDeskException(String code, String message, { int? status, int? retryAfterSeconds, String? fieldId, String? requestId }); code: String
Erros
  • 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