HappyOysterEngine mengonfigurasi host dan model Open Platform, memperbarui token Kunci API sementara Model Studio, dan membuat sesi Travel. Travel adalah objek sesi yang dikembalikan oleh createTravel(); sesi dimasuki dan dimulai hanya setelah memanggil travel.start(). Mendukung mode adventure, directing, dan acting.
HappyOysterEngine mengonfigurasi host Open Platform, memperbarui token kunci API sementara Model Studio, dan membuat sesi Travel.
Travel adalah objek sesi yang dikembalikan oleh createTravel(). Sesi dimasuki dan dimulai hanya setelah travel.start() dipanggil.
Terminologi Inti
Istilah | Arti | Catatan |
|---|---|---|
token | Token kunci API sementara Model Studio: saat memanggil layanan Model Studio dari lingkungan yang tidak tepercaya seperti browser atau aplikasi seluler, hasilkan Kunci API sementara melalui backend yang aman untuk menghindari paparan Kunci API permanen. SDK mengirimkan token ini ke Open Platform sebagai kredensial HTTP Bearer. | |
ticket | Kredensial Travel dunia HappyOyster: backend Anda memanggil API kredensial menggunakan autentikasi AK (header gateway) untuk mendapatkan kredensial Travel berumur pendek ( |
Ikhtisar
SDK menyediakan objek utama berikut:
HappyOysterEngine
API | Deskripsi |
|---|---|
| Membuat instance Engine. |
| Memperbarui token API-key sementara Model Studio yang digunakan oleh permintaan API Open Platform berikutnya. |
| Membuat sesi Travel. |
| Versi SDK saat ini. |
| Nama paket SDK, versi, dan saluran paket saat ini. |
Travel
API | Deskripsi |
|---|---|
| Memulai sesi Travel saat ini. |
| Berlangganan perubahan status sesi. |
| Berlangganan notifikasi URL frame pertama. |
| Berlangganan metadata sesi yang tersedia segera setelah enter-travel. |
| Berlangganan kesalahan runtime sesi. |
| Memeriksa apakah tindakan yang ditentukan saat ini dapat dipanggil. |
| Mendapatkan metadata sesi yang tersedia; mengembalikan |
| Mengirim perintah kontrol real-time. |
| Mengirim instruksi Directing atau konten prompt. |
| Menjeda sesi saat ini. |
| Melanjutkan sesi yang dijeda. |
| Memutar mundur sesi Directing ke waktu yang ditentukan. |
| Mengakhiri sesi saat ini dan melepaskan sumber dayanya. |
Ekspor Lainnya
Ekspor | Deskripsi |
|---|---|
| Objek konstanta kode kesalahan yang diekspor oleh SDK. |
| Memeriksa apakah kesalahan yang tidak diketahui merupakan kesalahan SDK standar. |
Tipe | Tipe publik seperti |
Contoh
HappyOysterEngine
HappyOysterEngine adalah titik masuk Web SDK. Ini mengonfigurasi host Open Platform, mengelola token kunci API sementara Model Studio yang digunakan oleh permintaan selanjutnya, dan membuat sesi Travel.
Travel aktif pada satu waktu. Akhiri Travel saat ini sebelum memulai sesi baru.Setelah token ditetapkan baik dalam konstruktor maupun melalui updateToken(), SDK secara internal mengambil konfigurasi Feature Gate. Hal ini memungkinkan platform untuk menonaktifkan SDK dari jarak jauh atau mewajibkan versi lama untuk melakukan peningkatan. Jika permintaan gagal, SDK tetap beroperasi dan tidak memblokir pengalaman normal.API | Deskripsi |
|---|---|
| Membuat instance Engine dengan host API dan model yang wajib diisi, serta token dan level log opsional. |
| Memperbarui token API-key sementara Model Studio yang digunakan oleh permintaan Open Platform berikutnya. |
| Membuat sesi Travel yang belum dimulai. |
new HappyOysterEngine
Membuat instance HappyOysterEngine.
Signature
Parameter
SDKConfig
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Host API Open Platform. Harus berupa host murni, seperti |
|
| Ya | Pengidentifikasi model Open Platform yang akan digunakan. Wajib diisi, tanpa nilai default. Tetap untuk Engine ini dan dibagikan oleh semua Travel-nya. |
|
| Tidak | Token kunci API sementara Model Studio yang ditetapkan selama konstruksi. Token ini juga dapat ditetapkan nanti dengan |
|
| Tidak | Level log SDK. Defaultnya adalah |
|
| Tidak | Batas waktu tunggu agar |
model ke pengidentifikasi model, seperti happyoyster-1.0-adventure, sebuah model Adventure. Gunakan pengidentifikasi model untuk lingkungan layanan target Anda. SDK tidak memilih model dari pengalaman mode atau menyimpulkannya dari tiket.
Engine memiliki APIHost + model yang tetap. Gunakan kembali untuk Travel berturut-turut yang menargetkan layanan dan model yang sama. Sebelum mengganti salah satu nilai, akhiri Travel yang aktif dan gunakan Engine yang dikonfigurasi untuk target baru. Buat dunia dan terbitkan tiketnya terhadap target layanan yang sama.
Return
Mengembalikan instance HappyOysterEngine.
Error
Jika config hilang, atau jika APIHost, model, token, logLevel, atau streamReadyTimeout memiliki tipe atau nilai yang tidak valid, sebuah SdkError dengan kode ErrorCode.INVALID_ARGUMENT (10010001) dilempar secara sinkron. Meneruskan URL lengkap, string kosong, atau nilai dengan jalur sebagai APIHost adalah tidak valid.
model wajib diisi dan harus berupa string yang tidak kosong setelah pemangkasan; null, nilai bukan string, dan string yang hanya berisi spasi tidak valid. Mengabaikannya atau meneruskan undefined juga menimbulkan error argumen; SDK tidak memiliki model default.
HappyOysterEngine.updateToken
Memperbarui token API-key sementara Model Studio yang digunakan oleh permintaan API Open Platform berikutnya.
Signature
Parameter
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Token API-key sementara Model Studio. Meneruskan string kosong akan menghapus token saat ini. |
Return
Tidak mengembalikan nilai apa pun.
Error
Jika token bukan string, sebuah SdkError dengan kode ErrorCode.INVALID_ARGUMENT (10010001) dilempar secara sinkron.
HappyOysterEngine.createTravel
Membuat instance sesi Travel tanpa memulainya.
Signature
Parameter
CreateTravelConfig
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Tiket yang digunakan untuk memulai Travel nanti. |
|
| Ya | Elemen |
|
| Tidak | Durasi pengalaman Adventure maksimum, dalam detik. Sesi Directing dan Acting mengabaikan bidang ini. Jika dihilangkan, server menerapkan nilai defaultnya. |
Return
Mengembalikan sesi Travel yang telah dibuat namun belum dimulai. Pemanggil kemudian harus menjalankan await travel.start() untuk memasuki sesi dan menunggu hingga video dapat diputar.
Setiap instance HappyOysterEngine hanya boleh memiliki satu Travel aktif pada satu waktu. Panggil await travel.end() sebelum membuat Travel lain.
Error
createTravel() melempar SdkError secara sinkron dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
|
|
| Travel sudah aktif; panggil |
travel.start().
Travel
Travel merepresentasikan sesi yang dibuat oleh HappyOysterEngine.createTravel(). Awalnya tidak aktif. Setelah travel.start() dipanggil, SDK memasuki sesi dan menunggu hingga video dapat diputar.
Travel mendukung memulai, menjeda, melanjutkan, memundurkan, dan mengakhiri sesi; mengirim kontrol dan prompt real-time; serta berlangganan perubahan status dan error runtime.
Metode
Metode | Deskripsi |
|---|---|
| Memulai sesi Travel saat ini. |
| Berlangganan perubahan status sesi. |
| Berlangganan notifikasi URL frame pertama. |
| Berlangganan metadata sesi yang tersedia segera setelah enter-travel. |
| Berlangganan kesalahan runtime sesi. |
| Memeriksa apakah tindakan yang ditentukan saat ini dapat dipanggil. |
| Mendapatkan metadata sesi yang tersedia; mengembalikan |
| Mengirim perintah kontrol real-time. |
| Mengirim instruksi Directing atau konten prompt. |
| Menjeda sesi saat ini. |
| Melanjutkan sesi yang dijeda. |
| Memutar mundur sesi saat ini ke waktu yang ditentukan. |
| Mengakhiri sesi saat ini dan melepaskan sumber dayanya. |
Status
Status | Deskripsi |
|---|---|
| Sesi belum dimulai. |
| Sesi sedang dimulai dan menunggu video dapat diputar. |
| Sesi sedang berjalan. |
| Sesi dijeda dan dapat dilanjutkan atau diputar mundur. |
| Sesi telah berakhir secara normal dan sumber dayanya telah dilepaskan. |
Event
Berlangganan event dengan travel.on(event, handler). Metode ini mengembalikan fungsi unsubscribe.
Peristiwa | Callback | Deskripsi |
|---|---|---|
|
| Status sesi berubah. |
|
| Dipancarkan selama |
|
| Dipancarkan setelah enter-travel kembali dan sebelum RTC terhubung. |
|
| Error runtime sesi. |
Travel.can
Memeriksa apakah suatu tindakan tersedia untuk status dan kapabilitas sesi saat ini.
Signature
Parameter
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Tindakan yang akan diperiksa: |
Return
Mengembalikan boolean. true berarti tindakan saat ini tersedia; false berarti status, mode, atau kapabilitas sesi saat ini tidak memenuhi prasyaratnya.
Ketersediaan
action | Ketersediaan |
|---|---|
| Travel masih |
|
|
|
|
|
|
|
|
|
|
| Travel belum ditutup. |
Error
Metode ini tidak melempar kesalahan bisnis. Tindakan yang tidak dikenal mengembalikan false.
Travel.start
Memulai sesi Travel saat ini.
Signature
Parameter
Tidak ada parameter.
Return
Mengembalikan Promise<StartTravelResult>, yang terselesaikan setelah sesi dimulai dan video dapat diputar.
Setelah enter-travel kembali, SDK memancarkan travelInfoReady sebelum menghubungkan RTC. Pelanggan yang terlambat dapat memanggil travel.getInfo(); ini mengembalikan null sebelum metadata tersedia. Jika respons menyertakan firstFrame yang tidak kosong, firstFrameGenerated tetap menyusul.
StartTravelResult
Bidang | Tipe | Deskripsi |
|---|---|---|
|
| ID sesi Travel saat ini. |
|
| Mode sesi: |
|
| Model pembuatan World; nilai umum adalah |
|
| URL gambar frame pertama; |
|
| Durasi pengalaman Adventure maksimum, dalam detik. |
|
| Rasio aspek Acting; |
Error
start() ditolak dan memancarkan event error dalam kasus berikut. Gunakan isSdkError(err) untuk memeriksa error serta membaca err.code dan err.message.
ErrorCode | Deskripsi |
|---|---|
| Fitur SDK dinonaktifkan ( |
| Tidak dapat memulai: status saat ini tidak mengizinkan, Open Platform belum dikonfigurasi, atau gagal memasuki sesi |
| Tidak dapat memulai: konfigurasi sesi yang dikembalikan oleh server tidak lengkap |
| Tidak dapat memulai: koneksi stream video gagal atau permintaan feature-flag SDK gagal |
| Tidak dapat memulai: batas waktu habis saat menunggu stream video (menggunakan nilai yang lebih besar antara |
| Tidak dapat memulai: batas waktu habis saat menunggu video dapat diputar (dikontrol oleh |
| Kesalahan parameter, sumber daya, atau server Open Platform |
Travel.on("statusChanged")
Berlangganan perubahan status sesi.
Signature
Parameter
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Callback yang dipanggil saat status berubah. |
Return
Mengembalikan fungsi berhenti berlangganan. TravelStatus adalah salah satu dari idle / prepare / running / paused / completed.
Error
Metode ini tidak melempar kesalahan bisnis.
Travel.on("firstFrameGenerated")
Berlangganan notifikasi URL frame pertama.
Signature
Parameter
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Callback yang dipanggil saat URL frame pertama tersedia. |
Return
Mengembalikan fungsi unsubscribe.
Perilaku
Hanya dipancarkan selama travel.start(). Setelah SDK memanggil enter-travel Open Platform dan menerima firstFrame yang tidak kosong, SDK segera memancarkan event tersebut—biasanya setelah statusChanged("prepare") tetapi sebelum start() terselesaikan dan video dapat diputar. Event tidak dipancarkan jika respons tidak berisi URL frame pertama.
Error
Metode ini tidak melempar kesalahan bisnis.
Travel.onError
Berlangganan kesalahan runtime sesi.
Signature
Parameter
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Callback yang dipanggil saat terjadi kesalahan runtime. |
Return
Mengembalikan fungsi unsubscribe. Gunakan isSdkError untuk mempersempit objek kesalahan menjadi SdkError.
Error
Metode ini tidak melempar kesalahan bisnis.
Travel.sendCommand
Mengirim perintah kontrol real-time.
Signature
Parameter
AdventureCommand
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Tidak | Arah pergerakan. Defaultnya adalah |
|
| Tidak | Rotasi tampilan. Defaultnya adalah |
|
| Tidak | Tindakan interaksi. Defaultnya adalah |
Referensi Perintah Kontrol
translation — Arah Pergerakan
Mendeskripsikan pergerakan karakter, mendukung delapan arah dan kombinasinya.
Nilai | Arah |
|---|---|
| Maju |
| Mundur |
| Kiri |
| Kanan |
| Maju-kiri |
| Maju-kanan |
| Mundur-kiri |
| Mundur-kanan |
| Diam |
rotation — Rotasi Tampilan
Mensimulasikan rotasi tampilan berbasis mouse dalam delapan arah.
Nilai | Arah |
|---|---|
| Atas |
| Bawah |
| Kiri |
| Kanan |
| Atas-kiri |
| Atas-kanan |
| Bawah-kiri |
| Bawah-kanan |
| None |
interaction — Aksi Interaksi
Nilai | Tindakan |
|---|---|
| Lompat |
| Serang |
| Membungkuk |
| Lari |
| None |
Return
Mengembalikan Promise<void> yang terselesaikan setelah perintah dikirimkan.
Error
sendCommand() ditolak dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
|
|
| Status atau mode sesi saat ini tidak mengizinkan perintah, atau perintah stream video gagal |
Travel.sendInstruct
Mengirim instruksi Directing atau konten prompt.
Signature
Parameter
InstructData
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Konten prompt yang akan dikirim. |
Return
Mengembalikan Promise<void> yang terselesaikan setelah Open Platform menerima dan memproses instruksi.
Error
sendInstruct() ditolak dan memancarkan event error dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
| Sesi belum dimulai |
| Gagal mengirim instruksi Directing |
| Kesalahan parameter, sumber daya, atau server Open Platform |
Travel.pause
Menjeda sesi saat ini.
Signature
Parameter
Tidak ada parameter.
Return
Mengembalikan Promise<void> yang terselesaikan setelah pemutaran video berhenti.
Error
pause() ditolak dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
| Status saat ini, mode sesi, atau kapabilitas sesi tidak mengizinkan jeda, atau permintaan jeda gagal |
| Waktu habis saat menunggu backend melaporkan stream video sebagai dijeda (15 detik) |
| Kesalahan parameter, sumber daya, atau server Open Platform |
Travel.resume
Melanjutkan sesi yang dijeda.
Signature
Parameter
Tidak ada parameter.
Return
Mengembalikan Promise<void> yang terselesaikan setelah video dapat diputar kembali.
Error
resume() ditolak dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
| Status saat ini, mode sesi, atau kapabilitas sesi tidak mengizinkan kelanjutan, atau permintaan lanjut gagal |
| Waktu habis saat menunggu video dapat diputar kembali (15 detik) |
| Kesalahan parameter, sumber daya, atau server Open Platform |
Travel.rewind
Memutar mundur sesi saat ini ke waktu yang ditentukan.
Signature
Parameter
RewindTravelParams
Bidang | Tipe | Wajib | Deskripsi |
|---|---|---|---|
|
| Ya | Waktu target dalam detik. Hanya kelipatan 4 yang didukung (misalnya, |
Return
Mengembalikan Promise<RewindTravelResult> yang terselesaikan setelah mundur selesai dan pemutaran dilanjutkan.
RewindTravelResult
Bidang | Tipe | Deskripsi |
|---|---|---|
|
| Waktu aktual dalam detik saat server melanjutkan pemutaran. |
Error
rewind() ditolak dan memancarkan event error dalam kasus berikut:
ErrorCode | Deskripsi |
|---|---|
| Sesi belum dimulai |
| Tidak dapat mundur: sesi harus dijeda terlebih dahulu dan pemutaran video dihentikan, atau permintaan mundur maupun penyambungan ulang RTC gagal |
| Waktu habis saat menunggu video dilanjutkan setelah pemutaran mundur (15 detik) |
| Kesalahan parameter, sumber daya, atau server Open Platform |
Travel.end
Mengakhiri sesi saat ini dan melepaskan sumber dayanya.
Signature
Parameter
Tidak ada parameter.
Return
Mengembalikan Promise<void> yang terselesaikan setelah pembersihan selesai.
Error
Kesalahan pembersihan tidak dilempar ke pemanggil; end() melakukan upaya terbaik untuk melepaskan sumber daya.
Penanganan Kesalahan
SDK mengekspos error runtime melalui penolakan Promise atau event error. Error merupakan objek SdkError; gunakan isSdkError(err) dan baca err.code serta err.message.
Error Open Platform yang dikenali dipetakan ke rentang 10000001–10000012, dan err.message berisi pesan platform. Lihat bagian Errors pada setiap API Travel untuk kode spesifik metode.
Referensi ErrorCode
Rentang kode error:
100000xx: Kesalahan Open Platform yang dipetakan1001xxxx: Error klien Engine1002xxxx: Error klien Travel
code | name | Deskripsi |
|---|---|---|
|
| Parameter permintaan tidak valid (dikembalikan oleh Open Platform) |
|
| Sumber daya tidak ditemukan (Travel hilang, bukan milik sendiri, berada di workspace lain, atau artefak belum siap) |
|
| World tidak ada, telah dihapus, atau bukan milik pengembang saat ini |
|
| Error sistem |
|
| Ticket tidak valid atau kedaluwarsa |
|
| Tiket telah digunakan (kredensial sekali pakai) |
|
| World belum siap dan tidak dapat dimasuki |
|
| Alokasi sumber daya inferensi gagal (kapasitas tidak mencukupi, kegagalan pembuatan stream, kegagalan inisialisasi sesi, dll.) |
|
| API ini hanya menerima API Key utama (API Key sementara tidak didukung) |
|
| Input ditolak oleh moderasi konten |
|
| Gambar input melanggar kebijakan hak cipta atau KI |
|
| Permintaan bertentangan dengan status sumber daya saat ini |
|
| Validasi argumen klien SDK gagal (tidak dipetakan dari Open Platform) |
|
| Fitur SDK dinonaktifkan |
|
| Travel sudah aktif |
|
| Stream video terputus selama pemutaran |
|
| Permintaan mulai sesi gagal |
|
| Konfigurasi stream video hilang saat startup |
|
| Koneksi stream video gagal |
|
| Waktu habis saat menunggu stream video |
|
| Waktu habis saat menunggu video dapat diputar |
|
| Permintaan jeda gagal |
|
| Waktu habis saat menunggu video dijeda |
|
| Permintaan lanjut gagal |
|
| Waktu habis saat menunggu video dilanjutkan |
|
| Permintaan mundur cepat gagal |
|
| Waktu habis saat menunggu video dilanjutkan setelah pemutaran mundur |
|
| Gagal mengirim perintah kontrol real-time |
|
| Gagal mengirim instruksi Directing |
|
| Permintaan akhir sesi gagal |
Ekspor Lainnya
Ekspor runtime
Ekspor | Tipe | Deskripsi |
|---|---|---|
|
| Klien SDK yang mengonfigurasi Open Platform, memperbarui token, dan membuat sesi Travel. |
|
| Versi SDK saat ini. |
|
| Nama paket SDK, versi, dan saluran paket saat ini. |
|
| Objek konstanta kode kesalahan yang diekspor oleh SDK. |
|
| Memeriksa apakah kesalahan yang tidak diketahui merupakan kesalahan SDK standar. |
ErrorCode
Objek konstanta kode error yang diekspor oleh SDK. Bandingkan dengan SdkError.code alih-alih menyebarkan literal numerik di seluruh kode aplikasi.
isSdkError
Memeriksa apakah error yang tidak dikenal merupakan error SDK standar. Ketika mengembalikan true, TypeScript mempersempit error menjadi SdkError, sehingga memungkinkan akses aman ke code dan message.
Tipe Publik
Tipe berikut diekspor dari titik masuk paket dan dapat diimpor langsung dari @happy-oyster/js-sdk. Tipe ini hanya ada pada waktu kompilasi TypeScript dan tidak menghasilkan kode runtime.
Tipe | Deskripsi |
|---|---|
| Tipe parameter konstruktor |
| Level log SDK: |
| Metadata paket SDK: |
| Saluran paket SDK: |
| Tipe parameter |
| Metadata sesi |
| Metadata sesi yang digunakan oleh |
| Rasio aspek Acting: |
| Kontrak sesi publik |
| Status sesi SDK lokal: |
| Nama tindakan yang didukung |
| Tipe parameter |
| Tipe parameter |
| Tipe parameter |
| Data |
| Bentuk kesalahan SDK yang berisi |
| Tipe kesalahan yang menggabungkan |
| Union dari semua nilai kode kesalahan dalam objek |