Ir al contenido principal
DocumentacióniOS
Versión 0.2.0iOS 15.1 o posterior

iOS SDK: Referencia de la API

iOS: APIs nativas para el transporte firmado, el estado de la UI del widget, los reintentos y la entrega offline duradera.

En esta página

Configuración

apiOrigin

Obligatorio

El origen de API usa HTTPS en producción. Los clientes nativos permiten HTTP en localhost para desarrollo.

apiOrigin
URL

integrationId

Obligatorio

Identificador público de integración copiado del canal de widget de DobroDesk.

integrationId
String

accountScope

Obligatorio

Clave estable del cliente o la cuenta que aísla el estado persistente de la sesión y la bandeja de salida.

accountScope
String

locale

Valor predeterminado: en

Locale del widget para el contenido. La web usa auto de forma predeterminada; los bundles nativos admiten actualmente en, uk, de y es.

locale
String = "en"

credentialProvider

Obligatorio

Una función del backend que devuelve un JWT de cliente firmado y de corta duración. El secreto nunca va en la aplicación.

credentialProvider
() async throws -> String

turnstileToken

Token de Turnstile opcional para las integraciones que lo requieren.

turnstileToken
String?

pollInterval

Valor predeterminado: 1

Intervalo limitado que se usa al consultar una respuesta asíncrona del asistente.

pollInterval
TimeInterval = 1

Ciclo de vida y conversación

DobroDeskClient

Crea el cliente y valida la configuración.

DobroDeskClient
init(configuration: DobroDeskConfiguration, outbox: any DobroDeskOutboxStore = ..., pendingSessionStarts: any DobroDeskPendingSessionStartStore = ..., sessionStore: any DobroDeskSessionStore = ..., pendingAttachmentSends: any DobroDeskPendingAttachmentStore = ..., pendingAttachmentOperations: any DobroDeskPendingAttachmentOperationStore = ..., transport: any DobroDeskHTTPTransport = ...)
Errores
  • invalid-config
  • outbox-corrupt

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
events() -> AsyncStream<DobroDeskEvent>

state getters

Devuelve el estado actual del widget sin suscribirse.

state getters
currentSession(), currentConfiguration(), currentWidgetVoiceSettings(), currentWidgetWorkspacePublicName(), currentWidgetChannels(), currentWidgetNavigation(), currentWidgetAvailability(), currentSnapshot(), currentWidgetContent(), currentLoadingState(), currentCustomerMessageId(), shouldWaitForAssistant()

loadWidgetAppearance

Carga el bundle validado de apariencia o contenido para el widget nativo.

loadWidgetAppearance
loadWidgetAppearance() async throws -> [String: JSONValue]
Errores
  • network
  • http
  • session-expired

loadWidgetContent

Carga el bundle validado de apariencia o contenido para el widget nativo.

loadWidgetContent
loadWidgetContent() async throws -> DobroDeskWidgetContentSnapshot
Errores
  • network
  • http
  • field-invalid

startSession

Inicia una conversación con un primer mensaje idempotente.

startSession
startSession(_ input: DobroDeskSessionStartInput) async throws -> DobroDeskSession

Parámetros

messageStringObligatorio
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
idempotencyKeyString?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
prefillPrefill?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
metadataJSON object?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
timeZoneString?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
Errores
  • network
  • field-invalid
  • idempotency-conflict
  • outbox-corrupt

resumeSession

Restaura el estado de la cuenta o una sesión del servidor.

resumeSession
resumeSession() async throws -> DobroDeskSession?
Errores
  • network
  • session-expired
  • outbox-corrupt

restoreSession

Restaura una prueba de sesión aceptada y carga su snapshot.

restoreSession
restoreSession(_ restored: DobroDeskSession) async throws -> DobroDeskSnapshot
Errores
  • session-expired
  • network

refresh

Carga el estado actual de la conversación.

refresh
refresh() async throws -> DobroDeskSnapshot
Errores
  • network
  • session-expired
  • message-rejected

waitForAssistant

Consulta con tiempos limitados hasta que termina el trabajo del asistente o expira la espera.

waitForAssistant
waitForAssistant(timeout: TimeInterval = 30, afterMessageCount: Int? = nil) async throws -> DobroDeskSnapshot

Parámetros

timeoutnumberValor predeterminado: 30s
Intervalo limitado que se usa al consultar una respuesta asíncrona del asistente.
afterMessageCountnumber?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
Errores
  • realtime-unavailable
  • network
  • session-expired

sendMessage

Envía un mensaje y devuelve su estado de entrega.

sendMessage
sendMessage(_ input: DobroDeskMessageInput) async throws -> DobroDeskAcceptedMessage

Parámetros

textStringObligatorio
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
idempotencyKeyString?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
Errores
  • network
  • idempotency-conflict
  • conversation-stale
  • rate-limited
  • message-rejected

attachments

Envía un mensaje y devuelve su estado de entrega.

attachments
startSession(_:attachments:), sendMessage(_:attachments:)
Errores
  • attachment_policy_failed
  • attachment_rate_limited
  • session-expired
  • outbox-corrupt

performOperation / performNativeOperation

Expone operaciones tipadas de formularios, herramientas del cliente, adjuntos y comercio mediante el motor nativo.

performOperation / performNativeOperation
performOperation(requestJson: String) async throws -> String
Errores
  • field-invalid
  • unsupported
  • session-expired
  • http

NativeOperation

Devuelve JSON decodificado desde el puente nativo de operaciones. Trata la validación, el transporte, la expiración y el rechazo del servidor como resultados explícitos.

NativeOperation
operation: "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"
Errores
  • field-invalid
  • unsupported
  • session-expired
  • http

submit-form request

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.

submit-form request
{ operation: "submit-form"; requestId: string; values: JsonObject }

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.
valuesJsonObjectObligatorio
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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • message-rejected

request-client-tool request

Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.

request-client-tool request
{ operation: "request-client-tool"; input: ClientToolRequest }

Parámetros

toolNamestringObligatorio
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
basisMessageIdstringObligatorio
Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.
inputClientToolPayloadObligatorio
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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

complete-client-tool request

Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.

complete-client-tool request
{ operation: "complete-client-tool"; input: ClientToolResult }

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.
outputClientToolPayloadObligatorio
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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

client-tool-status request

Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.

client-tool-status request
{ operation: "client-tool-status"; callId: string }

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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • not_found

procedure-action request

Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.

procedure-action request
{ operation: "procedure-action"; input: ProcedureActionInput }

Parámetros

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.
valuestringObligatorio
Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
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.
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.
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.
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.
nativeCommerceUitrue?
Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.
Devuelve
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • message-rejected
  • idempotency-conflict

attachment-intents request

Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.

attachment-intents request
{ operation: "attachment-intents"; messageId: string; attachments: AttachmentDescriptor[] }

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.
attachmentsAttachmentDescriptor[] (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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • attachment_policy_failed
  • attachment_rate_limited

upload-attachment request

Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.

upload-attachment request
{ operation: "upload-attachment"; intent: AttachmentUploadIntent; fileUri: string; mimeType: string }

Parámetros

intentAttachmentUploadIntentObligatorio
Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.
fileUrifile:// or content:// URIObligatorio
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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • attachment_policy_failed
  • attachment_rate_limited

list-orders request

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

list-orders request
{ operation: "list-orders"; query?: CommerceOrderQuery }

Parámetros

query.cursorstring?
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
query.storestring?
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
Devuelve
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited

order-detail request

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

order-detail request
{ operation: "order-detail"; orderRef: string }

Parámetros

orderRefstringObligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
Devuelve
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • not_found

create-commerce-proposal request

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

create-commerce-proposal request
{ operation: "create-commerce-proposal"; input: CommerceProposalInput; idempotencyKey: string }

Parámetros

input.actionId"shopify_order_cancel"Obligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
input.selection.storeReferencestringObligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
input.selection.orderReferencestringObligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
input.selection.lineItems{ lineItemReference: string; quantity: number }[]?
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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited
  • idempotency-conflict

confirm-commerce-proposal request

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

confirm-commerce-proposal request
{ operation: "confirm-commerce-proposal"; proposalId: string; input: { confirmed: true }; idempotencyKey: string }

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
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • shopify_reconnect_required
  • shopify_rate_limited
  • not_found
  • idempotency-conflict

commerce-proposal request

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

commerce-proposal request
{ operation: "commerce-proposal"; proposalId: string }

Parámetros

proposalIdstringObligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
Devuelve
JsonValue
Errores
  • field-invalid
  • network
  • http
  • session-expired
  • commerce_identity_required
  • commerce_unavailable
  • not_found

NativeOperationBridgeResult

Devuelve JSON decodificado desde el puente nativo de operaciones. Trata la validación, el transporte, la expiración y el rechazo del servidor como resultados explícitos.

NativeOperationBridgeResult
{ valueJson: string }
Devuelve
JsonValue
Errores
  • http

HostActionResult

Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.

HostActionResult
{ ok: boolean; status: "acknowledged" | "completed" | "failed"; data?: JsonValue; code?: string; retryable?: boolean }

ClientToolRequest

Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.

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

ClientToolResult

Solicita una herramienta de cliente permitida, confirma su resultado o consulta su estado. Los payloads son planos, acotados y rechazan nombres de campos sensibles.

ClientToolResult
{ callId: string; output: ClientToolPayload }

ProcedureActionInput

Avanza una acción de procedimiento proporcionada por el servidor con una clave de idempotencia y la revisión de flujo esperada.

ProcedureActionInput
{ action: "start" | "answer" | "availability" | "select" | "calendar_date" | "back" | "confirm" | "decline"; value: string; idempotencyKey: string; procedureId?: string; locale?: "en" | "uk" | "de" | "es"; runId?: string; expectedUpdatedAt?: string; stepId?: string; parameterId?: string; timeZone?: string; nativeCommerceUi?: true }

AttachmentDescriptor

Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.

AttachmentDescriptor
{ clientId: string; fileName: string; mimeType: string; sizeBytes: number; kind: "image" | "video" | "pdf" | "text" }

AttachmentUploadIntent

Crea intenciones de carga y sube archivos locales seleccionados dentro de los límites de tamaño, tipo, URI y política del SDK.

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

CommerceOrderQuery

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

CommerceOrderQuery
{ cursor?: string; store?: string }

CommerceProposalInput

Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.

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

flushOutbox

Reintenta mutaciones pendientes con el cuerpo y la clave originales.

flushOutbox
flushOutbox() async throws -> [DobroDeskAcceptedMessage]
Errores
  • network
  • outbox-corrupt
  • session-expired

resetSession

Borra la sesión, el snapshot y las mutaciones pendientes asociadas a la cuenta.

resetSession
resetSession() async throws
Errores
  • request-in-progress
  • outbox-corrupt

Presentación del widget

WidgetExperience

Objeto compartido appearance-v2: colores, tipografía, diseño y sombra dentro de los límites documentados.

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

reducedMotion

De forma predeterminada sigue el sistema y las políticas nativas de accesibilidad, batería y temperatura.

reducedMotion
system | always

DobroDeskWidgetLocaleCatalog.copy(for:)

Carga un mapa de textos principales del widget incluido en el SDK nativo. El catálogo valida ese contrato compartido e incluye actualmente en, uk, de y es; las etiquetas derivadas de procedimientos, roles y validación son independientes.

DobroDeskWidgetLocaleCatalog.copy(for:)
DobroDeskWidgetLocaleCatalog.copy(for locale: String) throws -> [String: String]
Errores
  • field-invalid

DobroDeskWidgetCopy.init(values:)

Crea o lee los textos compartidos validados del widget. Los valores desconocidos, ausentes, vacíos o demasiado largos se rechazan antes de renderizar.

DobroDeskWidgetCopy.init(values:)
DobroDeskWidgetCopy(values: [String: String]) throws -> DobroDeskWidgetCopy
Errores
  • field-invalid

DobroDeskWidgetCopy.requiredKeys

Crea o lee los textos compartidos validados del widget. Los valores desconocidos, ausentes, vacíos o demasiado largos se rechazan antes de renderizar.

DobroDeskWidgetCopy.requiredKeys
Set<String>

DobroDeskWidgetExperience.decodeAndResolve

Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.

DobroDeskWidgetExperience.decodeAndResolve
decodeAndResolve(_ data: Data, platform: DobroDeskWidgetPlatform, osReducedMotion: Bool, localeCopy: [String: String], decoder: JSONDecoder = JSONDecoder()) throws -> DobroDeskWidgetExperience

Parámetros

dataDataObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
platformDobroDeskWidgetPlatformObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
osReducedMotionBoolObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
localeCopy[String: String]Obligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
decoderJSONDecoderValor predeterminado: JSONDecoder()
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
Devuelve
DobroDeskWidgetExperience
Errores
  • field-invalid
  • unsupported

DobroDeskWidgetExperience.resolve

Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.

DobroDeskWidgetExperience.resolve
resolve(_ input: DobroDeskWidgetExperienceInput, platform: DobroDeskWidgetPlatform, osReducedMotion: Bool, localeCopy: [String: String]) throws -> DobroDeskWidgetExperience

Parámetros

inputDobroDeskWidgetExperienceInputObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
platformDobroDeskWidgetPlatformObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
osReducedMotionBoolObligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
localeCopy[String: String]Obligatorio
Decodifica y resuelve el contrato de diseño compartido con overrides de plataforma, de textos y el estado del sistema del host para reducir el movimiento.
Devuelve
DobroDeskWidgetExperience
Errores
  • field-invalid
  • unsupported

DobroDeskWidgetBridgePresenter.present

Presenta el widget nativo con el contrato compartido.

DobroDeskWidgetBridgePresenter.present
present(client: DobroDeskClient, options: NSDictionary, from: UIViewController) async throws
Errores
  • request-in-progress
  • invalid-config
  • field-invalid
  • unsupported

DobroDeskWidgetViewController

Presenta el widget nativo con el contrato compartido.

DobroDeskWidgetViewController
init(client: DobroDeskClient, experience: DobroDeskWidgetExperience, ...)

close

Cierra la presentación nativa actual o libera un host montado.

close
DobroDeskWidgetBridgePresenter.close(animated: Bool = true)

DobroDeskWidgetBridgePresenter.embed

Presenta el widget nativo con el contrato compartido.

DobroDeskWidgetBridgePresenter.embed
embed(client: DobroDeskClient, options: NSDictionary, in container: UIView, parent: UIViewController) async throws
Errores
  • request-in-progress
  • invalid-config
  • field-invalid
  • unsupported

setEmbeddedVisible

Opciones de navegación nativa y de presentación del launcher o panel web.

setEmbeddedVisible
setEmbeddedVisible(_ visible: Bool)

Capacidades opcionales

voiceFactory

Instala o elimina la fábrica de voz nativa opcional usada por las presentaciones del widget.

voiceFactory
DobroDeskWidgetBridgePresenter.installVoiceFactory(_ factory: DobroDeskWidgetVoiceFactory); uninstallVoiceFactory()
Errores
  • unsupported
  • invalid-config

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.

voice lifecycle
DobroDeskVoiceClient.start(), stop(), setMuted(), bargeIn(), pauseForBackground(), resumeAfterForeground(), handleAudioInterruption(ended:shouldResume:), handleRouteChange()
Errores
  • invalid-configuration
  • permission-denied
  • audio-unavailable
  • session-expired
  • realtime-unavailable
  • invalid-response
  • protocol-violation
  • stale-frame
  • queue-overloaded
  • cancelled
  • unsupported

push

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.

push
iOS: DobroDeskPush product

Errores

SdkErrorCode

Gestiona códigos estables legibles por máquinas y mantén los diagnósticos del servidor fuera de la interfaz del 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