
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.
文档审阅日期:2026年11月6日
实用示例
在发送非机密语音消息之前先聆听
用户需要有机会先听取并替换录音,才能将其变为附件。
`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`.
Start recording → Stop recording → Save locally。将返回的 `draft_id` 存储在您设备/账户范围的状态中。使用 Restore local draft 关联相同 ID,然后在决定是否上传前使用 Play preview。
在 `local_saved` 或 `local_restored` 时,检查 `is_saved_locally`、`local_uri` 和 `duration`。仅在用户明确选择或在另行确认的保留政策后删除已保存的草稿。
如果恢复失败,显示 `error_code` 并保留 ID 以供诊断;不要将空的或不同的录音报告为已恢复。切勿在重新连接时自动(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 保存到您的记录中。
一次性配置
在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。选择 Xodera Audio Recorder Native,复制其密钥,然后打开 Bubble → Plugins → Xodera Audio Recorder Native 并粘贴到 licensing_api_key。保存一次;随后使用以下操作。每个项目中的每个插件都有其自己的密钥。
用户开始录音时请求麦克风权限。选择应用保存草稿的方式。Bubble 上传会存储公共文件,请仅用于适合公开存储的音频。
一次性配置
- 在 BestPlugins → Dashboard → Plugins 中创建或选择您的 Bubble 应用项目。
- 选择此插件并复制其项目密钥。
- 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.
相关指南
如需帮助,请告知我们您使用的插件和设备、尝试的操作以及发生的情况。请使用不含个人数据的示例。切勿分享您的密钥或私有文件。