
Xodera Plugins · Bubble Native
Xodera Audio Recorder Native
به افراد اجازه دهید یک یادداشت صوتی ضبط کنند، قبل از ارسال گوش دهند و یک پیشنویس محلی نگه دارند. بارگذاری فقط زمانی انجام شود که آنها تصمیم به ارسال ضبط بگیرند.
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.
مستندات بررسیشده 6 نوامبر 2026
مثالهای عملی
قبل از ارسال پیام صوتی غیرمحرمانه گوش کنید
کاربران باید فرصتی داشته باشند تا قبل از تبدیل به پیوست، ضبط را گوش دهند و جایگزین کنند.
`title = the app’s conversation label`؛ `max_duration_seconds` و `max_upload_bytes` را به سیاست پیام خود تنظیم کنید.
Start recording → Stop recording → منتظر `recording_ready` → Play preview. Seek preview و Set preview speed را ارائه دهید. فقط یک Send صریح Upload to Bubble را در نقطه انتهایی بارگذاری داخلی پذیرفتهشده فراخوانی میکند.
فقط در `upload_succeeded`، Message خود را ایجاد کنید و فیلد صوتی آن را به `uploaded_file` تنظیم کنید. پیام توسط خود ضبطکننده ایجاد نمیشود.
در صورت رد دسترسی میکروفن `permission_status` را نشان دهید؛ در صورت شکست بارگذاری، ضبط محلی را نگه دارید. نتیجه یک بارگذاری ناشناخته را قبل از تلاش مجدد بررسی کنید تا Send نتواند پیوستها/پیامهای تکراری ایجاد کند.
بارگذاری Bubble یک فایل صوتی عمومی ایجاد میکند. از این بارگذاری برای ضبطهای محرمانه استفاده نکنید.
تمرین تلفظ بدون بارگذاری فوری
یادگیرندگان میخواهند پاسخ گفتاری خود را با درس مقایسه کنند قبل از تصمیم به ارسال آن.
`title = Current Exercise’s prompt`؛ `max_duration_seconds = the exercise limit`؛ پاسخ تمرین یک رکورد متعلق به برنامه میماند.
ضبط → توقف → Play preview. اجازه دهید یادگیرنده به بخش دلخواه ضبط برود، پیشنمایش را کند کند یا لغو کند و تلاش دیگری را ضبط کند. Save locally فقط زمانی که تصمیم به نگه داشتن پیشنویس بگیرد.
`duration`، `local_uri`، `mime_type` و `draft_id` توصیفکنندهٔ این تلاش هستند. برنامهٔ شما تصمیم میگیرد که آیا بهصورت محلی باقی بماند یا بعداً از طریق جریان بارگذاری انتخابی شما ارسال شود.
در `preview_error`، پیشنویس را حفظ کنید و `error_code` را نشان دهید. تا زمانی که جریان ارسال برنامه موفق نشود، پیشنمایش یا پیشنویس ذخیرهشده را به پاسخی ارسالشده تبدیل نکنید.
بارگذاری Bubble یک فایل صوتی عمومی ایجاد میکند. از این بارگذاری برای ضبطهای محرمانه استفاده نکنید.
یک پیشنویس صوتی محلی را نگه دارید و ارسال را بهصورت صریح کنید
کارگر میدانی ممکن است قبل از اتمام یادداشت قطع شود و نباید فقط برای نگه داشتن آن مجبور به بارگذاری شود.
`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. `draft_id` بازگشتی را در وضعیت دستگاه/حساب خود ذخیره کنید. برای همان شناسه از Restore local draft استفاده کنید، سپس قبل از تصمیمگیری برای بارگذاری Play preview را اعمال کنید.
در `local_saved` یا `local_restored`، `is_saved_locally`، `local_uri` و `duration` را بررسی کنید. پیشنویس ذخیرهشده را فقط پس از انتخاب صریح کاربر یا پس از تأیید جداگانهٔ سیاست نگهداری حذف کنید.
اگر بازیابی شکست خورد، `error_code` را نشان دهید و شناسه را برای تشخیص نگه دارید؛ یک ضبط خالی یا متفاوت را بهعنوان بازیابیشده گزارش ندهید. هرگز auto‑بارگذاری را هنگام اتصال مجدد انجام ندهید.
بارگذاری Bubble یک فایل صوتی عمومی ایجاد میکند. از این بارگذاری برای ضبطهای محرمانه استفاده نکنید.
آنچه اکنون کار میکند
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.
ساخت گردشکار
از اقدامات بتای موجود در زیر استفاده کنید و نتیجه را بر روی دستگاههای هدف خود آزمایش کنید.
این مثالها از رکوردهای برنامهای مانند Lesson، Message و Order استفاده میکنند. آنها را با انواع داده و نامهای عنصر خود جایگزین کنید. آدرسهای رسانهای نمونه باید با فایلهای خود جایگزین شوند.
ضبطکننده را اضافه کنید. document_context = Current User's unique id و is_active را برای تعیین باز بودن نمای ضبط تنظیم کنید.
Start recording برای اجازه میکروفن درخواست میکند. Pause و Resume همان ضبط را حفظ میکنند. Stop recording آن را پایان میدهد؛ پیش از ارائه بازبینی یا بارگذاری، منتظر recording_ready بمانید.
از کنترلهای پیشنمایش برای گوش دادن استفاده کنید. Save locally یک پیشنویس را روی این دستگاه نگه میدارد؛ پس از local_saved، draft_id را برای Restore local draft حفظ کنید.
توضیح دهید که ارسال یک فایل عمومی ایجاد میکند. bubble_upload_url را به آدرس بارگذاری فایل صحیح برنامه Bubble خود تنظیم کنید (Development یا Live). Upload to Bubble را فقط زمانی اجرا کنید که کاربر گزینه ارسال را انتخاب کند؛ در upload_succeeded، uploaded_file را در رکورد خود ذخیره کنید.
یکبار پیکربندی کنید
پروژه برنامه Bubble خود را در BestPlugins → Dashboard → Plugins ایجاد یا انتخاب کنید. Xodera Audio Recorder Native را انتخاب کنید، کلید آن را کپی کنید، سپس Bubble → Plugins → Xodera Audio Recorder Native را باز کنید و در licensing_api_key بچسبانید. یک بار ذخیره کنید؛ سپس از اقدامات زیر استفاده کنید. هر افزونه در هر پروژه کلید مخصوص به خود را دارد.
در زمان شروع ضبط، اجازه میکروفن را درخواست کنید. نحوه ذخیره پیشنویسها توسط برنامه را انتخاب کنید. بارگذاری Bubble یک فایل عمومی ذخیره میکند، بنابراین فقط برای صوتی که مناسب ذخیره عمومی است استفاده کنید.
یکبار پیکربندی کنید
- پروژه برنامه Bubble خود را در BestPlugins → Dashboard → Plugins ایجاد یا انتخاب کنید.
- این افزونه را انتخاب کنید و کلید پروژه آن را کپی کنید.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- عنصر را اضافه کنید، دادههای برنامه خود را انتخاب کنید و گردش کار زیر را بسازید.
- 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.
نصب و اشتراک
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.
نتیجه را در برنامه خود ذخیره کنید
پس از upload_succeeded، VoiceMessage.audio = Recorder's uploaded_file، owner = Current User، duration = Recorder's duration و mime_type = Recorder's mime_type را تنظیم کنید. draft_id یک پیشنویس را روی این دستگاه باز میگرداند؛ این یک فایل صوتی آنلاین نیست.
خطا، لغو و بازیابی
اگر دسترسی میکروفن رد شود، توضیح دهید چگونه در تنظیمات دستگاه آن را فعال کنید. Cancel recording ضبط ذخیرهنشده را حذف میکند؛ پیشنویسهای ذخیرهشده باقی میمانند. اگر بارگذاری قطع شود، ضبط محلی را نگه دارید و بررسی کنید آیا فایل قبل از ارسال مجدد دریافت شده است یا نه. Delete saved draft فقط پیشنویس ذخیرهشده انتخابشده را حذف میکند.
قابلیتها و محدودیتها
حداکثر ضبط پیشفرض: 300 ثانیه؛ قابل تنظیم 1–3600. محدودیت بارگذاری پیشفرض: 10 MiB؛ حداکثر 30 MiB. زمانسنجی بارگذاری: 60 ثانیه، بدون تلاش خودکار مجدد. بارگذاریهای Bubble عمومی هستند. فقط آدرسهای بارگذاری فایل *.bubbleapps.io شما پشتیبانی میشوند؛ دامنههای سفارشی نیستند. پیشنویسهای محلی ذخیرهسازی رمزگذاریشده نیستند.
تنظیمات، اقدامات و نتایج
از این نامها در Bubble استفاده کنید. ویژگیهای برنامهریزیشده بهصورت جداگانه علامتگذاری شدهاند.
تنظیمات بتای موجود
تنظیمات عنصر
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وضعیتها
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رویدادها
recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_errorاقدامات و ورودیهای آنها
Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speedتنظیمات عنصر · 10
titletext · پیشفرض: ""- مقدار مثال
Lesson 4 — review - مثال Bubble عبارت
Selected Lesson's name - متن قابل مشاهده برنامه؛ خالی بودن از نسخه بومیسازیشده داخلی استفاده میکند در صورت پشتیبانی. بدون اعتبارنامه.
max_duration_secondsnumber · پیشفرض: 300- مقدار مثال
300 - مثال Bubble عبارت
Voice Settings' max_seconds - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
max_upload_bytesnumber · پیشفرض: 10485760- مقدار مثال
10485760 - مثال Bubble عبارت
Voice Settings' max_upload_bytes - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
is_activeyes_no · پیشفرض: true- مقدار مثال
yes - مثال Bubble عبارت
GuideHost's view_is_active (your yes/no custom state) - در حالی که این نما باز است، مقدار را به بله تنظیم کنید. هنگام خروج، به نه تنظیم کنید تا پخش یا کار جاری متوقف شود.
disabledyes_no · پیشفرض: false- مقدار مثال
no - مثال Bubble عبارت
GuideHost's is_busy (your yes/no custom state) - عنصر را غیرفعال کنید وقتی برنامه شما مشغول است یا این عمل در دسترس نیست.
ui_text_jsontext · پیشفرض: ""- مقدار مثال
{} - مثال Bubble عبارت
App Settings' player_labels_json (supported keys only) - JSON اختیاری با برچسبهای دکمه پشتیبانیشده. برای استفاده از متن داخلی خالی بگذارید.
saved_draft_idtext · پیشفرض: ""- مقدار مثال
<returned draft_id> - مثال Bubble عبارت
Selected VoiceDraft's draft_id - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
bubble_upload_urltext · پیشفرض: ""- مقدار مثال
https://your-app.bubbleapps.io/version-test/fileupload - مثال Bubble عبارت
App Settings' selected_bubble_upload_url - آدرس بارگذاری فایل برنامهٔ Bubble شما: /version-test/fileupload برای Development، /fileupload برای Live. این بارگذاری فایلهای عمومی ایجاد میکند.
languagetext · پیشفرض: "auto"- مقدار مثال
uk - مثال Bubble عبارت
Current User's preferred_language - language=auto را تنظیم کنید تا زبان دستگاه یا مرورگر پشتیبانیشده را دنبال کند. برای انتخاب صریح، کد زبان پشتیبانیشده را وارد کنید.
document_contexttext · پیشفرض: ""- مقدار مثال
<current-user-id> - مثال Bubble عبارت
Current User's unique id - مقدار ثابت برای این حساب یا رکورد. هنگام بازگردانی فایلها یا پیشنویسهای ذخیرهشده آن، از همان مقدار استفاده کنید.
اقدامات و ورودیهای آنها · 15
Start recording
پارامترهای اقدام وجود ندارد
Pause recording
پارامترهای اقدام وجود ندارد
Resume recording
پارامترهای اقدام وجود ندارد
Stop recording
پارامترهای اقدام وجود ندارد
Cancel recording
پارامترهای اقدام وجود ندارد
Save locally
پارامترهای اقدام وجود ندارد
Restore local draft
draft_idtext · پیشفرض: —- مقدار مثال
<returned draft_id> - مثال Bubble عبارت
Selected VoiceDraft's draft_id - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Delete saved draft
draft_idtext · پیشفرض: —- مقدار مثال
<returned draft_id> - مثال Bubble عبارت
Selected VoiceDraft's draft_id - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Upload to Bubble
پارامترهای اقدام وجود ندارد
Cancel upload
پارامترهای اقدام وجود ندارد
Play preview
پارامترهای اقدام وجود ندارد
Pause preview
پارامترهای اقدام وجود ندارد
Stop preview
پارامترهای اقدام وجود ندارد
Seek preview
secondsnumber · پیشفرض: —- مقدار مثال
12 - مثال Bubble عبارت
Selected Comment's seconds - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
Set preview speed
ratenumber · پیشفرض: —- مقدار مثال
1.5 - مثال Bubble عبارت
Preview Speed Dropdown's value - از مقدار رکورد تجاری فعلی استفاده کنید؛ آن را نسبت به محدودیتهای زیر اعتبارسنجی کنید.
وضعیتها و رویدادها
وضعیتها
recorder_status · textنتیجه فعلی این عمل. قبل از ذخیره موفقیت، از رویداد تکمیل مطابقتدار استفاده کنید.
permission_status · textنتیجه فعلی این عمل. قبل از ذخیره موفقیت، از رویداد تکمیل مطابقتدار استفاده کنید.
is_recording · yes_noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
is_paused · yes_noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
duration · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
local_uri · textموقعیت فایل روی این دستگاه. اگر باید آنلاین نگه داشته شود، فایل را جداگانه ذخیره یا بارگذاری کنید.
draft_id · textشناسه برای این مورد یا عمل. آن را همراه با رکورد برنامهٔ مرتبط نگه دارید. هنگام تلاش مجدد برای نتیجهٔ نامشخص، از همان شناسهٔ درخواست استفاده کنید.
is_saved_locally · yes_noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
mime_type · textمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
file_size · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
waveform_peaks_json · textمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
preview_status · textنتیجه فعلی این عمل. قبل از ذخیره موفقیت، از رویداد تکمیل مطابقتدار استفاده کنید.
preview_is_playing · yes_noمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
preview_current_time · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
upload_status · textنتیجه فعلی این عمل. قبل از ذخیره موفقیت، از رویداد تکمیل مطابقتدار استفاده کنید.
upload_progress · numberمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
uploaded_url · textمقدار فعلی مورد انتخابشده. پس از رویداد مرتبط آن را بخوانید.
uploaded_file · fileفایل پس از upload_succeeded بازگردانده شد. آن را در فیلد فایل Bubble خود ذخیره کنید.
error_code · textاطلاعات خطا برای آخرین عمل. پیام مفید نشان دهید و گزینهٔ تلاش مجدد مرتبط را ارائه دهید.
رویدادها
recording_startedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recording_pausedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recording_resumedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recording_stoppedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recording_readyهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recording_cancelledهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
recorder_errorهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
local_savedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
local_restoredهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
local_deletedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
upload_succeededهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
upload_failedهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
upload_cancelledهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
preview_readyهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
preview_errorهنگامی که این رویداد رخ میدهد، وضعیتهای مرتبط را از همان عنصر بخوانید.
سؤالاتی که توسعهدهندگان میپرسند
آیا ذخیره محلی ضبط را بارگذاری میکند؟
خیر. Save locally یک پیشنویس متعلق به دستگاه را نگه میدارد. Upload to Bubble یک عملیات عمومی جداگانه و صریح است.
اشتراک چگونه کار میکند؟
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.
راهنماهای مرتبط
برای دریافت کمک، به ما بگویید از کدام افزونه و دستگاه استفاده میکنید، عملی که امتحان کردید و چه اتفاقی افتاد. از مثالی بدون دادههای شخصی استفاده کنید. هرگز کلید یا فایلهای خصوصی خود را به اشتراک نگذارید.