
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 สำหรับ 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 ในบันทึกของคุณ.
ตั้งค่าเพียงครั้งเดียว
สร้างหรือเลือกโครงการแอป 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 expression
Selected Lesson's name - ข้อความที่มองเห็นในแอป; เว้นว่างจะใช้ข้อความที่แปลไว้ในระบบเมื่อรองรับ ไม่ต้องใช้ข้อมูลประจำตัว
max_duration_secondsnumber · ค่าเริ่มต้น: 300- ค่าตัวอย่าง
300 - ตัวอย่าง Bubble expression
Voice Settings' max_seconds - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
max_upload_bytesnumber · ค่าเริ่มต้น: 10485760- ค่าตัวอย่าง
10485760 - ตัวอย่าง Bubble expression
Voice Settings' max_upload_bytes - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
is_activeyes_no · ค่าเริ่มต้น: true- ค่าตัวอย่าง
yes - ตัวอย่าง Bubble expression
GuideHost's view_is_active (your yes/no custom state) - ตั้งค่าเป็นใช่ขณะมุมมองนี้เปิดอยู่ ตั้งค่าเป็นไม่เมื่อออกจากมุมมอง เพื่อให้การเล่นหรืองานปัจจุบันหยุด
disabledyes_no · ค่าเริ่มต้น: false- ค่าตัวอย่าง
no - ตัวอย่าง Bubble expression
GuideHost's is_busy (your yes/no custom state) - ปิดการใช้งานองค์ประกอบขณะแอปของคุณกำลังทำงานหรือการกระทำนี้ไม่พร้อมใช้งาน
ui_text_jsontext · ค่าเริ่มต้น: ""- ค่าตัวอย่าง
{} - ตัวอย่าง Bubble expression
App Settings' player_labels_json (supported keys only) - JSON ทางเลือกพร้อมปุ่มที่รองรับ เว้นว่างเพื่อใช้ข้อความในระบบ
saved_draft_idtext · ค่าเริ่มต้น: ""- ค่าตัวอย่าง
<returned draft_id> - ตัวอย่าง Bubble expression
Selected VoiceDraft's draft_id - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
bubble_upload_urltext · ค่าเริ่มต้น: ""- ค่าตัวอย่าง
https://your-app.bubbleapps.io/version-test/fileupload - ตัวอย่าง Bubble expression
App Settings' selected_bubble_upload_url - ที่อยู่อัปโหลดไฟล์ของแอป Bubble ของคุณ: /version-test/fileupload สำหรับ Development, /fileupload สำหรับ Live. การอัปโหลดนี้สร้างไฟล์สาธารณะ.
languagetext · ค่าเริ่มต้น: "auto"- ค่าตัวอย่าง
uk - ตัวอย่าง Bubble expression
Current User's preferred_language - ตั้งค่า language=auto ให้ตามอุปกรณ์หรือภาษาของเบราว์เซอร์ที่รองรับ ป้อนรหัสภาษาที่รองรับเพื่อเลือกอย่างชัดเจน
document_contexttext · ค่าเริ่มต้น: ""- ค่าตัวอย่าง
<current-user-id> - ตัวอย่าง Bubble expression
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 expression
Selected VoiceDraft's draft_id - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
Delete saved draft
draft_idtext · ค่าเริ่มต้น: —- ค่าตัวอย่าง
<returned draft_id> - ตัวอย่าง Bubble expression
Selected VoiceDraft's draft_id - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
Upload to Bubble
ไม่มีพารามิเตอร์การกระทำ
Cancel upload
ไม่มีพารามิเตอร์การกระทำ
Play preview
ไม่มีพารามิเตอร์การกระทำ
Pause preview
ไม่มีพารามิเตอร์การกระทำ
Stop preview
ไม่มีพารามิเตอร์การกระทำ
Seek preview
secondsnumber · ค่าเริ่มต้น: —- ค่าตัวอย่าง
12 - ตัวอย่าง Bubble expression
Selected Comment's seconds - ใช้ค่าจากบันทึกธุรกิจปัจจุบัน; ตรวจสอบความถูกต้องเทียบกับขีดจำกัดด้านล่าง
Set preview speed
ratenumber · ค่าเริ่มต้น: —- ค่าตัวอย่าง
1.5 - ตัวอย่าง Bubble expression
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.
คู่มือที่เกี่ยวข้อง
หากต้องการความช่วยเหลือ, บอกเราว่าคุณใช้ปลั๊กอินและอุปกรณ์ใด, การกระทำที่คุณลองทำและสิ่งที่เกิดขึ้น. ใช้ตัวอย่างโดยไม่มีข้อมูลส่วนบุคคล. อย่าแชร์คีย์หรือไฟล์ส่วนตัวของคุณ