Topik ini menjelaskan format pesan dan parameter untuk notifikasi callback perekaman cloud.
Mekanisme pengulangan callback perekaman cloud
Sistem akan mengirim ulang pesan callback jika kode kesalahan respons adalah 500 atau lebih besar, atau jika permintaan mengalami timeout.
Format pesan callback perekaman cloud
Pesan callback dikirim sebagai permintaan POST melalui HTTP atau HTTPS ke URL yang telah Anda konfigurasi.
Badan permintaan berada dalam format JSON.
Setelah menerima pesan callback, Anda harus mengembalikan respons berikut:
Header
HttpStatus
Body
Content-Type: application/json
200
{
"Code": 0,
"Msg": "Success"
}
Parameter callback perekaman cloud
Saat ini, notifikasi callback perekaman cloud hanya mendukung event yang terkait dengan perubahan status task.
Header pesan callback
Parameter | Nilai |
Content-Type | application/json |
ALI-LIVE-TIMESTAMP | Parameter ini hanya dikirimkan jika NotifyAuthKey valid. Contoh: 1748417138 |
ALI-LIVE-SIGNATURE | Parameter ini hanya dikirimkan jika NotifyAuthKey valid. Contoh: abcdefgxxx |
Petunjuk autentikasi: Jika Anda memberikan NotifyAuthKey yang valid saat membuat task perekaman cloud, sistem akan menyertakan field ALI-LIVE-TIMESTAMP dan ALI-LIVE-SIGNATURE dalam header permintaan HTTP notifikasi callback. Anda dapat menggunakan field-field tersebut untuk memverifikasi signature guna memastikan bahwa pesan callback sah dan aman.
ALI-LIVE-SIGNATURE dihasilkan sebagai berikut:
ALI-LIVE-SIGNATURE = MD5(MD5CONTENT)
MD5CONTENT = ALI-LIVE-TIMESTAMP + "|" + NotifyAuthKeySetelah menerima permintaan callback, ambil nilai
ALI-LIVE-TIMESTAMPdanALI-LIVE-SIGNATUREdari header permintaan.Buat string
MD5CONTENTdengan menggabungkanNotifyAuthKeyyang disimpan secara lokal dengan nilaiALI-LIVE-TIMESTAMPdari header permintaan, menggunakan karakter pipe (|) sebagai pemisah.Hitung hash MD5 dari string
MD5CONTENTuntuk mendapatkan signature.Bandingkan tanda tangan yang dihitung dengan
ALI-LIVE-SIGNATUREdari header permintaan.
Jika signature tidak cocok, permintaan berasal dari sumber yang tidak tepercaya. Anda harus menolak permintaan tersebut untuk menjaga keamanan sistem.
Isi pesan Callback
Parameter | Tipe | Deskripsi |
appId | string | ID aplikasi. |
channelId | string | ID saluran. |
taskId | string | ID tugas perekaman. |
eventType | string | Tipe event. Untuk informasi selengkapnya, lihat tabel Event types. |
callbackTs | integer | Waktu pengiriman callback. Ini merupakan stempel waktu UNIX dalam milidetik. Contoh: 1744774345595. |
payload | json string | Informasi lainnya. Untuk detail parameter, lihat tabel Other information. |
Tipe event (eventType)
Nilai | Deskripsi |
TaskCreated | Tugas telah dibuat. |
TaskStarting | Tugas sedang dimulai. |
TaskRunning | Tugas sedang berjalan. |
TaskRecovering | Tugas sedang pulih dari pengecualian. |
TaskStopping | Tugas sedang dihentikan. |
TaskStopped | Tugas telah dihentikan. |
TaskStartFailed | Tugas gagal dimulai. |
TaskUpdated | Tugas berhasil diperbarui. |
TaskUpdateFailed | Tugas gagal diperbarui. |
RecordStart | Perekaman dimulai. |
RecordFailed | Perekaman gagal pulih dari pengecualian dan mengalami timeout. |
RecordFileUploaded | File rekaman telah diunggah. |
Informasi lainnya (payload)
Parameter | Tipe | Deskripsi |
eventTs | integer | Waktu terjadinya event. Ini merupakan stempel waktu UNIX dalam milidetik. Contoh: 1744774345595. |
taskStatus | string | Status task. Untuk informasi selengkapnya, lihat tabel Task statuses. Catatan Parameter ini tidak dikembalikan ketika eventType adalah RecordFileUploaded. |
errorCode | string | Kode kesalahan. Untuk informasi selengkapnya, lihat tabel Errors. |
errorMessage | string | Pesan kesalahan. Untuk informasi selengkapnya, lihat tabel Errors. |
recordFileList | FileList | Daftar file rekaman. Untuk informasi selengkapnya tentang parameter, lihat tabel FileList. Catatan Parameter ini hanya dikembalikan ketika eventType adalah TaskRunning, TaskStopping, atau TaskStopped. |
recordFile | RecordFile | Informasi file rekaman. Parameter ini hanya dikembalikan ketika eventType adalah RecordFileUploaded. Untuk informasi selengkapnya tentang parameter, lihat tabel RecordFile. |
format | string | Format file rekaman. Parameter ini hanya dikembalikan ketika eventType adalah RecordFileUploaded. Nilai ini menunjukkan format file untuk callback ini. Nilai yang valid:
|
streamInfo | string | Parameter ini hanya dikembalikan ketika eventType adalah RecordStart. Parameter ini menunjukkan aliran yang berlangganan mana yang mulai direkam.
|
Daftar file rekaman (FileList)
Parameter | Tipe | Deskripsi |
mp3FileList | array<string> | Array nama file rekaman MP3. |
mp4FileList | array<string> | Array nama file rekaman MP4. |
hlsFileList | array<string> | Array nama file rekaman HLS. |
vodMediaList | array<VodFileInfo> | Array resource media VOD. Parameter ini tidak kosong hanya ketika merekam ke VOD. Saat merekam ke VOD, ini merupakan kumpulan file rekaman untuk setiap aliran yang berlangganan. Setiap item sesuai dengan satu aliran yang berlangganan. Untuk informasi selengkapnya tentang parameter VodFileInfo, lihat tabel VodFileInfo. |
Informasi file VOD (VodFileInfo)
Parameter | Tipe | Deskripsi |
stream | string | Aliran yang berlangganan.
|
mediaIds | array<string> | Array ID resource media yang dihasilkan selama perekaman. |
mergedIds | array<string> | Array ID resource media yang secara otomatis digabung setelah perekaman selesai. Parameter ini tidak kosong hanya jika Anda merekam ke VOD, mengaktifkan penggabungan otomatis, dan merekam lebih dari satu resource media. |
Informasi file rekaman (RecordFile)
Parameter | Tipe | Deskripsi |
sliceFile | string | Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat. |
hlsFile | string | Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat. |
mp4File | string | Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat. |
mp3File | string | Dikembalikan hanya jika format ini ditentukan dalam parameter NotifyFileUploadedFormat. |
Status task (taskStatus)
Status task tidak dipengaruhi oleh pembaruan yang berhasil atau gagal. Oleh karena itu, field `taskStatus` tidak mencakup status tersebut.
Status | Deskripsi |
CREATED | Dikembalikan ketika tugas dibuat. |
STARTING | Dikembalikan ketika tugas sedang dimulai. |
RUNNING | Dikembalikan ketika tugas sedang berjalan. |
RECOVERING | Dikembalikan ketika tugas sedang pulih dari pengecualian. |
STOPPING | Dikembalikan ketika tugas sedang dihentikan. |
STOPPED | Dikembalikan setelah tugas dihentikan. |
FAILED | Dikembalikan setelah tugas gagal dimulai. |
Kesalahan
Parameter ini hanya berisi nilai ketika `eventType` bernilai `TaskRecovering`, `TaskStartFailed`, atau `TaskUpdateFailed`. Untuk tipe event lainnya, parameter ini kosong.
Tipe event (eventType) | Kode kesalahan (errorCode) | Pesan kesalahan (errorMessage) | Deskripsi |
Task start failed (TaskStartFailed) | StartTaskError | Saluran sudah ditutup | Saluran ditutup. |
Error memulai tugas | Alasan lainnya. | ||
Recovery from an abnormal state (TaskRecovering) | RunTaskError | Tugas rms gagal | Modul pencampuran aliran berjalan tidak normal. |
Tugas rekaman gagal | Modul rekaman berjalan tidak normal. | ||
The task update failed. (TaskUpdateFailed) | UpdateTaskError | Error pembaruan tugas | Tugas gagal diperbarui. |
RecordFailed | RunTaskError | Timeout status pemulihan | Pemulihan dari pengecualian mengalami timeout. |
Contoh callback
Event TaskStopped:
{
"appId": "mytestappid",
"callbackTs": 1755504873034,
"channelId": "room1047",
"eventType": "TaskStopped",
"payload": "{\"eventTs\":1755504873014,\"taskStatus\":\"STOPPED\",\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"\",\"recordFileList\":{\"mp3FileList\":[],\"mp4FileList\":[\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.mp4\",\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.mp4\"],\"hlsFileList\":[\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.m3u8\",\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.m3u8\"],\"vodMediaList\":[]}}",
"taskId": "fe60a6e3-cecb-3fae-a8cf-3d2391f507a5"
}Event RecordFileUploaded:
{
"appId":"mytestappid",
"callbackTs":1764301584289,
"channelId":"room1406",
"eventType":"RecordFileUploaded",
"payload":"{\"eventTs\":1764301584265,\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"Single::userA::AV::C\",\"format\":\"MP4\",\"recordFile\":{\"sliceFile\":\"\",\"hlsFile\":\"\",\"mp3File\":\"\",\"mp4File\":\"mp4/07c2e845-630d-36a1-b2d1-3b546efdea90/mytestappid_room1406_userA_2025-11-28-11:46:03.mp4\"}}",
"taskId":"07c2e845-630d-36a1-b2d1-3b546efdea90"}