
Xodera Plugins · Bubble Native
Xodera Audio Recorder Native
Cho phép người dùng ghi chú âm thanh, nghe trước khi gửi và giữ bản nháp cục bộ. Chỉ tải lên khi họ chọn gửi bản ghi.
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.
Tài liệu được rà soát ngày 6 tháng mười một năm 2026
Ví dụ thực tế
Nghe trước khi gửi tin nhắn thoại không bí mật
Người dùng cần cơ hội nghe và thay thế bản ghi trước khi nó trở thành tệp đính kèm.
`title = the app’s conversation label`; đặt `max_duration_seconds` và `max_upload_bytes` cho chính sách tin nhắn của bạn.
Start recording → Stop recording → chờ `recording_ready` → Play preview. Cung cấp Seek preview và Set preview speed. Chỉ khi người dùng nhấn Gửi rõ ràng mới kích hoạt Upload to Bubble trên điểm cuối tải lên đã được chấp nhận của chính ứng dụng của bạn.
Chỉ trên `upload_succeeded`, tạo Message của bạn và đặt trường âm thanh của nó thành `uploaded_file`. Tin nhắn không được tạo bởi bộ ghi âm.
Khi từ chối microphone, hiển thị `permission_status`; khi tải lên thất bại, giữ bản ghi cục bộ. Kiểm tra kết quả của việc tải lên không xác định trước khi thử lại để Gửi không tạo bản sao đính kèm/tin nhắn.
Tải lên Bubble tạo tệp âm thanh công cộng. Không sử dụng tải lên này cho bản ghi bí mật.
Luyện phát âm mà không tải lên ngay lập tức
Người học muốn so sánh phản hồi nói của mình với bài học trước khi quyết định gửi.
`title = Current Exercise’s prompt`; `max_duration_seconds = the exercise limit`; câu trả lời bài tập vẫn là bản ghi thuộc sở hữu của ứng dụng.
Ghi → Dừng → Play preview. Cho người học tua, làm chậm bản xem trước hoặc hủy và ghi lại lần thử khác. Save locally chỉ khi họ chọn giữ bản nháp.
`duration`, `local_uri`, `mime_type` và `draft_id` mô tả lần thử. Ứng dụng của bạn quyết định nó giữ cục bộ hay sau này được gửi qua quy trình tải lên bạn chọn.
Khi `preview_error`, giữ bản nháp và hiển thị `error_code`. Không chuyển bản xem trước hoặc bản nháp đã lưu thành Câu trả lời đã gửi cho đến khi quy trình gửi của ứng dụng thành công.
Tải lên Bubble tạo tệp âm thanh công cộng. Không sử dụng tải lên này cho bản ghi bí mật.
Giữ bản nháp giọng nói cục bộ và làm cho Gửi trở nên rõ ràng
Nhân viên hiện trường có thể bị gián đoạn trước khi hoàn thành ghi chú và không nên phải tải lên chỉ để lưu lại.
`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. Lưu `draft_id` trả về vào trạng thái do ứng dụng quản lý, được giới hạn theo đúng thiết bị và tài khoản. Sử dụng Restore local draft cho cùng ID đó, sau đó Play preview trước khi quyết định tải lên.
Khi `local_saved` hoặc `local_restored`, kiểm tra `is_saved_locally`, `local_uri` và `duration`. Chỉ xóa bản nháp đã lưu sau khi người dùng chọn rõ ràng hoặc sau chính sách giữ lại đã được xác nhận riêng.
Nếu khôi phục thất bại, hiển thị `error_code` và giữ ID để chẩn đoán; không báo cáo bản ghi trống hoặc khác như đã khôi phục. Không bao giờ auto-tải lên khi kết nối lại.
Tải lên Bubble tạo tệp âm thanh công cộng. Không sử dụng tải lên này cho bản ghi bí mật.
Những gì hiện đang hoạt động
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.
Xây dựng quy trình làm việc
Sử dụng các hành động beta có sẵn bên dưới và kiểm tra kết quả trên thiết bị mục tiêu của bạn.
Các ví dụ này sử dụng các bản ghi ứng dụng như Lesson, Message và Order. Hãy thay thế chúng bằng các kiểu dữ liệu và tên phần tử của bạn. Các địa chỉ phương tiện mẫu phải được thay thế bằng các tệp của bạn.
Thêm bộ ghi âm. Đặt document_context = Current User's unique id; đặt is_active theo việc chế độ xem ghi âm có đang mở hay không.
Start recording yêu cầu quyền microphone. Pause và Resume giữ nguyên bản ghi. Stop recording kết thúc nó; chờ recording_ready trước khi đề nghị xem lại hoặc tải lên.
Sử dụng các điều khiển xem trước để nghe. Save locally giữ bản nháp trên thiết bị này; sau local_saved, giữ draft_id cho Restore local draft.
Giải thích rằng việc gửi sẽ tạo tệp công cộng. Đặt bubble_upload_url thành địa chỉ tải lên tệp đúng của ứng dụng Bubble của bạn, là Development hoặc Live. Chạy Upload to Bubble chỉ khi người dùng chọn Gửi; trên upload_succeeded, lưu uploaded_file trong bản ghi của bạn.
Cấu hình một lần
Tạo hoặc chọn dự án ứng dụng Bubble của bạn trong BestPlugins → Dashboard → Plugins. Chọn Xodera Audio Recorder Native, sao chép khóa của nó, sau đó mở Bubble → Plugins → Xodera Audio Recorder Native và dán vào licensing_api_key. Lưu một lần; sau đó sử dụng các hành động bên dưới. Mỗi plugin trong mỗi dự án có khóa riêng của nó.
Yêu cầu quyền microphone khi người dùng bắt đầu ghi âm. Chọn cách ứng dụng sẽ lưu bản nháp. Tải lên Bubble lưu trữ tệp công cộng, vì vậy chỉ dùng cho âm thanh phù hợp với lưu trữ công cộng.
Cấu hình một lần
- Tạo hoặc chọn dự án ứng dụng Bubble của bạn tại BestPlugins → Dashboard → Plugins.
- Chọn plugin này và sao chép khóa dự án của nó.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Thêm phần tử, chọn dữ liệu ứng dụng của bạn và xây dựng quy trình làm việc bên dưới.
- 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.
Cài đặt và đăng ký
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.
Lưu kết quả vào ứng dụng của bạn
Sau upload_succeeded, đặt VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration và mime_type = Recorder's mime_type. draft_id khôi phục bản nháp trên thiết bị này; nó không phải là tệp âm thanh trực tuyến.
Lỗi, hủy và khôi phục
Nếu quyền microphone bị từ chối, giải thích cách bật lại trong cài đặt thiết bị. Cancel recording hủy bỏ bản ghi chưa lưu; các bản nháp đã lưu vẫn còn. Nếu quá trình tải lên bị gián đoạn, giữ bản ghi cục bộ và kiểm tra xem tệp đã đến chưa trước khi gửi lại. Delete saved draft chỉ xóa bản nháp đã lưu được chọn.
Khả năng và giới hạn
Thời gian ghi âm tối đa mặc định: 300 giây; có thể cấu hình 1–3600. Giới hạn tải lên mặc định: 10 MiB; tối đa 30 MiB. Thời gian chờ tải lên: 60 giây, không tự động thử lại. Tải lên Bubble là công cộng. Chỉ hỗ trợ địa chỉ tải lên tệp *.bubbleapps.io của bạn; không hỗ trợ miền tùy chỉnh. Các bản nháp cục bộ không phải là lưu trữ được mã hoá.
Cài đặt, hành động và kết quả
Sử dụng các tên này trong Bubble. Các tính năng dự kiến được đánh dấu riêng.
Cài đặt beta khả dụng
Cài đặt phần tử
title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · textTrạng thái
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 · textSự kiện
recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_errorHành động và đầu vào của chúng
Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speedCài đặt phần tử · 10
titletext · Mặc định: ""- Giá trị ví dụ
Lesson 4 — review - Ví dụ biểu thức Bubble
Selected Lesson's name - Văn bản hiển thị trong ứng dụng; để trống sẽ dùng văn bản bản địa hóa tích hợp khi được hỗ trợ. Không nhập thông tin xác thực.
max_duration_secondsnumber · Mặc định: 300- Giá trị ví dụ
300 - Ví dụ biểu thức Bubble
Voice Settings' max_seconds - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
max_upload_bytesnumber · Mặc định: 10485760- Giá trị ví dụ
10485760 - Ví dụ biểu thức Bubble
Voice Settings' max_upload_bytes - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
is_activeyes_no · Mặc định: true- Giá trị ví dụ
yes - Ví dụ biểu thức Bubble
GuideHost's view_is_active (your yes/no custom state) - Đặt yes khi chế độ xem này đang mở. Đặt no khi rời khỏi, để có thể dừng việc phát hoặc công việc hiện tại.
disabledyes_no · Mặc định: false- Giá trị ví dụ
no - Ví dụ biểu thức Bubble
GuideHost's is_busy (your yes/no custom state) - Vô hiệu hoá phần tử khi ứng dụng của bạn đang bận hoặc hành động này không khả dụng.
ui_text_jsontext · Mặc định: ""- Giá trị ví dụ
{} - Ví dụ biểu thức Bubble
App Settings' player_labels_json (supported keys only) - JSON tùy chọn với các nhãn nút được hỗ trợ. Để trống để sử dụng văn bản tích hợp.
saved_draft_idtext · Mặc định: ""- Giá trị ví dụ
<returned draft_id> - Ví dụ biểu thức Bubble
Selected VoiceDraft's draft_id - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
bubble_upload_urltext · Mặc định: ""- Giá trị ví dụ
https://your-app.bubbleapps.io/version-test/fileupload - Ví dụ biểu thức Bubble
App Settings' selected_bubble_upload_url - Địa chỉ tải lên tệp Bubble của ứng dụng của bạn: /version-test/fileupload cho Development, /fileupload cho Live. Tải lên này tạo tệp công cộng.
languagetext · Mặc định: "auto"- Giá trị ví dụ
uk - Ví dụ biểu thức Bubble
Current User's preferred_language - Đặt language=auto để theo dõi ngôn ngữ thiết bị hoặc trình duyệt được hỗ trợ. Nhập mã ngôn ngữ hỗ trợ để chọn một cách rõ ràng.
document_contexttext · Mặc định: ""- Giá trị ví dụ
<current-user-id> - Ví dụ biểu thức Bubble
Current User's unique id - Giá trị ổn định cho tài khoản hoặc bản ghi này. Sử dụng cùng giá trị khi khôi phục các tệp hoặc bản nháp đã lưu của nó.
Hành động và đầu vào của chúng · 15
Start recording
Không có tham số hành động
Pause recording
Không có tham số hành động
Resume recording
Không có tham số hành động
Stop recording
Không có tham số hành động
Cancel recording
Không có tham số hành động
Save locally
Không có tham số hành động
Restore local draft
draft_idtext · Mặc định: —- Giá trị ví dụ
<returned draft_id> - Ví dụ biểu thức Bubble
Selected VoiceDraft's draft_id - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Delete saved draft
draft_idtext · Mặc định: —- Giá trị ví dụ
<returned draft_id> - Ví dụ biểu thức Bubble
Selected VoiceDraft's draft_id - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Upload to Bubble
Không có tham số hành động
Cancel upload
Không có tham số hành động
Play preview
Không có tham số hành động
Pause preview
Không có tham số hành động
Stop preview
Không có tham số hành động
Seek preview
secondsnumber · Mặc định: —- Giá trị ví dụ
12 - Ví dụ biểu thức Bubble
Selected Comment's seconds - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Set preview speed
ratenumber · Mặc định: —- Giá trị ví dụ
1.5 - Ví dụ biểu thức Bubble
Preview Speed Dropdown's value - Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Trạng thái và sự kiện
Trạng thái
recorder_status · textKết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.
permission_status · textKết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.
is_recording · yes_noGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
is_paused · yes_noGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
duration · numberGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
local_uri · textVị trí tệp trên thiết bị này. Lưu hoặc tải lên tệp riêng biệt nếu cần giữ trực tuyến.
draft_id · textĐịnh danh cho mục hoặc hành động này. Giữ nó cùng bản ghi ứng dụng tương ứng. Sử dụng cùng một định danh yêu cầu khi thử lại kết quả không chắc chắn.
is_saved_locally · yes_noGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
mime_type · textGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
file_size · numberGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
waveform_peaks_json · textGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
preview_status · textKết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.
preview_is_playing · yes_noGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
preview_current_time · numberGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
upload_status · textKết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.
upload_progress · numberGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
uploaded_url · textGiá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.
uploaded_file · fileTệp được trả lại sau upload_succeeded. Lưu nó vào trường File Bubble của bạn.
error_code · textThông tin lỗi cho hành động cuối cùng. Hiển thị thông báo hữu ích và đề xuất thử lại liên quan.
Sự kiện
recording_startedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recording_pausedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recording_resumedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recording_stoppedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recording_readyKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recording_cancelledKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
recorder_errorKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
local_savedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
local_restoredKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
local_deletedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
upload_succeededKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
upload_failedKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
upload_cancelledKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
preview_readyKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
preview_errorKhi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.
Câu hỏi mà nhà phát triển đặt ra
Lưu cục bộ có tải lên bản ghi không?
Không. Save locally giữ bản nháp trên thiết bị sở hữu. Upload to Bubble là một thao tác công cộng riêng biệt rõ ràng.
Đăng ký hoạt động như thế nào?
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.
Hướng dẫn liên quan
Để được trợ giúp, cho chúng tôi biết plugin và thiết bị bạn đang sử dụng, hành động bạn đã thử và những gì đã xảy ra. Sử dụng ví dụ không có dữ liệu cá nhân. Không bao giờ chia sẻ khóa hoặc tệp riêng của bạn.