All Products
Search
Document Center

ApsaraVideo Live:CreateEventSub

Last Updated:Jul 15, 2026

Membuat callback untuk berlangganan pesan saluran.

Deskripsi operasi

Membuat callback untuk berlangganan pesan saluran. Misalnya, saat membuat callback, Anda dapat mengonfigurasi parameter seperti URL callback dan tipe event.

Batas QPS

Batas QPS per pengguna tunggal untuk operasi ini adalah 100 panggilan per detik. Jika batas terlampaui, panggilan API akan dibatasi (throttled), yang dapat memengaruhi bisnis Anda. Panggil operasi ini dengan tepat.

Coba sekarang

Coba API ini di OpenAPI Explorer tanpa perlu penandatanganan manual. Panggilan yang berhasil akan secara otomatis menghasilkan contoh kode SDK sesuai dengan parameter Anda. Unduh kode tersebut dengan kredensial bawaan yang aman untuk penggunaan lokal.

Test

RAM authorization

Tabel berikut menjelaskan otorisasi yang diperlukan untuk memanggil API ini. Anda dapat menentukannya dalam kebijakan Resource Access Management (RAM). Kolom pada tabel dijelaskan sebagai berikut:

  • Action: Aksi yang dapat digunakan dalam elemen Action pada pernyataan kebijakan izin RAM untuk memberikan izin guna melakukan operasi tersebut.

  • API: API yang dapat Anda panggil untuk melakukan aksi tersebut.

  • Access level: Tingkat akses yang telah ditentukan untuk setiap API. Nilai yang valid: create, list, get, update, dan delete.

  • Resource type: Jenis resource yang mendukung otorisasi untuk melakukan aksi tersebut. Ini menunjukkan apakah aksi tersebut mendukung izin tingkat resource. Resource yang ditentukan harus kompatibel dengan aksi tersebut. Jika tidak, kebijakan tersebut tidak akan berlaku.

    • Untuk API dengan izin tingkat resource, jenis resource yang diperlukan ditandai dengan tanda bintang (*). Tentukan Nama Sumber Daya Alibaba Cloud (ARN) yang sesuai dalam elemen Resource pada kebijakan.

    • Untuk API tanpa izin tingkat resource, ditampilkan sebagai All Resources. Gunakan tanda bintang (*) dalam elemen Resource pada kebijakan.

  • Condition key: Kunci kondisi yang didefinisikan oleh layanan. Kunci ini memungkinkan kontrol granular, berlaku baik hanya untuk aksi maupun untuk aksi yang terkait dengan resource tertentu. Selain kunci kondisi spesifik layanan, Alibaba Cloud menyediakan serangkaian common condition keys yang berlaku di semua layanan yang didukung RAM.

  • Dependent action: Aksi dependen yang diperlukan untuk menjalankan aksi tersebut. Untuk menyelesaikan aksi tersebut, pengguna RAM atau role RAM harus memiliki izin untuk melakukan semua aksi dependen.

Action

Access level

Resource type

Condition key

Dependent action

live:CreateEventSub

none

*Rtc.

acs:live::{#accountId}:rtc/{#AppId}

None None

Parameter permintaan

Parameter

Type

Required

Description

Example

AppId

string

Yes

ID aplikasi yang akan dilanggan. Anda dapat melihat ID aplikasi dengan menavigasi ke ApsaraVideo Live > Live+ > ApsaraVideo Real-time Communication > Manajemen Aplikasi. Jika tidak ada aplikasi, buat satu dengan mengklik [Buat Aplikasi].

9qb1****

ChannelId

string

No

ID saluran yang akan dilanggan. Anda dapat memanggil operasi ListEventSub untuk mengkueri ID saluran yang dilanggan.

Catatan
  • Jika parameter Users.N tidak kosong, parameter ini wajib diisi.

  • Jika ChannelId diatur ke * atau dibiarkan kosong, semua saluran dilanggan. Setiap AppId hanya mengizinkan satu langganan semua saluran.

  • Setiap AppId mengizinkan maksimum 20 langganan secara bersamaan.

123333

Users

array

No

Pengguna yang pesannya ingin Anda langgan. Jika parameter ini kosong, semua pengguna di saluran (termasuk streamer dan penonton) dilanggan. Format:

Users.1=****
Users.2=****
......

string

No

ID pengguna.

user1

Events

array

Yes

Event langganan.

string

Yes

Event langganan. Nilai valid:

  • ChannelEvent: event saluran.

  • UserEvent: event pengguna dalam saluran.

ChannelEvent

CallbackUrl

string

Yes

URL callback. Untuk konten callback, lihat contoh konten callback di bawah ini.

http://****.com/callback

Callback

Contoh berikut menunjukkan konten yang dikembalikan ke pengguna melalui CallbackUrl yang ditentukan:

Request:

POST /callbackURL

Body
application/json

{
    "MsgId": "ID Pesan",
    "MsgTimestamp": 12312324, // Tampilan Unix saat pesan dikirim
    "SubscribeID": "ID Langganan",
    "AppId":"",     // AppId yang menghasilkan pesan ini 
    "ChannelID":"", // Saluran yang menghasilkan pesan ini
    "Contents": [
      {
        "Event": "UserEvent",// Event langganan: event pengguna dalam saluran
        "UserEvent": {
          "UserId": "80331631628*****",    // ID Pengguna
          "EventTag": "Publish",    // Event, termasuk Join, Leave, Publish, Unpublish, Roleupdate
          "SessionId": "0dr15rrnhkz0jnvz6o8sxo0*****", // SessionID yang menghasilkan event ini
          "Timestamp": 1609854786,    // Tampilan Unix saat event terjadi
          "Reason": 1, // Alasan bergabung atau keluar. Hanya tersedia untuk event Join.
          "Role": 1, //  Tipe peran: streamer atau penonton
          "CurrentMedias":"1,2,3"// Tipe stream: stream yang diterbitkan oleh pengguna
        }
      },
      {
        "Event": "ChannelEvent",// Event langganan: event saluran
        "ChannelEvent": {
          "ChannelId": "88888****",
          "EventTag": "Open",   // Event saluran, termasuk Open dan Close
          "Timestamp": 1609854530 // Tampilan Unix saat event terjadi
        }
      }
   ]
}

Response 
HTTP STATUS 200

UserEvent

ParameterTipeWajibDeskripsi
UserIdstringYaID pengguna.
SessionIdstringYaID sesi pengguna.
EventTagstringYaTipe event. Nilai valid:
Join: bergabung ke saluran.
Leave: keluar dari saluran.
PublishVideo: mulai menerbitkan stream video.
PublishAudio: mulai menerbitkan stream audio.
PublishScreen: mulai berbagi layar.
UnpublishVideo: berhenti menerbitkan stream video.
UnpublishAudio: berhenti menerbitkan stream audio.
UnpublishScreen: berhenti berbagi layar.
Roleupdate: mengganti peran.
TimestampnumberYaTampilan saat event terjadi.
ReasonintegerYaAlasan bergabung atau keluar (hanya tersedia untuk event Join). Nilai valid:
1: bergabung atau keluar normal.
2: bergabung kembali (pengguna sudah ada di saluran dan bergabung lagi).
3: relay lintas saluran.
4: keluar karena timeout.
5: pengguna memulai sesi baru dan sesi saat ini dipaksa offline.
6: dikeluarkan.
7: saluran dibubarkan.
RoleintegerYaTipe peran. Nilai valid:
1: streamer.
2: penonton.
CurrentMediasintegerYaTipe stream. Nilai valid:
1: audio.
2: video.
3: berbagi layar.

ChannelEvent

ParameterTipeWajibDeskripsi
EventTagstringYaTipe event. Nilai valid:
Open: rapat dimulai.
Close: rapat berakhir.
TimestampnumberYaTampilan saat event terjadi.

Autentikasi callback

Fitur autentikasi callback event diaktifkan secara default. Logika autentikasinya adalah sebagai berikut:

  • Saat ApsaraVideo Live memulai permintaan callback, header permintaan HTTP(S) berisi bidang Ali-Rtc-Timestamp dan Ali-Rtc-Signature agar server penerima pesan callback dapat melakukan autentikasi tanda tangan. Nilai Ali-Rtc-Timestamp dihitung sebagai berikut: Ali-Rtc-Signature=MD5SUM(MD5CONTENT), di mana MD5CONTENT=Nama domain callback|Nilai Ali-Rtc-Timestamp|Kunci Autentikasi. Nama domain callback adalah nama domain yang dikonfigurasi di URL callback, dan Kunci Autentikasi adalah AppKey yang dihasilkan saat AppId dibuat.

  • Saat server penerima pesan callback menerima pesan callback, server tersebut menggabungkan nama domain callback, nilai Ali-Rtc-Timestamp, dan Kunci Autentikasi, menghitung nilai MD5 untuk memperoleh string terenkripsi, lalu membandingkan string terenkripsi yang dihitung dengan nilai bidang Ali-Rtc-Signature di header permintaan HTTP(S) yang dimulai oleh ApsaraVideo Real-time Communication. Jika tidak cocok, permintaan tidak valid.

Percobaan ulang exception callback

Saat Alibaba Cloud memulai permintaan callback, callback dianggap berhasil hanya ketika server bisnis Anda merespons dengan kode status HTTP 200. Jika callback gagal, Alibaba Cloud akan mencoba ulang 7 kali dengan interval 1 detik, 2 detik, 5 detik, 10 detik, 1 menit, 2 menit, dan 5 menit. Setiap percobaan ulang menghasilkan catatan callback yang sesuai.

Penanganan exception

Klien yang telah bergabung ke saluran atau sedang menerbitkan stream mempertahankan mekanisme heartbeat keep-alive dengan server Alibaba Cloud. Ketika heartbeat keep-alive gagal karena klien kehilangan konektivitas jaringan atau aplikasi ditutup secara abnormal (kegagalan ditentukan jika tidak ada heartbeat yang diterima dari klien selama 90 detik), server menentukan bahwa klien telah timeout dan keluar secara abnormal, serta menghasilkan callback event untuk pengguna yang berhenti menerbitkan stream dan keluar dari saluran.

Elemen respons

Element

Type

Description

Example

object

Skema Respons.

RequestId

string

ID permintaan.

760bad53276431c499e30dc36f6b****

SubscribeId

string

ID langganan yang dibuat.

ad53276431c****

Contoh

Respons sukses

JSONformat

{
  "RequestId": "760bad53276431c499e30dc36f6b****",
  "SubscribeId": "ad53276431c****"
}

Kode kesalahan

HTTP status code

Error code

Error message

Description

400 InputInvalid %s. Parameter input tidak valid.
400 QuotaLimitError %s. Setiap AppId mengizinkan maksimum 20 langganan bersamaan, dan hanya satu langganan semua saluran yang diizinkan.
400 ErrorInvalidCallBackUrl %s. CallBackURL tidak valid. Periksa nilai dan coba lagi.
500 ServerError %s. Terjadi kesalahan tidak diketahui. Coba lagi nanti atau ajukan tiket.
403 NoAuth %s. Anda tidak memiliki izin yang diperlukan.
404 ResourceNotExist %s. Sumber daya yang diminta tidak ada. Periksa permintaan dan coba lagi.

Lihat Error Codes untuk daftar lengkap.

Catatan rilis

Lihat Release Notes untuk daftar lengkap.