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({ 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.
new DobroDeskFlutterClient({ integrationId, apiOrigin, accountScope, authorizationToken?, credentialProvider? })startSession
Inicia uma conversa com uma primeira mensagem idempotente.
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(): Future<DobroDeskSession?>- Erros
- network
- session-expired
- outbox-corrupt
refresh
Carrega o estado atual da conversa.
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({ timeout?, afterMessageCount? }): Future<DobroDeskSnapshot>- Erros
- realtime-unavailable
- network
- session-expired
sendMessage
Envia uma mensagem e retorna o status de entrega.
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(): Future<List<DobroDeskAcceptedMessage>>- Erros
- network
- outbox-corrupt
- session-expired
resetSession
Limpa a sessão, o snapshot e as mutações pendentes associados à conta.
resetSession(): Future<void>- Erros
- request-in-progress
- outbox-corrupt
presentWidget
Apresenta o widget nativo com o contrato compartilhado.
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(): 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: Stream<DobroDeskEvent>operations
Expõe operações tipadas de formulários, ferramentas do cliente, anexos e comércio pelo mecanismo nativo.
operations: DobroDeskOperationssubmitForm
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
{ 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.
{ 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.
{ 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.
{ 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.
"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.
loading(state: DobroDeskLoadingState) | session-cleared | session-started | snapshot | message-accepted | error | host-action-requested | host-action-cancelleddispose
Interrompe o trabalho de recursos opcionais e libera os recursos do host.
dispose(): Future<void>Apresentação do widget
WidgetExperience (JSON schema)
Objeto compartilhado appearance-v2: cores, tipografia, layout e sombra dentro dos limites documentados.
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy- Erros
- field-invalid
- unsupported
DobroDeskWidgetView
Apresenta o widget nativo com o contrato compartilhado.
DobroDeskWidgetView({ required DobroDeskFlutterClient client, NativeWidgetOptions options = const NativeWidgetOptions(), bool visible = true, onError?, errorBuilder? })beginInlineWidget
Apresenta o widget nativo com o contrato compartilhado.
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(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(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.
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.
{ 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(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: 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.
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.
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(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