
Xodera Plugins · Bubble Native
Xodera Audio Recorder Native
Permiteți utilizatorilor să înregistreze o notă vocală, să o asculte înainte de trimitere și să păstreze o ciornă locală. Încărcați numai când aleg să trimită înregistrarea.
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.
Documentație revizuită 6 noiembrie 2026
Exemple practice
Ascultați înainte de a trimite un mesaj vocal neconfidențial
Utilizatorii trebuie să aibă posibilitatea să asculte și să înlocuiască o înregistrare înainte să devină un atașament.
`title = the app’s conversation label`; setați `max_duration_seconds` și `max_upload_bytes` la politica dvs. de mesaje.
Start recording → Stop recording → așteptați `recording_ready` → Play preview. Oferiți Seek preview și Set preview speed. Doar un Trimite explicit invocă Upload to Bubble pe endpoint‑ul de încărcare acceptat al aplicației proprii.
Doar pe `upload_succeeded`, creați Message și setați câmpul audio la `uploaded_file`. Mesajul nu este creat de înregistratorul în sine.
La refuzul microfonului afișați `permission_status`; la eșecul încărcării păstrați înregistrarea locală. Verificați rezultatul unei încărcări necunoscute înainte de a reîncerca, astfel încât Trimite să nu poată crea atașamente/mesaje duplicate.
Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.
Exercițiu de pronunție fără încărcare imediată
Învățăceii doresc să compare răspunsul lor vorbit cu lecția înainte de a decide să îl trimită.
`title = Current Exercise’s prompt`; `max_duration_seconds = the exercise limit`; un răspuns la exercițiu rămâne un înregistrare deținută de aplicație.
Înregistrează → Oprește → Play preview. Permiteți învățăcelului să caute, să încetinească previzualizarea sau să anuleze și să înregistreze o altă încercare. Save locally numai când aleg să păstreze ciornă.
`duration`, `local_uri`, `mime_type` și `draft_id` descriu încercarea. Aplicația dvs. decide dacă rămâne locală sau este trimisă ulterior prin fluxul de încărcare ales.
Pe `preview_error`, păstrați ciorna și afișați `error_code`. Nu transformați o previzualizare sau o ciornă salvată într-un Răspuns trimis până când fluxul de trimitere al aplicației reușește.
Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.
Păstrați o ciornă vocală locală și faceți Trimite explicit
Un lucrător de teren poate fi întrerupt înainte de a finaliza o notă și nu ar trebui să fie nevoit să o încarce doar pentru a o păstra.
`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. Stocați `draft_id` returnat în dispozitivul/contul dvs. local. Utilizați Restore local draft pentru același ID, apoi Play preview înainte de a decide dacă încărcați.
Pe `local_saved` sau `local_restored`, inspectați `is_saved_locally`, `local_uri` și `duration`. Ștergeți ciorna salvată numai după o alegere explicită a utilizatorului sau după o politică de păstrare confirmată separat.
Dacă restaurarea eșuează, afișați `error_code` și păstrați ID‑ul pentru diagnostic; nu raportați o înregistrare goală sau diferită ca restaurată. Nu efectuați niciodată încărcarea auto la reconectare.
Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.
Ce funcționează acum
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.
Construiește fluxul de lucru
Utilizați acțiunile beta disponibile mai jos și testați rezultatul pe dispozitivele țintă.
Aceste exemple folosesc înregistrări de aplicație precum Lesson, Message și Order. Înlocuiți-le cu propriile tipuri de date și nume de elemente. Adresele media de exemplu trebuie înlocuite cu fișierele dumneavoastră.
Adăugați înregistratorul. Setați document_context = Current User's unique id și is_active pentru a indica dacă vizualizarea înregistrării este deschisă.
Start recording solicită permisiunea pentru microfon. Pause și Resume păstrează aceeași înregistrare. Stop recording o finalizează; așteptați recording_ready înainte de a oferi revizuirea sau încărcarea.
Folosiți controalele de previzualizare pentru a asculta. Save locally păstrează o ciornă pe acest dispozitiv; după local_saved, rețineți draft_id pentru Restore local draft.
Explicați că trimiterea creează un fișier public. Setați bubble_upload_url la adresa corectă de încărcare a fișierelor Bubble a aplicației dvs., Development sau Live. Rulați Upload to Bubble numai când utilizatorul alege Trimitere; la upload_succeeded, salvați uploaded_file în înregistrarea dvs.
Configurează o singură dată
Creați sau alegeți proiectul de aplicație Bubble în BestPlugins → Dashboard → Plugins. Alegeți Xodera Audio Recorder Native, copiați cheia acestuia, apoi deschideți Bubble → Plugins → Xodera Audio Recorder Native și inserați-o în licensing_api_key. Salvați o singură dată; apoi utilizați acțiunile de mai jos. Fiecare plugin din fiecare proiect are propria cheie.
Cereți permisiunea pentru microfon când utilizatorul începe înregistrarea. Alegeți cum va salva aplicația ciornele. Încărcarea Bubble stochează un fișier public, așa că folosiți-l numai pentru audio adecvat stocării publice.
Configurează o singură dată
- Creați sau alegeți proiectul de aplicație Bubble la BestPlugins → Dashboard → Plugins.
- Selectați acest plugin și copiați cheia proiectului.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Adăugați elementul, alegeți datele aplicației și construiți fluxul de lucru de mai jos.
- 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.
Instalare și abonament
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.
Salvează rezultatul în aplicația ta
După upload_succeeded, setați VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration și mime_type = Recorder's mime_type. draft_id restaurează o ciornă pe acest dispozitiv; nu este un fișier audio online.
Eșec, anulare și recuperare
Dacă accesul la microfon este refuzat, explicați cum să îl activați în setările dispozitivului. Cancel recording elimină înregistrarea nesalvată; ciornele salvate rămân. Dacă o încărcare este întreruptă, păstrați înregistrarea locală și verificați dacă fișierul a sosit înainte de a-l trimite din nou. Delete saved draft elimină numai ciorna salvată selectată.
Capacități și limite
Înregistrare maximă implicită: 300 secunde; configurabil 1–3600. Limită implicită de încărcare: 10 MiB; maxim 30 MiB. Timp limită de încărcare: 60 secunde, fără reîncercare automată. Încărcările Bubble sunt publice. Sunt acceptate doar adresele de încărcare de fișiere *.bubbleapps.io proprii; domeniile personalizate nu sunt suportate. Ciornele locale nu sunt stocare criptată.
Setări, acțiuni și rezultate
Utilizați aceste nume în Bubble. Funcționalitățile planificate sunt marcate separat.
Setări beta disponibile
Setări element
title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · textStări
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 · textEvenimente
recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_errorAcțiuni și intrările lor
Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speedSetări element · 10
titletext · Implicit: ""- Valoare exemplu
Lesson 4 — review - Exemplu Bubble expresie
Selected Lesson's name - Text vizibil al aplicației; lăsat gol se folosește copia localizată încorporată acolo unde este suportată. Fără acreditări.
max_duration_secondsnumber · Implicit: 300- Valoare exemplu
300 - Exemplu Bubble expresie
Voice Settings' max_seconds - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
max_upload_bytesnumber · Implicit: 10485760- Valoare exemplu
10485760 - Exemplu Bubble expresie
Voice Settings' max_upload_bytes - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
is_activeyes_no · Implicit: true- Valoare exemplu
yes - Exemplu Bubble expresie
GuideHost's view_is_active (your yes/no custom state) - Setați da în timp ce această vizualizare este deschisă. Setați nu la părăsire, pentru ca redarea sau lucrarea curentă să se oprească.
disabledyes_no · Implicit: false- Valoare exemplu
no - Exemplu Bubble expresie
GuideHost's is_busy (your yes/no custom state) - Dezactivați elementul în timp ce aplicația este ocupată sau această acțiune nu este disponibilă.
ui_text_jsontext · Implicit: ""- Valoare exemplu
{} - Exemplu Bubble expresie
App Settings' player_labels_json (supported keys only) - JSON opțional cu etichete de buton acceptate. Lăsați gol pentru a utiliza textul încorporat.
saved_draft_idtext · Implicit: ""- Valoare exemplu
<returned draft_id> - Exemplu Bubble expresie
Selected VoiceDraft's draft_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
bubble_upload_urltext · Implicit: ""- Valoare exemplu
https://your-app.bubbleapps.io/version-test/fileupload - Exemplu Bubble expresie
App Settings' selected_bubble_upload_url - Adresa proprie de încărcare fișiere a aplicației Bubble: /version-test/fileupload pentru Development, /fileupload pentru Live. Această încărcare creează fișiere publice.
languagetext · Implicit: "auto"- Valoare exemplu
uk - Exemplu Bubble expresie
Current User's preferred_language - Setați language=auto să urmeze limba unui dispozitiv sau a unui browser acceptat. Introduceți un cod de limbă acceptat pentru a o selecta explicit.
document_contexttext · Implicit: ""- Valoare exemplu
<current-user-id> - Exemplu Bubble expresie
Current User's unique id - Valoare stabilă pentru acest cont sau înregistrare. Folosiți aceeași valoare când restaurați fișierele sau ciornele salvate.
Acțiuni și intrările lor · 15
Start recording
Niciun parametru de acțiune
Pause recording
Niciun parametru de acțiune
Resume recording
Niciun parametru de acțiune
Stop recording
Niciun parametru de acțiune
Cancel recording
Niciun parametru de acțiune
Save locally
Niciun parametru de acțiune
Restore local draft
draft_idtext · Implicit: —- Valoare exemplu
<returned draft_id> - Exemplu Bubble expresie
Selected VoiceDraft's draft_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Delete saved draft
draft_idtext · Implicit: —- Valoare exemplu
<returned draft_id> - Exemplu Bubble expresie
Selected VoiceDraft's draft_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Upload to Bubble
Niciun parametru de acțiune
Cancel upload
Niciun parametru de acțiune
Play preview
Niciun parametru de acțiune
Pause preview
Niciun parametru de acțiune
Stop preview
Niciun parametru de acțiune
Seek preview
secondsnumber · Implicit: —- Valoare exemplu
12 - Exemplu Bubble expresie
Selected Comment's seconds - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Set preview speed
ratenumber · Implicit: —- Valoare exemplu
1.5 - Exemplu Bubble expresie
Preview Speed Dropdown's value - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Stări și evenimente
Stări
recorder_status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
permission_status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
is_recording · yes_noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
is_paused · yes_noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
duration · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
local_uri · textLocația fișierului pe acest dispozitiv. Salvați sau încărcați fișierul separat dacă trebuie să fie păstrat online.
draft_id · textIdentificator pentru acest element sau acțiune. Păstrați-l împreună cu înregistrarea corespunzătoare a aplicației. Utilizați același identificator de cerere când reîncercați un rezultat incert.
is_saved_locally · yes_noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
mime_type · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
file_size · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
waveform_peaks_json · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
preview_status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
preview_is_playing · yes_noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
preview_current_time · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
upload_status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
upload_progress · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
uploaded_url · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
uploaded_file · fileFișier returnat după upload_succeeded. Salvați-l în câmpul Fișier Bubble.
error_code · textInformații despre eroarea ultimei acțiuni. Afișați un mesaj util și oferiți o reîncercare relevantă.
Evenimente
recording_startedCând apare acest eveniment, citiți stările aferente din același element.
recording_pausedCând apare acest eveniment, citiți stările aferente din același element.
recording_resumedCând apare acest eveniment, citiți stările aferente din același element.
recording_stoppedCând apare acest eveniment, citiți stările aferente din același element.
recording_readyCând apare acest eveniment, citiți stările aferente din același element.
recording_cancelledCând apare acest eveniment, citiți stările aferente din același element.
recorder_errorCând apare acest eveniment, citiți stările aferente din același element.
local_savedCând apare acest eveniment, citiți stările aferente din același element.
local_restoredCând apare acest eveniment, citiți stările aferente din același element.
local_deletedCând apare acest eveniment, citiți stările aferente din același element.
upload_succeededCând apare acest eveniment, citiți stările aferente din același element.
upload_failedCând apare acest eveniment, citiți stările aferente din același element.
upload_cancelledCând apare acest eveniment, citiți stările aferente din același element.
preview_readyCând apare acest eveniment, citiți stările aferente din același element.
preview_errorCând apare acest eveniment, citiți stările aferente din același element.
Întrebări pe care le pun dezvoltatorii
Salvarea locală încarcă înregistrarea?
Nu. Save locally păstrează o ciornă pe dispozitivul deținut. Upload to Bubble este o operație publică separată și explicită.
Cum funcționează abonamentul?
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.
Ghiduri conexe
Pentru ajutor, spuneți-ne ce plugin și dispozitiv utilizați, acțiunea pe care ați încercat-o și ce s-a întâmplat. Folosiți un exemplu fără date personale. Nu divulgați niciodată cheia sau fișierele private.