Configuración
DobroDeskFlutterClient
Obligatorio
La configuración del framework proporciona la identidad de la aplicación y el ámbito de la cuenta y obtiene un token de autorización nuevo y de corta duración del proveedor de credenciales del host. Las formas del token y del resultado siguen la firma de la plataforma mostrada.
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 })- Errores
- invalid-config
Ciclo de vida y conversación
DobroDeskFlutterClient
Crea el cliente y valida la configuración.
new DobroDeskFlutterClient({ integrationId, apiOrigin, accountScope, authorizationToken?, credentialProvider? })startSession
Inicia una conversación con un primer mensaje idempotente.
startSession(String message, { prefill?, idempotencyKey?, metadata?, timeZone?, turnstileToken?, startedAt? }): Future<DobroDeskSession>- Errores
- network
- field-invalid
- idempotency-conflict
- outbox-corrupt
resumeSession
Restaura el estado de la cuenta o una sesión del servidor.
resumeSession(): Future<DobroDeskSession?>- Errores
- network
- session-expired
- outbox-corrupt
refresh
Carga el estado actual de la conversación.
refresh(): Future<DobroDeskSnapshot>- Errores
- network
- session-expired
- message-rejected
waitForAssistant
Consulta con tiempos limitados hasta que termina el trabajo del asistente o expira la espera.
waitForAssistant({ timeout?, afterMessageCount? }): Future<DobroDeskSnapshot>- Errores
- realtime-unavailable
- network
- session-expired
sendMessage
Envía un mensaje y devuelve su estado de entrega.
sendMessage(String text, { String? idempotencyKey }): Future<DobroDeskAcceptedMessage>- Errores
- network
- idempotency-conflict
- conversation-stale
- rate-limited
- message-rejected
flushOutbox
Reintenta mutaciones pendientes con el cuerpo y la clave originales.
flushOutbox(): Future<List<DobroDeskAcceptedMessage>>- Errores
- network
- outbox-corrupt
- session-expired
resetSession
Borra la sesión, el snapshot y las mutaciones pendientes asociadas a la cuenta.
resetSession(): Future<void>- Errores
- request-in-progress
- outbox-corrupt
logout
Finaliza la sesión y libera capacidades opcionales.
logout(): Future<void>- Errores
- outbox-corrupt
presentWidget
Presenta el widget nativo con el contrato compartido.
presentWidget({ title?, subtitle?, appearance?, platform?, reduceMotion?, view?, articleId?, context?, hostActionIds? }): Future<void>Parámetros
titleString?- Overrides limitados para las claves de texto compartidas del widget.
subtitleString?- Overrides limitados para las claves de texto compartidas del widget.
appearanceMap<String, Object?>?- Objeto compartido appearance-v2: colores, tipografía, diseño y sombra dentro de los límites documentados.
platformMap<String, Object?>?- Ajustes específicos de plataforma para área segura, teclado y navegación dentro del contrato de diseño compartido.
reduceMotionbool?Valor predeterminado:system- De forma predeterminada sigue el sistema y las políticas nativas de accesibilidad, batería y temperatura.
viewString?- Opciones de navegación nativa y de presentación del launcher o panel web.
articleIdString?- Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
contextMap<String, Object?>?- Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
hostActionIdsList<String>?- Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.
- Errores
- invalid-config
- request-in-progress
- field-invalid
closeWidget
Cierra la presentación nativa actual o libera un host montado.
closeWidget(): Future<void>events
Se suscribe a eventos canónicos del SDK. Para liberar el listener, usa la suscripción, el callback de cancelación o la suscripción de stream que devuelve la plataforma.
events: Stream<DobroDeskEvent>operations
Expone operaciones tipadas de formularios, herramientas del cliente, adjuntos y comercio mediante el motor nativo.
operations: DobroDeskOperationssubmitForm
Envía valores acotados para un formulario de conversación proporcionado por el servidor. El identificador y los valores se validan antes de la solicitud nativa firmada.
operations.submitForm(String requestId, Map<String, Object?> values): Future<Object?>Parámetros
requestIdStringObligatorio- Envía valores acotados para un formulario de conversación proporcionado por el servidor. El identificador y los valores se validan antes de la solicitud nativa firmada.
valuesMap<String, Object?>Obligatorio- Envía valores acotados para un formulario de conversación proporcionado por el servidor. El identificador y los valores se validan antes de la solicitud nativa firmada.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- message-rejected
requestClientTool
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
operations.requestClientTool(input: DobroDeskClientToolRequest): Future<Object?>Parámetros
inputDobroDeskClientToolRequestObligatorio- Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- not_found
completeClientTool
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
operations.completeClientTool(input: DobroDeskClientToolResult): Future<Object?>Parámetros
inputDobroDeskClientToolResultObligatorio- Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- not_found
clientToolStatus
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
operations.clientToolStatus(String callId): Future<Object?>Parámetros
callIdStringObligatorio- Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- not_found
procedureAction
Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
operations.procedureAction(input: DobroDeskProcedureAction): Future<Object?>Parámetros
input.actionstart | answer | availability | select | calendar_date | back | confirm | declineObligatorio- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
input.valueStringObligatorio- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
input.idempotencyKeystring (16-128 characters)Obligatorio- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
input.procedureId / runId / expectedUpdatedAtString?- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
input.locale"en" | "uk" | "de" | "es"?- Locale del widget para el contenido. La web usa auto de forma predeterminada; los bundles nativos admiten actualmente en, uk, de y es.
input.stepId / parameterId / timeZoneString?- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
input.nativeCommerceUitrue?- Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- message-rejected
- idempotency-conflict
attachmentIntents
Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
operations.attachmentIntents(String messageId, List<DobroDeskAttachmentDescriptor> attachments): Future<Object?>Parámetros
messageIdStringObligatorio- Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
attachmentsDobroDeskAttachmentDescriptor[] (1-5; each up to 10 MiB)Obligatorio- Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
uploadAttachment
Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
operations.uploadAttachment(DobroDeskUploadIntent intent, String fileUri, String mimeType): Future<Object?>Parámetros
intentDobroDeskUploadIntentObligatorio- Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
fileUriString (file:// or content:// URI)Obligatorio- Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
mimeTypeStringObligatorio- Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- attachment_policy_failed
- attachment_rate_limited
listOrders
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
operations.listOrders({String? cursor, String? store}): Future<Object?>Parámetros
query{String? cursor, String? store}- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
orderDetail
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
operations.orderDetail(String orderRef): Future<Object?>Parámetros
orderRefStringObligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
createCommerceProposal
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
operations.createCommerceProposal({required String storeReference, required String orderReference, required String idempotencyKey}): Future<Object?>Parámetros
storeReferenceStringObligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
orderReferenceStringObligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
idempotencyKeystring (16-128 characters)Obligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
- idempotency-conflict
confirmCommerceProposal
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
operations.confirmCommerceProposal(String proposalId, String idempotencyKey): Future<Object?>Parámetros
proposalIdStringObligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
idempotencyKeystring (16-128 characters)Obligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- shopify_reconnect_required
- shopify_rate_limited
- not_found
- idempotency-conflict
commerceProposal
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
operations.commerceProposal(String proposalId): Future<Object?>Parámetros
proposalIdStringObligatorio- Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
- Devuelve
- Future<Object?>
- Errores
- field-invalid
- network
- http
- session-expired
- commerce_identity_required
- commerce_unavailable
- not_found
DobroDeskClientToolRequest
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
{ toolName: String; basisMessageId: String; input: Map<String, Object?> }DobroDeskClientToolResult
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
{ callId: String; output: Map<String, Object?> }DobroDeskAttachmentDescriptor
Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
{ clientId: String; fileName: String; mimeType: String; sizeBytes: int; kind: String (image|video|pdf|text) }DobroDeskUploadIntent
Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
{ clientId: String; attachmentId: String; uploadUrl: String; uploadToken: String; expiresAt: String }DobroDeskLoadingState
El estado de carga compartido es idle, starting-session, loading-messages, sending-message, waiting-for-assistant, executing-action, reconnecting o flushing-outbox.
"idle" | "starting-session" | "loading-messages" | "sending-message" | "waiting-for-assistant" | "executing-action" | "reconnecting" | "flushing-outbox"DobroDeskEvent
Los eventos nativos y de wrappers usan el envelope compartido de carga, sesión, snapshot, mensaje aceptado, error y sesión eliminada.
loading(state: DobroDeskLoadingState) | session-cleared | session-started | snapshot | message-accepted | error | host-action-requested | host-action-cancelleddispose
Detiene el trabajo de las capacidades opcionales y libera los recursos del host.
dispose(): Future<void>Presentación del widget
WidgetExperience (JSON schema)
Objeto compartido appearance-v2: colores, tipografía, diseño y sombra dentro de los límites documentados.
schemaVersion, locale, appearance, platformOverrides, presentation, reducedMotion, copy- Errores
- field-invalid
- unsupported
DobroDeskWidgetView
Presenta el widget nativo con el contrato compartido.
DobroDeskWidgetView({ required DobroDeskFlutterClient client, NativeWidgetOptions options = const NativeWidgetOptions(), bool visible = true, onError?, errorBuilder? })beginInlineWidget
Presenta el widget nativo con el contrato compartido.
beginInlineWidget(NativeWidgetOptions options, String ownerId): Future<void>- Errores
- invalid-config
- request-in-progress
- field-invalid
mountInlineWidget
Presenta el widget nativo con el contrato compartido.
mountInlineWidget(String ownerId): Future<void>- Errores
- invalid-config
- request-in-progress
- field-invalid
disposeInlineWidget
Cierra la presentación nativa actual o libera un host montado.
disposeInlineWidget(String ownerId): Future<void>NativeOperation (wrapper bridge)
Expone operaciones tipadas de formularios, herramientas del cliente, adjuntos y comercio mediante el motor 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)
Los puentes de framework codifican la finalización de una acción del host mediante un puente nativo local. No se envía como una operación HTTP a través del cliente nativo directo.
{ operation: "complete-host-action"; requestId: string; actionId: string; result: HostActionResult }Parámetros
requestIdstringObligatorio- Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.
actionIdstringObligatorio- Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.
resultHostActionResultObligatorio- Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.
- Devuelve
- JsonValue
- Errores
- field-invalid
- session-expired
- unsupported
Capacidades opcionales
attachVoice
Conecta la capacidad de voz opcional instalada por el host.
attachVoice(DobroDeskVoicePort port): Future<DobroDeskVoiceFacade>- Errores
- unsupported
- invalid-config
voice
Controla una capacidad de voz opcional instalada por el host: inicio, detención, silencio, barge-in y liberación. El widget web puede mostrar una interfaz de voz, pero esta API del SDK solo controla un puente de voz proporcionado por el host.
voice: DobroDeskVoiceFacade?voice lifecycle
Controla una capacidad de voz opcional instalada por el host: inicio, detención, silencio, barge-in y liberación. El widget web puede mostrar una interfaz de voz, pero esta API del SDK solo controla un puente de voz proporcionado por el host.
start(): Future<void>; stop(): Future<void>; setMuted(bool muted): Future<void>; bargeIn(): Future<void>; dispose(): Future<void>- Errores
- invalid-configuration
- permission-denied
- audio-unavailable
- session-expired
- realtime-unavailable
- invalid-response
- protocol-violation
- stale-frame
- queue-overloaded
- cancelled
- unsupported
push module (native only)
Describe el artefacto push nativo opcional y el registro del host. Los wrappers de framework no exportan un cliente push de JavaScript o Dart; usa el módulo nativo de iOS o Android.
No JS/Dart wrapper export; use the iOS DobroDeskPush product or Android com.dobrodesk:dobrodesk-push:<version>.Errores
DobroDeskException
Gestiona códigos estables legibles por máquinas y mantén los diagnósticos del servidor fuera de la interfaz del cliente.
DobroDeskException(String code, String message, { int? status, int? retryAfterSeconds, String? fieldId, String? requestId }); code: String- Errores
- 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