Интерфейс Audio Recorder.
Интерфейс Audio Recorder.
← Все нативные руководства

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`.

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. Замените их своими типами данных и именами элементов. Примерные медиа‑адреса необходимо заменить вашими файлами.

  1. Добавьте рекордер. Установите document_context = Current User's unique id и is_active в зависимости от того, открыт ли вид записи.

  2. Start recording запрашивает разрешение на микрофон. Pause и Resume сохраняют тот же дубль. Stop recording завершает его; подождите recording_ready перед предложением просмотра или загрузки.

  3. Используйте элементы управления предварительным просмотром для прослушивания. Save locally сохраняет черновик на этом устройстве; после local_saved сохраните draft_id для Restore local draft.

  4. Объясните, что отправка создаёт публичный файл. Установите 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 загрузка сохраняет публичный файл, поэтому используйте её только для аудио, подходящего для публичного хранения.

Настройте один раз
  1. Создайте или выберите ваш проект Bubble в BestPlugins → Dashboard → Plugins.
  2. Выберите этот плагин и скопируйте его ключ проекта.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Добавьте элемент, выберите данные вашего приложения и постройте рабочий процесс ниже.
  5. 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 File.

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.

Связанные руководства

Для получения помощи укажите, какой плагин и устройство вы используете, какое действие пытались выполнить и что произошло. Приведите пример без персональных данных. Никогда не делитесь своим ключом или личными файлами.