
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.
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.
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.
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.
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.
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
- Crea o elige tu proyecto de aplicación Bubble en BestPlugins → Dashboard → Plugins.
- Elige este complemento y copia su clave de proyecto.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Añade el elemento, elige los datos de tu aplicación y construye el flujo de trabajo a continuación.
- 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 · textEstados
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 · textEventos
recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_errorAcciones y sus entradas
Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speedConfiguración del elemento · 10
titletext · Predeterminado: ""- Valor de ejemplo
Lesson 4 — review - Ejemplo de expresión Bubble
Selected 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 ejemplo
300 - Ejemplo de expresión Bubble
Voice 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 ejemplo
10485760 - Ejemplo de expresión Bubble
Voice 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 ejemplo
yes - Ejemplo de expresión Bubble
GuideHost'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 ejemplo
no - Ejemplo de expresión Bubble
GuideHost'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 Bubble
App 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 Bubble
Selected 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 ejemplo
https://your-app.bubbleapps.io/version-test/fileupload - Ejemplo de expresión Bubble
App 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 ejemplo
uk - Ejemplo de expresión Bubble
Current 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 Bubble
Current 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 Bubble
Selected 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 Bubble
Selected 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 ejemplo
12 - Ejemplo de expresión Bubble
Selected 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 ejemplo
1.5 - Ejemplo de expresión Bubble
Preview 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 · textResultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.
permission_status · textResultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.
is_recording · yes_noValor actual del elemento seleccionado. Léelo después del evento relacionado.
is_paused · yes_noValor actual del elemento seleccionado. Léelo después del evento relacionado.
duration · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
local_uri · textUbicación del archivo en este dispositivo. Guarde o cargue el archivo por separado si debe mantenerse en línea.
draft_id · textIdentificador 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_noValor actual del elemento seleccionado. Léelo después del evento relacionado.
mime_type · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
file_size · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
waveform_peaks_json · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
preview_status · textResultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.
preview_is_playing · yes_noValor actual del elemento seleccionado. Léelo después del evento relacionado.
preview_current_time · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
upload_status · textResultado actual de esta acción. Usa el evento de finalización correspondiente antes de guardar el éxito.
upload_progress · numberValor actual del elemento seleccionado. Léelo después del evento relacionado.
uploaded_url · textValor actual del elemento seleccionado. Léelo después del evento relacionado.
uploaded_file · fileArchivo devuelto después de upload_succeeded. Guárdelo en su campo de archivo Bubble.
error_code · textInformación de error de la última acción. Muestra un mensaje útil y ofrece el reintento correspondiente.
Eventos
recording_startedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recording_pausedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recording_resumedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recording_stoppedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recording_readyCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recording_cancelledCuando ocurra este evento, lea los estados relacionados del mismo elemento.
recorder_errorCuando ocurra este evento, lea los estados relacionados del mismo elemento.
local_savedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
local_restoredCuando ocurra este evento, lea los estados relacionados del mismo elemento.
local_deletedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
upload_succeededCuando ocurra este evento, lea los estados relacionados del mismo elemento.
upload_failedCuando ocurra este evento, lea los estados relacionados del mismo elemento.
upload_cancelledCuando ocurra este evento, lea los estados relacionados del mismo elemento.
preview_readyCuando ocurra este evento, lea los estados relacionados del mismo elemento.
preview_errorCuando 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.