Ir al contenido principal
DocumentaciónNativeScript
Versión 0.2.0NativeScript de 8.9 a menos de 10

NativeScript SDK: Referencia de la API

NativeScript: Un puente tipado a los motores nativos compartidos de iOS y Android para el framework móvil seleccionado.

En esta página

Configuración

DobroDeskSdkConfig

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.

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

Ciclo de vida y conversación

DobroDeskNativeScriptClient

Crea el cliente y valida la configuración.

DobroDeskNativeScriptClient
new DobroDeskNativeScriptClient(bridge, config: DobroDeskSdkConfig)

createDobroDeskNativeScriptClient

Crea el cliente y valida la configuración.

createDobroDeskNativeScriptClient
createDobroDeskNativeScriptClient(config: DobroDeskSdkConfig): DobroDeskNativeScriptClient

startSession

Inicia una conversación con un primer mensaje idempotente.

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

resumeSession

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

resumeSession
resumeSession(): Promise<unknown>
Errores
  • network
  • session-expired
  • outbox-corrupt

refresh

Carga el estado actual de la conversación.

refresh
refresh(): Promise<unknown>
Errores
  • network
  • session-expired
  • message-rejected

waitForAssistant

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

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

sendMessage

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

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

flushOutbox

Reintenta mutaciones pendientes con el cuerpo y la clave originales.

flushOutbox
flushOutbox(): Promise<unknown>
Errores
  • network
  • outbox-corrupt
  • session-expired

resetSession

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

resetSession
resetSession(): Promise<unknown>
Errores
  • request-in-progress
  • outbox-corrupt

setAuthorizationToken

Proporciona al puente nativo el token de corta duración más reciente.

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

logout

Finaliza la sesión y libera capacidades opcionales.

logout
logout(): Promise<unknown>
Errores
  • outbox-corrupt

presentWidget

Presenta el widget nativo con el contrato compartido.

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

Parámetros

localeSdkLocale?
Locale del widget para el contenido. La web usa auto de forma predeterminada; los bundles nativos admiten actualmente en, uk, de y es.
titleString?
Overrides limitados para las claves de texto compartidas del widget.
subtitleString?
Overrides limitados para las claves de texto compartidas del widget.
appearanceobject?
Objeto compartido appearance-v2: colores, tipografía, diseño y sombra dentro de los límites documentados.
platformobject?
Ajustes específicos de plataforma para área segura, teclado y navegación dentro del contrato de diseño compartido.
reduceMotionboolean?
De forma predeterminada sigue el sistema y las políticas nativas de accesibilidad, batería y temperatura.
viewhome | messages | help
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.
hostActionIdsstring[]?
Callbacks permitidos de la aplicación para acciones guiadas del widget. No autentican solicitudes de red.
contextJsonObject?
Contexto JSON limitado proporcionado a acciones del host registradas explícitamente.
Errores
  • invalid-config
  • request-in-progress
  • field-invalid

closeWidget

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

closeWidget
closeWidget(): Promise<unknown>

subscribe

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.

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

operations

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

operations
operations: DobroDeskRichOperations

submitForm

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.

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

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
Promise<JsonValue>
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.

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

Parámetros

inputClientToolRequestObligatorio
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
Promise<JsonValue>
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.

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

Parámetros

inputClientToolResultObligatorio
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
Promise<JsonValue>
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.

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

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
Promise<JsonValue>
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.

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

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
Promise<JsonValue>
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.

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

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
Promise<JsonValue>
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.

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

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.
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
Promise<JsonValue>
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.

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

Parámetros

queryCommerceOrderQuery
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
Devuelve
Promise<JsonValue>
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.

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

Parámetros

orderRefstringObligatorio
Lee datos de pedidos y crea, confirma o consulta una propuesta acotada para cancelar un pedido de Shopify.
Devuelve
Promise<JsonValue>
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.

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

Parámetros

inputCommerceProposalInputObligatorio
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
Promise<JsonValue>
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.

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

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
Promise<JsonValue>
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.

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

Parámetros

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

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 }

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: AttachmentKind }

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 }

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 }[] } }

DobroDeskLoadingState

El estado de carga compartido es idle, starting-session, loading-messages, sending-message, waiting-for-assistant, executing-action, reconnecting o flushing-outbox.

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

SdkEvent

Los eventos nativos y de wrappers usan el envelope compartido de carga, sesión, snapshot, mensaje aceptado, error y sesión eliminada.

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

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

createWidgetView

Presenta el widget nativo con el contrato compartido.

createWidgetView
createWidgetView(options?: NativeScriptWidgetViewOptions): NativeScriptWidgetView
Errores
  • invalid-config
  • request-in-progress
  • field-invalid

DobroDeskNativeScriptWidgetView

Presenta el widget nativo con el contrato compartido.

DobroDeskNativeScriptWidgetView
ContentView; isOpen: boolean; open(): Promise<void>; close(): Promise<void>; release(): Promise<void>

onLoadingChange

Notifica al host las fases de carga y reconexión.

onLoadingChange
onLoadingChange(loading: boolean): void

NativeOperation (wrapper bridge)

Expone operaciones tipadas de formularios, herramientas del cliente, adjuntos y comercio mediante el motor 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)

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.

complete-host-action (local bridge)
{ 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
attachVoice(port: DobroDeskVoicePort): Promise<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
voice: DobroDeskVoiceFacade | undefined

createNativeScriptVoicePort

Conecta la capacidad de voz opcional instalada por el host.

createNativeScriptVoicePort
createNativeScriptVoicePort(bridge): DobroDeskVoicePort

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
start(): Promise<void>; stop(): Promise<void>; setMuted(muted: boolean): Promise<void>; bargeIn(): Promise<void>; dispose(): Promise<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.

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

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