Interfaz Audio Recorder.
Interfaz Audio Recorder.
← Todas las guías nativas

Xodera Plugins · Bubble Native

Xodera Audio Recorder Native

Permita que las personas graben una nota de voz, la escuchen antes de enviarla y mantengan un borrador local. Cargue solo cuando elijan enviar la grabación.

Public beta guides · Haptics instructions are in its Bubble listing

Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.

Documentación revisada 6 noviembre 2026

Ejemplos prácticos

Escuchar antes de enviar un mensaje de voz no confidencial

Los usuarios necesitan la oportunidad de escuchar y reemplazar una grabación antes de que se convierta en un adjunto.

`title = the app’s conversation label`; establezca `max_duration_seconds` y `max_upload_bytes` en su política de mensajes.

Start recording → Stop recording → esperar `recording_ready` → Play preview. Ofrezca Seek preview y Set preview speed. Sólo un Enviar explícito invoca Upload to Bubble en el punto final de carga aceptado por la propia aplicación.

Sólo en `upload_succeeded`, cree su Message y establezca su campo de audio a `uploaded_file`. El mensaje no lo crea el propio grabador.

Al denegar el micrófono muestre `permission_status`; al fallar la carga mantenga la grabación local. Verifique el resultado de una carga desconocida antes de reintentar para que Enviar no pueda crear adjuntos/mensajes duplicados.

La carga Bubble crea un archivo de audio público. No utilice esta carga para grabaciones confidenciales.

Práctica de pronunciación sin carga inmediata

Los estudiantes quieren comparar su propia respuesta hablada con una lección antes de decidir enviarla.

`title = Current Exercise’s prompt`; `max_duration_seconds = the exercise limit`; una respuesta de ejercicio sigue siendo un registro propiedad de la aplicación.

Grabar → Detener → Play preview. Permita que el estudiante busque, ralentice la vista previa o cancele y grabe otro intento. Save locally sólo cuando elija conservar el borrador.

`duration`, `local_uri`, `mime_type` y `draft_id` describen el intento. Su aplicación decide si permanece local o se envía posteriormente mediante su flujo de carga elegido.

En `preview_error`, conserve el borrador y muestre `error_code`. No convierta una vista previa o borrador guardado en una Respuesta enviada hasta que el flujo de trabajo de envío de la aplicación tenga éxito.

La carga Bubble crea un archivo de audio público. No utilice esta carga para grabaciones confidenciales.

Mantenga un borrador de voz local y haga que Enviar sea explícito

Un trabajador de campo puede ser interrumpido antes de terminar una nota y no debería tener que cargarla solo para conservarla.

`saved_draft_id = the draft ID stored by your app for this device and account`; `title = the selected non-sensitive task label`.

Iniciar/Stop recording → Save locally. Almacene el `draft_id` devuelto en el estado de su propio dispositivo/cuenta. Use Restore local draft para ese mismo ID, luego Play preview antes de decidir si cargar.

En `local_saved` o `local_restored`, inspeccione `is_saved_locally`, `local_uri` y `duration`. Sólo elimine el borrador guardado después de una elección explícita del usuario o tras una política de retención confirmada por separado.

Si la restauración falla, muestre `error_code` y conserve el ID para diagnóstico; no informe una grabación vacía o diferente como restaurada. Nunca auto‑upload al reconectar.

La carga Bubble crea un archivo de audio público. No utilice esta carga para grabaciones confidenciales.

Lo que funciona ahora

Public beta. Use the documented controls and actions; test supported formats, permissions and device behavior in your own native app. Browser preview does not validate native device output.

Crea el flujo de trabajo

Utiliza las acciones beta disponibles a continuación y prueba el resultado en tus dispositivos objetivo.

Estos ejemplos usan registros de aplicación como Lesson, Message y Order. Reemplácelos con sus propios tipos de datos y nombres de elementos. Las direcciones de medios de ejemplo deben ser sustituidas por sus propios archivos.

  1. Añada el grabador. Configure document_context = Current User's unique id y is_active según si la vista de grabación está abierta.

  2. Start recording solicita permiso de micrófono. Pausar y reanudar mantienen la misma toma. Stop recording la finaliza; espere a recording_ready antes de ofrecer revisión o carga.

  3. Utilice los controles de vista previa para escuchar. Save locally mantiene un borrador en este dispositivo; después de local_saved, conserve draft_id para Restore local draft.

  4. Explique que al enviar se crea un archivo público. Establezca bubble_upload_url a la dirección de carga de archivos correcta Development o Live de su propia aplicación Bubble. Ejecute Upload to Bubble solo cuando el usuario elija Enviar; en upload_succeeded, guarde uploaded_file en su registro.

Diagrama de flujo — no es una captura de pantalla de la aplicación

Configura una vez

Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins. Elige Xodera Audio Recorder Native, copia su clave, luego abre Bubble → Plugins → Xodera Audio Recorder Native y pégala en licensing_api_key. Guarda una vez; luego usa las acciones a continuación. Cada complemento en cada proyecto tiene su propia clave.

Solicite permiso de micrófono cuando el usuario comience a grabar. Elija cómo la aplicación guardará los borradores. Bubble upload almacena un archivo público, por lo que solo debe usarse para audio apto para almacenamiento público.

Configura una vez
  1. Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins.
  2. Elige este complemento y copia su clave de proyecto.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Añade el elemento, elige los datos de tu aplicación y construye el flujo de trabajo a continuación.
  5. In the dashboard, review and confirm the 7-day card trial for this plugin. It then costs US$1.50/month per app project, including development and production. Cancel before the trial ends to avoid the first charge.
Instalación y suscripción

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Guarda el resultado en tu aplicación

Después de upload_succeeded, configure VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration y mime_type = Recorder's mime_type. draft_id restaura un borrador en este dispositivo; no es un archivo de audio en línea.

Fallo, cancelación y recuperación

Si se niega el acceso al micrófono, explique cómo habilitarlo en la configuración del dispositivo. Cancel recording descarta la toma no guardada; los borradores guardados permanecen. Si una carga se interrumpe, conserve la grabación local y verifique si el archivo llegó antes de enviarlo nuevamente. Delete saved draft elimina solo el borrador guardado seleccionado.

Capacidades y límites

Grabación máxima predeterminada: 300 segundos; configurable 1–3600. Límite de carga predeterminado: 10 MiB; máximo 30 MiB. Tiempo de espera de carga: 60 segundos, sin reintento automático. Las cargas Bubble son públicas. Solo se admiten sus propias direcciones de carga de archivos *.bubbleapps.io; los dominios personalizados no están soportados. Los borradores locales no son almacenamiento cifrado.

Configuraciones, acciones y resultados

Utilice estos nombres en Bubble. Las funciones planificadas están marcadas por separado.

Configuraciones beta disponibles

Configuración del elemento

title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · text

Estados

recorder_status · textpermission_status · textis_recording · yes_nois_paused · yes_noduration · numberlocal_uri · textdraft_id · textis_saved_locally · yes_nomime_type · textfile_size · numberwaveform_peaks_json · textpreview_status · textpreview_is_playing · yes_nopreview_current_time · numberupload_status · textupload_progress · numberuploaded_url · textuploaded_file · fileerror_code · text

Eventos

recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_error

Acciones y sus entradas

Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speed
Configuración del elemento · 10
titletext · Predeterminado: ""
Valor de ejemploLesson 4 — review
Ejemplo de expresión BubbleSelected Lesson's name
Texto visible de la aplicación; vacío usa la copia localizada incorporada donde sea compatible. Sin credenciales.
max_duration_secondsnumber · Predeterminado: 300
Valor de ejemplo300
Ejemplo de expresión BubbleVoice Settings' max_seconds
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
max_upload_bytesnumber · Predeterminado: 10485760
Valor de ejemplo10485760
Ejemplo de expresión BubbleVoice Settings' max_upload_bytes
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
is_activeyes_no · Predeterminado: true
Valor de ejemployes
Ejemplo de expresión BubbleGuideHost's view_is_active (your yes/no custom state)
Establece sí mientras esta vista está abierta. Establece no al salir, para que la reproducción o el trabajo actual puedan detenerse.
disabledyes_no · Predeterminado: false
Valor de ejemplono
Ejemplo de expresión BubbleGuideHost's is_busy (your yes/no custom state)
Desactiva el elemento mientras tu aplicación está ocupada o esta acción no está disponible.
ui_text_jsontext · Predeterminado: ""
Valor de ejemplo{}
Ejemplo de expresión BubbleApp Settings' player_labels_json (supported keys only)
JSON opcional con etiquetas de botón compatibles. Déjalo vacío para usar el texto incorporado.
saved_draft_idtext · Predeterminado: ""
Valor de ejemplo<returned draft_id>
Ejemplo de expresión BubbleSelected VoiceDraft's draft_id
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
bubble_upload_urltext · Predeterminado: ""
Valor de ejemplohttps://your-app.bubbleapps.io/version-test/fileupload
Ejemplo de expresión BubbleApp Settings' selected_bubble_upload_url
Su propia dirección de carga de archivos de la aplicación Bubble: /version-test/fileupload para Development, /fileupload para Live. Esta carga crea archivos públicos.
languagetext · Predeterminado: "auto"
Valor de ejemplouk
Ejemplo de expresión BubbleCurrent User's preferred_language
Configurar language=auto para seguir un dispositivo o idioma de navegador compatible. Introduzca un código de idioma compatible para seleccionarlo explícitamente.
document_contexttext · Predeterminado: ""
Valor de ejemplo<current-user-id>
Ejemplo de expresión BubbleCurrent User's unique id
Valor estable para esta cuenta o registro. Use el mismo valor al restaurar sus archivos o borradores guardados.
Acciones y sus entradas · 15
Start recording

Sin parámetros de acción

Pause recording

Sin parámetros de acción

Resume recording

Sin parámetros de acción

Stop recording

Sin parámetros de acción

Cancel recording

Sin parámetros de acción

Save locally

Sin parámetros de acción

Restore local draft
draft_idtext · Predeterminado: —
Valor de ejemplo<returned draft_id>
Ejemplo de expresión BubbleSelected VoiceDraft's draft_id
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Delete saved draft
draft_idtext · Predeterminado: —
Valor de ejemplo<returned draft_id>
Ejemplo de expresión BubbleSelected VoiceDraft's draft_id
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Upload to Bubble

Sin parámetros de acción

Cancel upload

Sin parámetros de acción

Play preview

Sin parámetros de acción

Pause preview

Sin parámetros de acción

Stop preview

Sin parámetros de acción

Seek preview
secondsnumber · Predeterminado: —
Valor de ejemplo12
Ejemplo de expresión BubbleSelected Comment's seconds
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Set preview speed
ratenumber · Predeterminado: —
Valor de ejemplo1.5
Ejemplo de expresión BubblePreview Speed Dropdown's value
Utilice el valor del registro comercial actual; validarlo contra los límites a continuación.
Estados y eventos

Estados

recorder_status · text

Resultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.

permission_status · text

Resultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.

is_recording · yes_no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

is_paused · yes_no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

duration · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

local_uri · text

Ubicación del archivo en este dispositivo. Guarde o cargue el archivo por separado si debe mantenerse en línea.

draft_id · text

Identificador para este elemento o acción. Manténgalo con el registro de la aplicación correspondiente. Use el mismo identificador de solicitud al reintentar un resultado incierto.

is_saved_locally · yes_no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

mime_type · text

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

file_size · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

waveform_peaks_json · text

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

preview_status · text

Resultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.

preview_is_playing · yes_no

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

preview_current_time · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

upload_status · text

Resultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.

upload_progress · number

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

uploaded_url · text

Valor actual del elemento seleccionado. Léelo después del evento relacionado.

uploaded_file · file

Archivo devuelto después de upload_succeeded. Guárdelo en su campo de archivo Bubble.

error_code · text

Información de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.

Eventos

recording_started

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recording_paused

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recording_resumed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recording_stopped

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recording_ready

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recording_cancelled

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

recorder_error

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

local_saved

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

local_restored

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

local_deleted

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

upload_succeeded

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

upload_failed

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

upload_cancelled

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

preview_ready

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

preview_error

Cuando ocurra este evento, lea los estados relacionados del mismo elemento.

Preguntas que hacen los desarrolladores

¿El guardado local sube la grabación?

No. Save locally mantiene un borrador del dispositivo propio. Upload to Bubble es una operación pública explícita separada.

¿Cómo funciona la suscripción?

For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.

Guías relacionadas

Para obtener ayuda, indíquenos qué plugin y dispositivo utiliza, la acción que intentó y lo que ocurrió. Use un ejemplo sin datos personales. Nunca comparta su clave ni archivos privados.