
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. فقط الإرسال الصريح يستدعي Upload to Bubble على نقطة تحميل التطبيق الخاصة المقبولة.
فقط عند `upload_succeeded`، أنشئ Message الخاص بك واضبط حقل الصوت إلى `uploaded_file`. الرسالة لا يتم إنشاؤها بواسطة المسجل نفسه.
عند رفض الميكروفون أظهر `permission_status`؛ عند فشل التحميل احتفظ بالتسجيل المحلي. تحقق من نتيجة تحميل غير معروف قبل إعادة المحاولة حتى لا يتمكن الإرسال من إنشاء مرفقات/رسائل مكررة.
إن تحميل 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`.
ابدأ/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 يطلب إذن الميكروفون. الإيقاف المؤقت والاستئناف يحافظان على نفس التسجيل. 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 upload يخزن ملفًا عامًا، لذا استخدمه فقط للصوت المناسب للتخزين العام.
قم بالإعداد مرة واحدة
- أنشئ أو اختر مشروع تطبيق 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.
الأدلة ذات الصلة
للحصول على المساعدة، أخبرنا بأي إضافة وجهاز تستخدمهما، الإجراء الذي جربته وما حدث. استخدم مثالًا بدون بيانات شخصية. لا تشارك مفتاحك أو ملفاتك الخاصة أبدًا.