Interface Audio Recorder.
Interface Audio Recorder.
← Tous les guides natifs

Xodera Plugins · Bubble Native

Xodera Audio Recorder Native

Permettez l’enregistrement d’une note vocale, l’écoute avant envoi et la conservation d’un brouillon local. Le téléversement se fait uniquement sur demande.

Guides bêta publics · instructions Haptics dans sa fiche Bubble

Offre bêta publique : installation Bubble gratuite · essai de 7 jours avec carte, puis 1,50 USD/mois par plugin/projet.

Documentation révisée 6 novembre 2026

Exemples pratiques

Écouter avant d’envoyer un message vocal non confidentiel

L’utilisateur doit pouvoir réécouter et remplacer son enregistrement avant de le joindre à un message.

`title = the app’s conversation label` ; définissez `max_duration_seconds` et `max_upload_bytes` selon votre politique de messagerie.

Start recording → Stop recording → attendre `recording_ready` → Play preview. Proposez Seek preview et Set preview speed. Seul Envoyer appelle Upload to Bubble vers le point d’envoi validé de votre app.

Uniquement sur `upload_succeeded`, créez votre Message et définissez son champ audio sur `uploaded_file`. Le message n’est pas créé par l’enregistreur lui‑-même.

En cas de refus du micro, affichez `permission_status`. Après un échec d’envoi, gardez l’enregistrement local. Réconciliez une réponse inconnue avant tout nouvel envoi pour éviter les doublons.

L’envoi Bubble crée un fichier audio public. Ne l’utilisez pas pour un enregistrement confidentiel.

S’entraîner à la prononciation sans envoi immédiat

L’apprenant veut écouter sa réponse avant de décider de la transmettre.

`title = Current Exercise’s prompt` ; `max_duration_seconds = the exercise limit` ; une réponse d’exercice reste un enregistrement appartenant à l’application.

Enregistrer → arrêter → Play preview. L’apprenant peut se déplacer, ralentir l’aperçu ou annuler pour recommencer. Save locally ne s’exécute que s’il veut garder le brouillon.

`duration`, `local_uri`, `mime_type` et `draft_id` décrivent la tentative. Votre app choisit de la garder localement ou de la transmettre plus tard par votre workflow d’envoi.

Sur `preview_error`, conservez le brouillon et affichez `error_code`. Un aperçu ou un brouillon local ne doit pas devenir une Réponse soumise avant la réussite du workflow d’envoi.

L’envoi Bubble crée un fichier audio public. Ne l’utilisez pas pour un enregistrement confidentiel.

Garder un brouillon vocal local et choisir quand l’envoyer

Un intervenant peut être interrompu ; il ne devrait pas devoir envoyer sa note pour la conserver.

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

Start/Stop recording → Save locally. Gardez le `draft_id` dans un état propre au compte et à l’appareil. Restore local draft reprend cet ID, puis Play preview permet de vérifier avant un éventuel envoi.

Sur `local_saved` ou `local_restored`, vérifiez `is_saved_locally`, `local_uri` et `duration`. Ne supprimez le brouillon qu’après un choix explicite ou une politique de conservation confirmée séparément.

Si la restauration échoue, affichez `error_code` et conservez l’ID pour le diagnostic ; ne signalez pas un enregistrement vide ou différent comme restauré. Ne faites jamais de téléversement auto lors d’une reconnexion.

L’envoi Bubble crée un fichier audio public. Ne l’utilisez pas pour un enregistrement confidentiel.

Ce qui fonctionne maintenant

Bêta publique. Utilisez les commandes et actions documentées ; testez les formats, les autorisations et le comportement dans votre propre app native. L’aperçu web ne valide pas les résultats sur appareil.

Construire le workflow

Utilisez les actions bêta disponibles ci-dessous et testez le résultat sur vos appareils cibles.

Les exemples utilisent des fiches comme Lesson, Message et Order. Remplacez-les par vos types de données et noms d’éléments. Utilisez vos propres fichiers à la place des adresses d’exemple.

  1. Ajoutez l’enregistreur. document_context = Current User's unique id ; is_active indique si la vue d’enregistrement est ouverte.

  2. Start recording demande le microphone. Pause et Resume gardent la même prise. Stop recording la termine ; attendez recording_ready avant de proposer écoute ou envoi.

  3. Écoutez avec les commandes d’aperçu. Save locally garde un brouillon sur cet appareil ; après local_saved, conservez draft_id pour Restore local draft.

  4. Expliquez que l’envoi crée un fichier public. Renseignez bubble_upload_url avec l’adresse de téléversement de votre app Bubble, en Development ou Live. Lancez Upload to Bubble seulement sur Envoyer ; à upload_succeeded, enregistrez uploaded_file dans la fiche.

Diagramme de flux — pas une capture d’écran d’application · SVG

Configurer une fois

Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins. Choisissez Xodera Audio Recorder Native, copiez sa clé, puis ouvrez Bubble → Plugins → Xodera Audio Recorder Native et collez-la dans licensing_api_key. Enregistrez une fois, puis utilisez les actions ci-dessous. Chaque plugin de chaque projet possède sa propre clé.

Demandez le microphone au démarrage de l’enregistrement. Choisissez comment garder les brouillons. L’envoi Bubble crée un fichier public : utilisez uniquement un audio adapté à ce stockage.

Configurer une fois
  1. Créez ou choisissez votre projet Bubble dans BestPlugins → Dashboard → Plugins.
  2. Choisissez ce plugin et copiez sa clé de projet.
  3. Ouvrez Bubble → Plugins → ce plugin. Collez sa clé de projet dans licensing_api_key et enregistrez.
  4. Ajoutez l’élément, choisissez vos données et construisez le workflow ci-dessous.
  5. Dans le tableau de bord, vérifiez et confirmez l’essai de 7 jours avec carte pour ce plugin. Il coûte ensuite 1,50 USD/mois par projet, développement et production inclus. Annulez avant la fin de l’essai pour éviter le premier débit.
Installation et abonnement

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Enregistrer le résultat dans votre app

Après upload_succeeded, renseignez VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration et mime_type = Recorder's mime_type. draft_id restaure un brouillon sur cet appareil ; ce n’est pas un fichier audio en ligne.

Échec, annulation et reprise

Si le microphone est refusé, expliquez comment l’activer dans les réglages de l’appareil. Cancel recording abandonne la prise non enregistrée ; les brouillons restent. Si l’envoi est interrompu, gardez l’audio local et vérifiez son arrivée avant de renvoyer. Delete saved draft supprime seulement le brouillon choisi.

Fonctions et limites

Enregistrement maximal par défaut : 300 secondes ; configurable 1–3600. Limite de téléchargement par défaut : 10 MiB ; maximum 30 MiB. Délai d'expiration du téléchargement : 60 secondes, sans nouvelle tentative automatique. Les téléchargements Bubble sont publics. Seules vos propres adresses de téléchargement de fichiers *.bubbleapps.io sont prises en charge ; les domaines personnalisés ne le sont pas. Les brouillons locaux ne sont pas un stockage chiffré.

Réglages, actions et résultats

Utilisez ces noms dans Bubble. Les fonctionnalités prévues sont marquées séparément.

Paramètres bêta disponibles

Réglages de l’élément

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

États

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

Événements

recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_error

Actions et paramètres

Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speed
Réglages de l’élément · 10
titletext · Défaut: ""
Valeur exempleLesson 4 — review
Expression Bubble exempleSelected Lesson's name
Texte visible ; vide utilise le texte localisé prévu. Aucun identifiant secret.
max_duration_secondsnumber · Défaut: 300
Valeur exemple300
Expression Bubble exempleVoice Settings' max_seconds
Utilisez la valeur de la fiche courante et les limites ci-dessous.
max_upload_bytesnumber · Défaut: 10485760
Valeur exemple10485760
Expression Bubble exempleVoice Settings' max_upload_bytes
Utilisez la valeur de la fiche courante et les limites ci-dessous.
is_activeyes_no · Défaut: true
Valeur exempleyes
Expression Bubble exempleGuideHost's view_is_active (your yes/no custom state)
yes tant que cette vue est ouverte ; no en la quittant pour arrêter la lecture ou l’action en cours.
disabledyes_no · Défaut: false
Valeur exempleno
Expression Bubble exempleGuideHost's is_busy (your yes/no custom state)
Désactivez l’élément si l’app est occupée ou l’action indisponible.
ui_text_jsontext · Défaut: ""
Valeur exemple{}
Expression Bubble exempleApp Settings' player_labels_json (supported keys only)
JSON facultatif avec les libellés de boutons pris en charge. Laissez vide pour les textes intégrés.
saved_draft_idtext · Défaut: ""
Valeur exemple<returned draft_id>
Expression Bubble exempleSelected VoiceDraft's draft_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
bubble_upload_urltext · Défaut: ""
Valeur exemplehttps://your-app.bubbleapps.io/version-test/fileupload
Expression Bubble exempleApp Settings' selected_bubble_upload_url
Adresse de téléversement de votre app Bubble : /version-test/fileupload pour Development, /fileupload pour Live. Les fichiers envoyés sont publics.
languagetext · Défaut: "auto"
Valeur exempleuk
Expression Bubble exempleCurrent User's preferred_language
Utilisez language=auto pour suivre une langue prise en charge sur l’appareil ou dans le navigateur. Saisissez un code de langue pris en charge pour la choisir explicitement.
document_contexttext · Défaut: ""
Valeur exemple<current-user-id>
Expression Bubble exempleCurrent User's unique id
Valeur stable pour ce compte ou cette fiche. Réutilisez-la pour restaurer ses fichiers ou brouillons.
Actions et paramètres · 15
Start recording

Aucun paramètre d’action

Pause recording

Aucun paramètre d’action

Resume recording

Aucun paramètre d’action

Stop recording

Aucun paramètre d’action

Cancel recording

Aucun paramètre d’action

Save locally

Aucun paramètre d’action

Restore local draft
draft_idtext · Défaut: —
Valeur exemple<returned draft_id>
Expression Bubble exempleSelected VoiceDraft's draft_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Delete saved draft
draft_idtext · Défaut: —
Valeur exemple<returned draft_id>
Expression Bubble exempleSelected VoiceDraft's draft_id
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Upload to Bubble

Aucun paramètre d’action

Cancel upload

Aucun paramètre d’action

Play preview

Aucun paramètre d’action

Pause preview

Aucun paramètre d’action

Stop preview

Aucun paramètre d’action

Seek preview
secondsnumber · Défaut: —
Valeur exemple12
Expression Bubble exempleSelected Comment's seconds
Utilisez la valeur de la fiche courante et les limites ci-dessous.
Set preview speed
ratenumber · Défaut: —
Valeur exemple1.5
Expression Bubble exemplePreview Speed Dropdown's value
Utilisez la valeur de la fiche courante et les limites ci-dessous.
États et événements

États

recorder_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

permission_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

is_recording · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

is_paused · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

duration · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

local_uri · text

Emplacement du fichier sur cet appareil. Sauvegardez ou envoyez-le séparément pour le conserver en ligne.

draft_id · text

Identifiant de cet élément ou de cette action. Gardez-le avec la fiche correspondante. Réutilisez le même identifiant de demande si le résultat est incertain.

is_saved_locally · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

mime_type · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

file_size · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

waveform_peaks_json · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

preview_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

preview_is_playing · yes_no

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

preview_current_time · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

upload_status · text

Résultat actuel de l’action. Attendez l’événement de fin correspondant avant de valider la réussite.

upload_progress · number

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

uploaded_url · text

Valeur actuelle de l’élément choisi. Lisez-la après l’événement correspondant.

uploaded_file · file

Fichier obtenu après upload_succeeded. Enregistrez-le dans votre champ Bubble File.

error_code · text

Information sur l’erreur de la dernière action. Affichez un message utile et proposez la bonne nouvelle tentative.

Événements

recording_started

À cet événement, lisez les états correspondants du même élément.

recording_paused

À cet événement, lisez les états correspondants du même élément.

recording_resumed

À cet événement, lisez les états correspondants du même élément.

recording_stopped

À cet événement, lisez les états correspondants du même élément.

recording_ready

À cet événement, lisez les états correspondants du même élément.

recording_cancelled

À cet événement, lisez les états correspondants du même élément.

recorder_error

À cet événement, lisez les états correspondants du même élément.

local_saved

À cet événement, lisez les états correspondants du même élément.

local_restored

À cet événement, lisez les états correspondants du même élément.

local_deleted

À cet événement, lisez les états correspondants du même élément.

upload_succeeded

À cet événement, lisez les états correspondants du même élément.

upload_failed

À cet événement, lisez les états correspondants du même élément.

upload_cancelled

À cet événement, lisez les états correspondants du même élément.

preview_ready

À cet événement, lisez les états correspondants du même élément.

preview_error

À cet événement, lisez les états correspondants du même élément.

Questions des développeurs

La sauvegarde locale téléverse-t-elle ?

Non. Save locally conserve un brouillon sur l’appareil. Upload to Bubble est distinct et public.

Comment fonctionne l’abonnement ?

Pour Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit et Haptics : installation Bubble gratuite, essai de 7 jours avec carte, puis 1,50 USD par mois, par plugin et projet. Développement et production inclus, sans plafond d’opérations. Les limites de fichier et de fonction restent applicables. Vérifiez facturation et annulation avant confirmation. Les autres plugins ne sont pas ouverts à l’achat.

Guides associés

Pour obtenir de l’aide, indiquez le plugin, l’appareil, l’action essayée et le résultat. Utilisez un exemple sans données personnelles. Ne partagez jamais votre clé ni vos fichiers privés.